Bernhard Müller が "IMPROVED DNS SPOOFING USING NODE RE-DELEGATION" という論文を発表し、カミンスキーが新たなキャッシュポイズニング手法を編み出したと称して間違った解説を行い世界を騒がせたのが 2008 年のことでした。
そしてキャッシュポイズニング対策として DNS キャッシュサーバのポートランダマイズが世界的に進められる中で、残存する未対策のサーバを発見し注意喚起するために私が Port Randomize Tester を作ったのは 10 年前 (2011年) でした。
また 2008 年当時は DNS 権威サーバの 8 割がオープンリゾルバという状況でしたが、JPCERT/CC などの活動でその対策も進み、その数は急激に減少しました。
しかし、このたびふと思い立ち、海外の某所から送信元を詐称したクエリを投げて調査を行ってみたところ想像以上に多くの隠れオープンリゾルバが残存していることがわかりました。調査対象としたのは私が管理している DNS コンテンツサーバ (この e-ontap.com や reflection.co.jp など 20 ドメインほどの権威サーバ) へのクエリログから抽出した約 100,000 の IP アドレスです。
スキャン総数は 104,979 アドレス、普通のオープンリゾルバ (A) が 4511 (4.3%)、詐称クエリに対してオープンなリゾルバ (B) が 8103 (7.7%)、B + (A - (A ∩ B)) は 10739 (10.2%) でした。
そしてその約 1 万件のうち PTR レコードが JP を指しているものが以下のように見つかりました。
JP全体: 707 AD.JP: 255 NE.JP: 177 CO.JP: 93 AC.JP: 44 OR.JP: 33 GO.JP: 13 ED.JP: 2 LG.JP: 1 PREF.*.JP: 1
想像以上の数でした。大手 ISP (AD.JP/NE.JP) や政府機関 (GO.JP) などにも隠れオープンリゾルバが多く見つかったため、これらのデータは JPCERT/CC へ 3/8 に報告してあります。
JPCERT/CC さんにも注意喚起を頑張って欲しいのですが、私も何か出来ないかと思って、調査に使ったスキャナを Port Randomize Tester から呼び出して訪問者のリゾルバがオープンかどうかを検査をできる機能を付け加えました。Port Randomize Tester あらため Hidden Open Resolver Tester を訪問すると連携している海外某所のサーバからブラウザが使用しているリゾルバへ詐称クエリが飛び、そのリゾルバからのクエリを Hidden Open Resolver Tester で動いている権威サーバが検出して判定を行う仕組みです。
このページを訪問して、もし "openresolver for the world" だとか "openresolver against spoofing" とか赤い字で表示されたら、そのサーバはオープンでありリフレクション攻撃の踏み台やキャッシュポイズニングあるいは実装の脆弱性を突く攻撃に弱い可能性がありますから、当該サーバのネットワーク管理者に改善を促してください。
どういう詐称パケットを投げているかは詳しく説明しないほうがよいと思いますが、多くは Ingress Filtering つまり自組織の IP アドレスが外部から流入しない (また自組織の IP アドレス以外が外部に出ていかない) ようにするという基本的な対策が境界ルータ(あるいはファイアウォール)で行われていないことが原因です。適切に対策されていれば詐称パケットはそもそも組織のネットワークへ流入しません。DNS キャッシュサーバでのアクセス制限だけでは不十分だということを理解しましょう。
p.s: 対策状況の観察をこちらでつづけています。2021/9/7 リスト公開しました。
NGK2022S の LT で使用した解説スライドを公開しました。
Copyright by T.Suzuki