情報セキュリティにおける脅威であるバッファオーバフローの説明として, 適切なものはどれか。
平成26年度 秋期 ITパスポート試験 問59
この問題の解説と、これまでの解答の記録です。
問 59
不正解ア
特定のサーバに大量の接続要求を送り続けてサービスを妨害するのは DoS 攻撃 (サービス妨害攻撃) の説明です。多数の機器から一斉に行えば DDoS 攻撃と呼ばれます。狙いは「資源を使い切らせて正規利用者を締め出す」ことで、メモリ領域をはみ出させて制御を奪うバッファオーバフローとは仕組みが異なります。
不正解イ
特定のメールアドレスに大量の電子メールを送りつけ、メールボックスを満杯にして新着メールを受信できなくするのはメールボム (メール爆弾) の説明です。これも一種のサービス妨害ですが、攻撃対象はメールボックスの容量であり、プログラム内部のバッファをあふれさせるバッファオーバフローとは別物です。
不正解ウ
ネットワークを流れるパスワードを盗み見て不正アクセスに悪用するのは盗聴 (スニッフィング) とそれに基づくなりすましの説明です。通信路上の情報を横取りする行為であり、プログラムのメモリ領域を破壊する攻撃ではありません。対策も暗号化 (TLS など) であり、バッファオーバフロー対策の入力長チェックとは異なります。
- エ
正解 正解はエ。バッファオーバフロー (buffer overflow) とは、プログラムがあらかじめ確保しておいた入力用のメモリ領域 (バッファ) の大きさを超えるデータを送り込み、はみ出した分で隣接するメモリ領域を上書きしてしまう攻撃です。上書きされる場所には関数の戻り先アドレスなど、プログラムの制御に関わるデータが置かれていることがあり、攻撃者はそこを書き換えることでプログラムを異常終了させたり、送り込んだ任意のコードを実行させたりできます。エの「プログラムが用意している入力用のデータ領域を超えるサイズのデータを入力することで、想定外の動作をさせる」は、この仕組みをそのまま述べた記述であり適切です。対策は、入力データの長さを必ず検査する (境界チェック)、安全な関数を使う、セキュリティパッチを適用する、といったプログラム側の防御になります。
- バッファオーバフロー = プログラムが確保した入力用メモリ領域 (バッファ) の容量を超えるデータを与え、隣接領域を上書きして異常動作や任意コード実行を引き起こす攻撃。対策は入力長の境界チェックと脆弱性修正パッチの適用。
- 似た「大量に送りつける」系の脅威との区別: 接続要求を大量送信 = DoS / DDoS 攻撃、電子メールを大量送信 = メールボム、通信を盗み見る = 盗聴 (スニッフィング)。攻撃対象がプログラム内部のメモリか、サーバ資源か、通信路かで見分ける。