テクノロジ系セキュリティ
バッファオーバーフローとは?
読み方: ばっふぁおーばーふろー
1行定義
プログラムのメモリ領域(バッファ)の境界を超えてデータを書き込み、任意コードを実行させる古典的な脆弱性攻撃
詳細解説
バッファオーバーフローとは、プログラムがデータを一時保存するためのメモリ領域(バッファ)に、あらかじめ確保した領域を超えるデータを書き込んだときに隣接するメモリ領域を上書きしてしまう脆弱性、またはそれを悪用した攻撃手法です。攻撃者は意図的に大量のデータを入力することで、スタックやヒープのリターンアドレスを上書きし、任意の悪意あるコードを実行させることができます。この攻撃が成功すると、システム権限の奪取・任意コード実行・サービス停止(クラッシュ)などが発生します。C言語やC++など、メモリ管理を手動で行う言語で特に発生しやすく、gets()・strcpy()などの安全でない関数が主な原因です。対策として、境界チェックを行う安全な関数の使用、スタックカナリア(改ざん検知)、ASLR(アドレスランダム化)、DEP(データ実行防止)が使われます。IT試験では「バッファとは何か」「スタックオーバーフローとの関係」「C言語脆弱性の代表例」が頻出です。
ITパスポートでの出題ポイント
- 1バッファ境界を超えた書き込みで隣接メモリを上書きする仕組み
- 2リターンアドレス上書きによる任意コード実行の危険性
- 3C言語系の安全でない関数(gets・strcpy等)が主な原因
- 4スタックカナリア・ASLR・DEPの防御機構
関連用語
シラバス 6.5 準拠 / 最終更新: 2026-05-26