DNSキャッシュポイズニング(キャッシュ汚染)攻撃がどうして起こるか、その原理を解説する。
フルリゾルバ(いわゆるキャッシュDNSサーバー)は、名前解決の効率を上げるためにキャッシュを持っている。キャッシュには名前解決中に得られた情報を蓄積し、次回以降の名前解決時に有効に使用する。クエリ名/クエリタイプに一致する情報がキャッシュにあり、有効である場合、フルリゾルバはキャッシュにある情報をスタブリゾルバに返す。
ここで、フルリゾルバのキャッシュに何らかの偽情報を注入することができると、エンドユーザーのクエリに対して偽情報を答えさせることができ、エンドユーザーを偽のWebサイトに誘導したり、エンドユーザーのメールなどを盗んだりすることができる。この行為を「DNSキャッシュポイズニング(キャッシュ汚染)攻撃」と呼ぶ。一度キャッシュへの注入が成功するとキャッシュでの生存期間、誘導が成功する。生存期間の長い情報を注入することで、汚染を長く継続することができる。図1にDNSへの攻撃を示すが、このうちの「B:注入」がそれであり、(3)(5)(7)を偽装するものである。
RFC 3833「Threat Analysis of the Domain Name System (DNS)」はDNSへの攻撃を分類しているが、そのうちの「2.2 ID Guessing and Query Prediction」と「2.3 Name Chaining」がDNSキャッシュポイズニング(キャッシュ汚染)攻撃である。後者の例としては、1997年に行われたInterNICに対するDNSキャッシュポイズニング(キャッシュ汚染)攻撃がある。しかし、現在の実装では対策されており、影響を受けない。前者は権威DNSサーバーへのクエリとレスポンスを推定し、権威DNSサーバーのレスポンスを偽造して本物のレスポンスよりも先に注入するものである。
なお、RFC 3833の和訳はJPRSの以下の場所にある。必要に応じて参照していただきたい。
Copyright © ITmedia, Inc. All Rights Reserved.