ITパスポート 2014年 秋期 問59
問題文
情報セキュリティにおける脅威であるバッファオーバフローの説明として、適切なものはどれか。
選択肢
ア:特定のサーバに大量の接続要求を送り続けて、サーバが他の接続要求を受け付けることを妨害する。
イ:特定のメールアドレスに大量の電子メールを送り、利用者のメールボックスを満杯にすることで新たな電子メールを受信できなくする。
ウ:ネットワークを流れるパスワードを盗聴し、それを利用して不正にアクセスする。
エ:プログラムが用意している入力用のデータ領域を超えるサイズのデータを入力することで、想定外の動作をさせる。(正解)
🔒 解説は解答すると表示されます
バッファオーバフローの説明【ITパスポート 解説】
正解の理由
バッファオーバフローは「プログラムが用意している入力用のデータ領域を超えるサイズのデータを入力することで、想定外の動作をさせる」現象です。ここでいう「バッファ」はデータを一時的にためる領域を指します。選択肢の中では、この説明が正確にバッファ(領域)の境界を超える入力によって発生する問題を表しているため、正しいのは エ です。
バッファをこぼれる水の入ったコップに例えると、入れすぎると周りが濡れてしまい予期せぬ問題が起きるように、領域を超えたデータは隣接するメモリを書き換え、プログラムのクラッシュや不正な命令実行(攻撃)につながります。
解法ステップ
- 問題文のキーワードを探す:「入力用のデータ領域を超える」「想定外の動作」など、境界を超えることを示す表現を確認する。
- 選択肢を分類する:大量の接続やメール、盗聴などはそれぞれ別の攻撃(DoS、スパム、盗聴)であると分ける。
- バッファ(領域)やオーバーフロー(溢れる)という語の意味を照らし合わせ、境界超過の説明がある選択肢を選ぶ。
- 境界を超えることでメモリに影響を与え、想定外の動作(クラッシュや任意コード実行)につながる点が言及されている選択肢が正解であると判断する。
選択肢別の誤答解説
-
ア: 「特定のサーバに大量の接続要求を送り続けて、サーバが他の接続要求を受け付けることを妨害する。」
- これは DoS(Denial of Service:サービス拒否)攻撃の説明です。バッファの境界超過ではなく、サービスを使えなくする攻撃なので誤りです。
-
イ: 「特定のメールアドレスに大量の電子メールを送り、利用者のメールボックスを満杯にすることで新たな電子メールを受信できなくする。」
- これはメールボックスをあふれさせるスパム/資源枯渇の手法で、DoSに近い一種ですが、バッファの境界超過(メモリ破壊)ではありません。よって誤りです。
-
ウ: 「ネットワークを流れるパスワードを盗聴し、それを利用して不正にアクセスする。」
- これは盗聴(スニッフィング: sniffing)や盗用の説明です。情報の傍受による不正利用であり、バッファオーバフローとは別のカテゴリです。誤りです。
-
エ: 「プログラムが用意している入力用のデータ領域を超えるサイズのデータを入力することで、想定外の動作をさせる。」
- これはバッファオーバフローの本質を表しています。領域(バッファ)の境界超過によってメモリの別領域を書き換え、クラッシュや不正コード実行を引き起こすため正解です。
よくある誤解
- バッファオーバフロー=単なるクラッシュだけだと思う
- 実際には単なるクラッシュにとどまらず、攻撃者が悪意あるコードを実行する足がかりにすることができます(特に古いソフトでは深刻)。
- 「大量に送る」系の説明と混同する
- 「大量に送る」ことでサービスを止めるのは DoS に当たります。バッファオーバフローは「サイズが想定外に大きいデータを送る」点で似ているように見えますが、目的と影響が異なります(メモリ破壊 vs サービス不能)。
補足コラム
バッファオーバフロー対策の代表例(用語説明付き)
- 境界チェック(バッファの長さを事前に確認すること)
- 安全な言語の利用(例:JavaやC#は自動で範囲チェックを行う場合が多い)
- ASLR(Address Space Layout Randomization:アドレス空間配置のランダム化)— 攻撃で狙うメモリ位置を分かりにくくする技術
- DEP / NX(Data Execution Prevention / No-eXecute:データ領域の実行を防ぐ)— データ領域に置かれたコードの実行を防ぐ
- スタックカナリア(stack canary:スタック破壊を検知するための保護値)
日常的な例え:コップ(バッファ)に水(データ)を注ぐ際、コップを超えて注ぐと周りが濡れて物が壊れる。境界を守るのが安全設計です。
FAQ
Q1: バッファオーバフローは今でも起きますか?
A1: はい。新しい対策がある一方で、古いソフトウェアや不適切な実装ではまだ起きます。セキュリティパッチが重要です。
A1: はい。新しい対策がある一方で、古いソフトウェアや不適切な実装ではまだ起きます。セキュリティパッチが重要です。
Q2: 一般ユーザーができる対策は?
A2: OSやソフトを最新に保つ、怪しい入力(不審な添付ファイルや不明な入力フォーム)を避ける、信頼できるソフトだけ使う、などが有効です。
A2: OSやソフトを最新に保つ、怪しい入力(不審な添付ファイルや不明な入力フォーム)を避ける、信頼できるソフトだけ使う、などが有効です。
Q3: バッファオーバフローはどうやって見つける?
A3: 開発者は静的解析ツールや動的解析、テストケースで境界を超える入力を試し、クラッシュや異常を検出します。
A3: 開発者は静的解析ツールや動的解析、テストケースで境界を超える入力を試し、クラッシュや異常を検出します。
関連キーワード: バッファオーバーフロー、バッファ、メモリ安全、境界チェック、スタックカナリア、ASLR、DEP、DoS、スニッフィング、脆弱性、入力検証

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

