バッファオーバフローとは?
バッファオーバフローとは、確保した領域を超える長さのデータを書き込ませ、隣接するメモリを破壊する脆弱性。スタック上の戻り番地を書き換えて攻撃者の用意したコードへ制御を移せば、任意コード実行に至る。境界検査を持たないC/C++で起きやすい。
応用情報技術者試験の過去問では1回出題されています。
ばっふぁおーばふろー
バッファオーバフローの意味
確保した領域を超える長さのデータを書き込ませ、隣接するメモリを破壊する脆弱性。スタック上の戻り番地を書き換えて攻撃者の用意したコードへ制御を移せば、任意コード実行に至る。境界検査を持たないC/C++で起きやすい。
バッファオーバフローの具体例
入力長を検査しない文字列コピー関数へ長大なデータを渡し、戻り番地を上書きする。対策は境界検査のあるAPIの使用に加え、スタック保護、配置をランダム化するASLR、データ領域の実行を禁止するDEPなどの緩和機構。
バッファオーバフローは試験でどう引っ掛けられる?
実行環境の緩和機構は攻撃の成立確率を下げるだけで、根本対策は入力長の検査を実装すること。またヒープ領域でも発生するため「スタック特有の問題」と決めつけないこと。
バッファオーバフローと関連する用語
バッファオーバフローが出た過去問
問題を引き起こす可能性があるデータを大量に入力し、そのときの応答や挙動を監視することによって、ソフトウェアの脆弱性を検出するテスト手法はどれか。
正解:ファジング
要点:ファジングは異常データの大量入力で脆弱性を検出する
ファジングは、極端な値や想定外の形式のデータを大量に自動生成してソフトウェアに入力し、異常終了や予期しない挙動が起きないかを監視することで脆弱性を見つけるテスト手法である。仕様書やソースコードがなくても実施でき、バッファオーバフローなど入力処理の欠陥の発見に有効である。
出典:令和5年度 秋期 応用情報技術者試験 午前 問46(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。