基本情報技術者 テクノロジ系

バッファオーバーフロー攻撃の説明として適切なものはどれか。

1. ネットワーク帯域を超える通信を行う攻撃
2. プログラムのバッファ領域を超えるデータを書き込んで誤動作させる攻撃 ✓ 正解
3. データベースを不正操作する攻撃
4. パスワードを盗む攻撃

📝 解説

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

フラッシュカード形式で テクノロジ系 を練習する

🎴 練習する

テクノロジ系 の問題一覧・解説を見る →