バッファオーバーフロー攻撃とは|攻撃手法とその対策方法


バッファオーバーフロー攻撃とはサイバー攻撃手法の一種であり、大量の不正なデータを送りつけることでシステムに誤作動を起こすというものです。

具体的にどのような攻撃手法なのか、また攻撃を受けた際に考えられる被害、それを防ぐためにはどう対策すればよいのかなどを解説していきます。

バッファオーバーフロー攻撃とは?

バッファオーバーフロー攻撃とは、コンピュータの情報を一時保管する領域「バッファ」が処理できる量を超えるデータを送信し、誤作動を起こさせるサイバー攻撃です。バッファオーバーランともいいます。

許容量を超えたデータがあふれ出すことで、プログラムが意図しない動作をするため、悪意あるプログラムを実行させることも可能になります。

バッファオーバーフロー攻撃の手法

バッファオーバーフロー攻撃の手法には、いくつか種類があります。それぞれどのようなものかを解説します。専門的な内容となります。

ヒープを標的とする攻撃

ヒープとは、動的に確保・解放をくり返すことが可能なメモリ領域です。ヒープの未使用ブロックの管理には「双方向リスト」というデータ構造が用いられています。

双方向リストの操作でヒープを管理するライブラリではアルゴリズムが無防備となり、メモリ上の任意の場所に任意の値を書き込みできる場合があります。それを悪用した攻撃方法です。

スタックを標的とする攻撃

スタックとは、ローカル変数や関数の引数、リターンアドレスなどを格納するメモリ領域です。これを標的とした攻撃が、もっとも実行しやすいといわれます。

スタックにはC言語/C++言語の関数のローカル変数と、その関数からのリターンアドレスが置かれます。このローカル変数の領域があふれると、リターンアドレスの書き変えが発生してしまうのです。

これを悪用し、コンピュータを操作するための悪意あるデータを送り込んであふれさせ、リターンアドレスの辻褄が合うよう書き換え、制御を奪い取ります。

その他の攻撃手法

上記のほかには、静的領域を標的とした攻撃、またファイルのオーナー権限で動作するUNIX環境下などでおこなわれる攻撃もあります。

バッファオーバーフロー攻撃を受けた場合の被害

では、バッファオーバーフロー攻撃を受けてしまうと、どのような被害が想定されるのでしょうか。解説します。

サイト改ざん、データ盗聴

悪意あるプログラムがサーバーに侵入することで、サイトの管理者権限の奪取も可能になります。これにより、サイト改ざんや、管理者しか閲覧できないデータの盗聴、破壊なども実行できてしまいます。

2000年に24もの省庁で続発した中央省庁の連続サイト改ざん事件は、このバッファオーバーフロー攻撃による管理権限奪取が原因とされています。

サイト改ざんがおこなわれると、そのサイトを閲覧したユーザーがウイルス感染したり、不正な操作をさせられたりする可能性があります。

DoS・DDoS攻撃の踏み台にされる

バッファオーバーフロー攻撃によりマルウェア感染させられ、遠隔操作でDoS・DDoS攻撃をおこなう加害者として踏み台にされるケースもあります。

DoS・DDoS攻撃とは、対象サイトへ大量のアクセスを送ることで、通信量を増大させアクセス不可能にする、サービスを停止させる攻撃です。

パソコンが企業や個人事業主のものである場合、攻撃元を辿られたときに実行犯と判断されてしまい、社会的な信用失墜にもつながりかねません。

security_2236

DDos攻撃とは|Dos攻撃との違いや目的・対策について解説

バッファオーバーフロー攻撃の対策方法

つづいて、バッファオーバーフロー攻撃を受けないために、どのような対策をおこなえばよいのか、ユーザー側と開発側との対策方法を解説します。

ユーザー側が実施すべき対策

ユーザー側が実施すべき対策としては、使用しているアプリケーションや、セキュリティソフトの更新を欠かさずおこない、最新の状態にしておくことが一番重要です。

また、よりセキュリティを高めるために、サイバー攻撃・不正アクセスがおこなわれていないか、監視ツールを導入し、普段から監視しておくと万が一の際もすぐに対処できます。

開発側が実施すべき対策

バッファオーバーフロー攻撃を防ぐには、開発側の対応も不可欠です。たとえば、書き込み上限バイト・境界をチェックするライブラリ関数の利用、入力データの長さチェックをおこなうなどが有効です。

また、C言語/C++言語で記述されたプログラムで発生しやすいため、比較的安全といわれるJavaなどの言語に置き換える、といった対応を実施するとよいでしょう。

まとめ

バッファオーバーフロー攻撃は、このようにユーザー側だけでなく開発側の記述などの問題によっても発生してしまいます。対策をまとめると以下のとおりです。

ユーザー側がすべき対策
  • 使用するアプリの修正パッチ適用
  • セキュリティソフトを最新バージョンアップデート
  • ネットワークを監視する
開発側がすべき対策
  • コード記述のチェック(静的検査)
  • Javaへの記述置き換え

ユーザー、開発の双方がこれらに注意すれば、バッファオーバーフロー攻撃を防止、もしくは被害を最小限に抑えることも可能です。できることから実践してみてください。

無料資料ダウンロード

自分でできるサイトのセキュリティチェック14選

自分でできるサイトのセキュリティチェック14選

無料ダウンロード

ホームページ健康診断

ホームページ健康診断

無料ダウンロード




RELATED