基本情報技術者
テクノロジ系
バッファオーバーフロー攻撃の説明として適切なものはどれか。
1.
ネットワーク帯域を超える通信を行う攻撃
2.
プログラムのバッファ領域を超えるデータを書き込んで誤動作させる攻撃
✓ 正解
3.
データベースを不正操作する攻撃
4.
パスワードを盗む攻撃
📝 解説
バッファオーバーフロー攻撃はプログラムが用意した固定サイズのバッファ(一時的なデータ記憶領域)に、その容量を超えるデータを意図的に書き込むことで、隣接するメモリ領域(スタックの戻りアドレス等)を上書きしてプログラムの実行フローを乗っ取る攻撃手法です。コップに水を大量に注ぐと溢れて周囲を濡らすように、バッファに入りきらないデータが隣接するメモリ領域を「溢れて」汚染します。攻撃者はこの溢れた部分に悪意のあるコード(シェルコード)のアドレスを書き込み、プログラムに意図しないコードを実行させます。C/C++で書かれたプログラムはscanf・strcpyなどの境界チェックなし関数を使うと脆弱性が生じやすいです。対策としてはスタックカナリア(書き換え検知)・ASLR(アドレス空間配置のランダム化)・DEP/NX(データ実行防止)・安全な文字列関数(strncpy等)の使用が有効です。誤答の「ネットワーク帯域を超える通信」はDoS/DDoS攻撃、「データベースを不正操作する攻撃」はSQLインジェクション、「パスワードを盗む攻撃」はフィッシング・キーロガーの説明です。「バッファオーバーフロー=バッファ超過書き込みでメモリを汚染・実行フロー乗っ取り」と覚えましょう!