基本情報技術者 2019年 春期 午前(科目A) 問45
問題文
ファジングで得られるセキュリティ上の効果はどれか。
選択肢
ア:ソフトウェアの脆弱性を自動的に修正できる。
イ:ソフトウェアの脆弱性を検出できる。(正解)
ウ:複数のログデータを相関分析し、不正アクセスを検知できる。
エ:利用者IDを統合的に管理し、統一したパスワードポリシを適用できる。
🔒 解説は解答すると表示されます
ファジングによる脆弱性検出【午前解説】
正解の理由
ファジング(fuzzing)は入力をランダムまたは準ランダムに生成してプログラムに与え、異常終了や例外、メモリ破損などの振る舞いを検出するテスト技法です。これによりソフトウェアの未発見の脆弱性(バッファオーバーフロー、NULL参照、未初期化メモリ参照など)を見つけられるため、「ソフトウェアの脆弱性を検出できる(イ)」が正解になります。
解法ステップ
- 問題文のキー語「ファジング」を特定する。
- ファジングの定義を思い出す:異常入力を投入して挙動を観察するテスト技法。
- 各選択肢を定義と照合する:検出する/修正する/ログ分析/ID管理のどれかを判定。
- 自動修正やログ相関、ID統合はいずれもファジングの機能ではないため除外する。
- 残った「脆弱性を検出」が正解であることを確認する。
選択肢別の誤答解説
- ア: ソフトウェアの脆弱性を自動的に修正できる。
誤り。ファジングは脆弱性を「検出」する手法であり、修正はソースコード解析や開発者の対応が必要です。 - イ: ソフトウェアの脆弱性を検出できる。
正解。異常入力でクラッシュや例外を引き起こし、脆弱性の存在を明らかにできます。 - ウ: 複数のログデータを相関分析し、不正アクセスを検知できる。
誤り。これはSIEMやログ相関分析の機能であり、ファジングとは別領域です。 - エ: 利用者IDを統合的に管理し、統一したパスワードポリシを適用できる。
誤り。これはID管理(IDM/IAM)の機能であり、ファジングの目的や手法とは無関係です。
よくある誤解
- ファジングで脆弱性を「自動修正」できると誤解する人が多いですが、発見はできても修正は手作業や別ツールによる解析が必要です。
- ファジングはあらゆる脆弱性を網羅するわけではなく、特にビジネスロジックの論理不備や認証設計ミスは見つけにくい点を見落としがちです。
- ログの相関分析やID管理機能をファジングと混同すると間違えるケースがありますが、これらは別分野(SIEMやIDM)です。
補足コラム
- ファジングの種類:
- ダム(dumb)ファズ:単純なランダム入力を投げる。実装が簡単だが効率は低い。
- スマート(smart)ファズ:プロトコルやフォーマットを理解して生成する。効率が高い。
- カバレッジ指向ファズ(AFLやlibFuzzerなど):実行カバレッジを元に入力を進化させることで深いバグを発見しやすい。
- 実運用のポイント:インストルメンテーション(コードカバレッジ取得)やASANなどのメモリサニタイザを併用すると不具合検出率が大幅に向上します。CIに組み込んで継続的に回す運用が推奨されます。
- 限界:論理エラーや認可・認証の設計ミスは自動生成入力だけでは見つけにくいため、ペネトレーションテストやコードレビューと併用することが重要です。
FAQ
Q1: ファジングだけでセキュリティ対策は十分ですか?
A1: いいえ。バッファオーバーフロー等の低レイヤ脆弱性には有効ですが、ビジネスロジックや認証系の問題は別手法が必要です。
A1: いいえ。バッファオーバーフロー等の低レイヤ脆弱性には有効ですが、ビジネスロジックや認証系の問題は別手法が必要です。
Q2: ファジングで検出した問題はどのように分類すればよいですか?
A2: クラッシュの再現手順、スタックトレース、入力ケース、影響範囲(リモート実行可否)を記録し、深刻度を評価します。サニタイザの出力が診断に役立ちます。
A2: クラッシュの再現手順、スタックトレース、入力ケース、影響範囲(リモート実行可否)を記録し、深刻度を評価します。サニタイザの出力が診断に役立ちます。
Q3: 初心者が始めるときの推奨ツールは?
A3: 小さなプログラムならlibFuzzerやAFL、バイナリ向けにはhonggfuzzを試すと学習効果が高いです。サニタイザ(ASAN等)併用を推奨します。
A3: 小さなプログラムならlibFuzzerやAFL、バイナリ向けにはhonggfuzzを試すと学習効果が高いです。サニタイザ(ASAN等)併用を推奨します。
関連キーワード: ファジング、Fuzzing、ソフトウェア脆弱性、セキュリティテスト、脆弱性検出、カバレッジ指向、サニタイザ、AFL、libFuzzer、ホワイトボックステスト

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

