Edgio Blog

バッファオーバーフロー攻撃とは?攻撃の仕組みと対策について解説

Webアプリケーションをビジネスに利用している企業にとって、注意すべきリスクのひとつが「バッファオーバーフロー攻撃」です。この記事ではバッファオーバーフロー攻撃の基本的な仕組みや攻撃の種類、開発者や利用者がとるべき対策について説明します。

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

バッファーオーバーフロー攻撃とは、Webアプリケーションなどを運用するサーバーなどに対する攻撃の一種です。攻撃を受けたコンピューターは攻撃者に乗っ取られて第三者への攻撃に利用されたり、管理者しかアクセスできない機密情報を外部に引き出されたりする可能性があります。

バッファオーバーフロー攻撃の仕組み

そもそもバッファとは、コンピュータ上でデータを一時的に格納する領域のことです。バッファオーバーフロー攻撃はこのバッファ領域の上限を超える大量のデータを送りつけることで、データを強制的に書き換えてしまいます。

バッファオーバーフロー攻撃の影響

バッファオーバーフロー攻撃を受けた場合、(攻撃されたコンピュータを運用する)企業は以下のような影響を受けます。

①サイバー攻撃の踏み台にされる

ひとつめのケースは、自社のコンピュータを第三者へのサイバー攻撃に利用されるというものです。攻撃者はバッファオーバーフロー攻撃によってマルウェアを侵入させ、そのコンピュータを通して他のコンピュータにDos攻撃やDDos攻撃を行います。

バッファオーバーフロー攻撃を受けた企業は自社のコンピュータを犯罪に利用される(サイバー攻撃の加害者側になる)ことで、社会的信用を失う可能性もあります。

②管理者権限を乗っ取られる

ふたつめのケースは、攻撃を受けたコンピュータの管理者権限を奪われるというものです。バッファオーバーフロー攻撃で侵入したマルウェアが管理者権限を乗っ取り、コンピュータ内にある機密情報を引き出す、もしくは破壊する可能性があります。

もし顧客の個人情報やクレジットカード情報などが漏洩すれば、やはりその企業は社会的信用を失い、場合によっては莫大な損賠賠償責任を負ってしまう可能性もあるでしょう。

DoS攻撃との違い

攻撃対象に大量のデータを送りつけるという点で、バッファオーバーフロー攻撃とよく似ているのがDoS攻撃です。しかし両者は目的が違います。

DoS攻撃の目的は、主にサービスの妨害(外部から負荷をかけることでコンピュータをダウンさせる)です。これに対しバッファオーバーフロー攻撃は、コンピュータの内部で不正なプログラムを実行させることを目的としています。

第三者への攻撃や顧客の情報漏洩につながるという点で、後者の方がより危険性が高い攻撃といえるでしょう。

バッファオーバーフロー攻撃のパターン

バッファオーバーフロー攻撃は大きく分けて3つのパターンに分けられます。

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

メモリのスタック領域(ローカル変数やメソッドの情報を格納する領域)を対象とする攻撃です。具体的には、大量のデータを送り込むことでデータ領域とリターンアドレスが記載されている部分を書き換え、不正なプログラムの実行を図ります。

②ヒープを標的とする攻撃

メモリのヒープ領域(計算や操作のためのデータを格納する領域)を対象とする攻撃です。こちらはヒープ領域の許容量を超えたデータを送り込むことでプログラムを異常終了させたり、メモリ管理機能に細工をして不正なプログラムを実行させます。

③静的領域を標的とする攻撃

静的領域と呼ばれる、グローバル関数(複数の関数で使用される変数)などを保存するメモリ領域を対象とする攻撃です。次に実行するコードの場所が書かれたジャンプアドレスを書き換え、不正なプログラムを実行させようとします。

バッファオーバーフロー攻撃への対策は?

バッファオーバーフロー攻撃は、大量のデータが入力された場合を想定していない、もしくはデータが許容量を超えているかどうかを確認する仕組みがないといった「開発時の不備による脆弱性」が原因です。

とはいえ現実問題として、こうした脆弱性を抱えたままのWebアプリケーションは少なくありません。そこで開発者はもちろん、利用者の側でもバッファオーバーフロー攻撃への対策が必要となります。

開発者が行う対策

Webアプリケーションの開発者が取るべき対策としては、以下のようなものが挙げられます。

  • プログラム言語やOSを最新の状態に保つ
  • 常にデータの許容量さを意識して開発を行う
  • バッファオーバーフローを発生させる可能性のある関数に注意する
  • バッファオーバーフローを探知するランタイムライブラリを使用する
  • 念入りなデバッグを行う
  • 不正侵入検知・防御システム(IDS /IPS)を導入する

利用者が行う対策

Webアプリケーションの利用者側が取るべき対策は、主に以下の3点です。

  • WebアプリケーションやOSを最新の状態に保つ
  • セキュリティソフトを導入する
  • 不正侵入検知・防御システム(IDS /IPS)を導入する

まとめ

バッファオーバーフロー攻撃を受けると、被害は自社内だけにとどまりません。顧客や他の企業を巻き込むことで、結果として社会的信用を失ったり、深刻な賠償責任が問われる可能性もあります。Webアプリケーションを利用する企業は、開発者また利用者として必要な対策を講じることで、リスクから自社を守りましょう。