鳩丸ぐろっさり (用語集)

bakera.jp > 鳩丸ぐろっさり (用語集) > DNS Rebinding

用語「DNS Rebinding」について

DNS Rebinding (でぃーえぬえす りばいんでぃんぐ)

話題 : セキュリティ

DNS の情報を再読込させることで「同ドメインだが IP アドレスが違う」という状況を作り出し、same originポリシーを破ろうとする攻撃手法。攻撃者は有効なドメイン名をもち、その DNS サーバを管理している必要があります。

たとえば、攻撃者が bakera.jp ドメインを管理していて、218.219.246.132 という IP アドレスを持っていたとします。そして、以下のようにしておきます。

誰かが http://bakera.jp/ にアクセスすると、スクリプトが動作します。一定時間経つと、スクリプトは http://bakera.jp/ のデータを取得して、別のサーバにデータを送信します。http://bakera.jp/ 上のスクリプトから http://bakera.jp/ のデータを参照していますから、これは same originポリシーに抵触することはなく、普通に動作します。

このとき、途中で DNS のデータを書き換えられたらどうなるでしょうか。上記の動作に、以下のような動作が加わったとします。

最初のアクセスの瞬間は、bakera.jp → 218.219.246.132 でした。ここで 218.219.246.132 に置かれた悪意あるスクリプトが動作します。そしてしばらくすると、スクリプトは http://bakera.jp/ の内容を他のサーバに送出しようとします。

TTL が異常に短く設定されているためキャッシュは無効となり、再び bakera.jp の名前解決が行われます。そしてこの時は bakera.jp → 127.0.0.1 になっていますから、スクリプトは 127.0.0.1 の内容にアクセスすることになります。しかしドメインはあくまで bakera.jp ですから、same originポリシーに抵触することはありません。

このようにして、通常外部からは読み取れない内容を読み出すのが DNS Rebinding の手法です。

もっとも、実際にはプログラム側は短すぎる TTL を無視する (TTL の値以上の時間キャッシュする) ようになっていることが多く、その場合はこのような攻撃は通用しません。プログラムのこのような動作は DNS Pinning と呼ばれます。

最近の日記

関わった本など