バッファオーバーフローは、プログラムやプロセスがバッファ(一時データ記憶領域)に、想定されている以上に大量のデータを格納しようとした場合に発生する。バッファは有限の量のデータを収めるように作成されるため、それを超える情報(どこかに格納されなければならない)は隣のバッファにあふれてしまい、そこに保持されている有効なデータを破壊したり、上書きしたりする。こうしたバッファオーバーフローは、プログラミングエラーのせいで偶然発生する場合もあるが、データの完全性に対するセキュリティ攻撃で広く悪用されるようになっている。バッファオーバーフロー攻撃では、バッファの許容量を超えるデータに含まれるコードが特定のアクションを引き起こす。それによって標的のコンピュータに新しい命令を送信し、例えばユーザーのファイルを破壊したり、データを改ざんしたり、機密情報を漏らしたりといったことが行われる。バッファオーバーフロー攻撃が登場したのは、C言語がその枠組みを提供し、お粗末なプログラミング手法が脆弱性を招いたためと言われている。
2000年7月に、Microsoft OutlookとOutlook Expressにバッファオーバーフローの脆弱性が発見された。プログラムの欠陥により、攻撃者が電子メールを送るだけでターゲットコンピュータの完全性を侵害することが可能になっていた。この攻撃を受けたユーザーは、一般的な電子メールウイルスの場合とは異なり、添付ファイルを開かないことで自分を守ることはできなかった。実際、ユーザーがメッセージを開かなくてもこの攻撃は成立した。両プログラムのメッセージヘッダメカニズムの欠陥を突いて、攻撃者は不正に長いデータをヘッダに含むメッセージを送信。これによりオーバーフローを発生させ、受信者のコンピュータ上で任意の種類のコードを実行できた。受信者がメッセージをサーバからダウンロードすると、直ちにヘッダ処理が行われ、攻撃プロセスが開始されることになるため、この種のバッファオーバーフロー攻撃は非常に防ぎにくかった。その後、Microsoftはこの脆弱性を解消するパッチを作成した。
Copyright © ITmedia, Inc. All Rights Reserved.