テクノロジ
バッファオーバーフローとは
英語名:Buffer Overflow
ひとことで言うと:確保されたメモリ領域の境界を越えてデータを書き込み、隣接領域を破壊する脆弱性・攻撃。
意味をわかりやすく解説
CやC++などで入力長を十分確認せず固定長バッファへコピーすると、境界外のメモリを書き換える可能性があります。クラッシュだけでなく、制御情報を書き換えて任意コード実行につながる場合があります。
対策には境界チェック、安全なライブラリ・言語の利用、スタック保護、ASLR、DEP/NXなどがあります。複数の防御層を組み合わせることが重要です。
具体例
16バイトの配列へ長さを確認せず100バイトの入力をコピーすると、配列外のメモリを破壊する可能性があります。
似た用語との違い
SQLインジェクション
バッファオーバーフローはメモリ境界の問題、SQLインジェクションは入力をSQL命令として解釈させる問題です。
基本情報技術者試験の試験ポイント
原因は境界チェック不足。攻撃結果として任意コード実行につながる場合がある点と、防御技術を押さえます。
CHECK QUESTION
ASLRはバッファオーバーフローそのものをなくす技術ですか。
答えを見る
いいえ。メモリ配置をランダム化して攻撃を困難にする緩和策であり、境界外書込みの原因自体を修正するものではありません。
この説明は分かりやすかったですか?
基本情報技術者試験を勉強中ですか?
この用語を含む重要用語を、単語帳や4択テストで学習できます。