情報セキュリティ・暗号・認証 重要度:★★出題: AM・PM
DNSキャッシュポイズニング
でぃーえぬえすきゃっしゅぽいずにんぐ / DNS Cache Poisoning
キャッシュDNSサーバーに偽のドメイン名前解決情報を注入し、利用者を偽サイト(フィッシング等)へ誘導する攻撃手法。
3行速習ポイント
- DNS問い合わせ時の「トランザクションID」と「送信元ポート番号」を予測して偽の応答パケットを送り込む
- 対策としてソースポートランダマイゼーション(送信元ポートのランダム化)が必須
- 根本的解決策はDNSSEC(公開鍵暗号によるDNSレコードの電子署名検証)の導入
図解
図DNSキャッシュポイズニングの攻撃成立メカニズムと3大防御策プロセス・手順フロー
再帰問合せの悪用 ➔ 偽応答パケット先行注入 ➔ ポートランダム化&DNSSECによる防御▶ 進行順序:1. Step 1: 問合せ誘発➔2. Step 2: 偽応答攻撃➔3. Step 3: 推測困難化➔4. Step 4: 電子署名検証
11. キャッシュDNSへの名前解決要求と反復問合せ
Step 1: 問合せ誘発攻撃者が非キャッシュドメインを照会し権威DNSへの問合せを誘発
攻撃者が標的のキャッシュDNSサーバへランダムなサブドメイン等の名前解決を要求し、キャッシュDNSが外部の権威DNSサーバへUDPで反復問合せを送信するタイミングを作り出す。
22. 偽DNS応答パケットの大量先行注入(毒入れ)
Step 2: 偽応答攻撃正規の権威DNS応答より先に16bitトランザクションIDとポートを当てに行く
権威DNSから本物の応答が返るまでのわずかな隙に、攻撃者が権威DNSを装って「トランザクションID」と「宛先UDPポート番号」を総当たり予測した偽IP応答パケットを大量に送りつける。
33. 緩和策:ソースポートランダマイゼーション & 再帰制限
Step 3: 推測困難化送信元UDPポートを動的ランダム化し推測空間を約6.5万×6.5万へ拡大
16ビットのトランザクションID(65,536通り)だけでなく問合せの送信元UDPポート番号も毎回ランダムに変更することで、攻撃者の推測成功確率を天文学的に引き下げ毒入れを困難化する。
44. 根本対策:DNSSEC(DNS Security Extensions)検証
Step 4: 電子署名検証権威DNSの秘密鍵による電子署名(RRSIG)を公開鍵(DNSKEY)で検証
ゾーン情報に付与されたデジタル署名をキャッシュDNS側で暗号学的に検証することで、万一IDとポート番号が一致した偽応答が届いても改ざん・偽装を100%検知して破棄する。
💡 午前・午後の最重要知識:①外部からの再帰的な名前解決要求を拒否する(オープンリゾルバ化防止)、②送信元UDPポート番号をランダム化する、③DNSSECで応答の電子署名を検証する。
概要と本質
攻撃者は標的のキャッシュDNSサーバーが権威DNSサーバーへ反復問い合わせを行っている隙に、正規の権威サーバーよりも早く偽のIPアドレスを記載した応答パケットを大量送信します。問い合わせが一致するとキャッシュサーバーが偽情報を記憶し、配下のユーザー全員が偽サーバーへ接続させられます。
重要ポイント・コア概念
- カミンスキー型攻撃(存在しないサブドメインを次々問い合わせて高速毒入れ)
- トランザクションID(16ビット)の推測困難化
- ソースポートランダマイゼーション(UDPポートを動的ランダム選択し推測空間を拡大)
- DNSSEC(DNS Security Extensions):ゾーンデータへの電子署名付与と改ざん検知
応用情報(午前択一・午後長文記述)での出題・得点戦略
午前選択問題で「DNSキャッシュポイズニングの対策として適切なものはどれか」➔「送信元ポート番号のランダム化」または「DNSSEC」を選ぶ問題が極めて頻出です。午後ネットワーク問題の記述でも出題されます。
