ITパスポート試験
ばっふぁおーばーふろーこうげき
バッファオーバーフロー攻撃
Buffer Overflow
決められた入れ物の大きさを超えるデータを送り込み、隣の領域を壊して乗っ取る攻撃です。
詳しい説明
1. 定義
バッファオーバーフロー攻撃とは、プログラムが用意した入れ物(バッファ)の大きさを超えるデータを送り込み、隣り合ったメモリの領域を書き換えることで、プログラムを意図しない動きにさせる攻撃のことです。
2. 仕組みと内訳
プログラムは、受け取ったデータを置くために一定の大きさの領域を用意します。受け取る側が大きさを確かめないと、はみ出した分がその先の領域に書き込まれます。
はみ出した先には、次に実行する場所を覚えている情報などが置かれていることがあります。攻撃する側は、そこを自分が送り込んだ命令の場所に書き換えます。結果として、そのプログラムの権限で任意の命令を実行させられます。
対策は3つの層で考えます。
- 作るときの対策: 受け取るデータの長さを必ず確かめる。長さを確かめる関数を使う
- 動かす環境の対策: データを置く領域では命令を実行させない設定にする。領域の配置を毎回変えて狙いを付けにくくする
- 運用の対策: 修正プログラムを適用し、既に知られた欠陥を残さない
試験で問われること
ITパスポート試験
- 許容量を超えるデータを送り込む攻撃であることを理解する
- 入力の長さを確かめることが対策になると理解する
- 修正プログラムの適用が有効であることを理解する
- 攻撃手法を扱う設問で、SQL インジェクションやディレクトリトラバーサルと並べて出ます。入力の長さを確かめないことが原因だと説明できるかが要点です。
最終更新日: 2026/09/23