例の話

自分の整理のために、、
#だけど攻撃手法の公開だとか、exploitの公開だとかは触れない!
Ps=\frac{D*R*W}{N*P*I}
R: 攻撃対象1台あたりに送るFakeパケット数(pps)
D: クエリリゾルバ(通常1)
W: 攻撃可能な時間(RTT)
N: 攻撃対象レコードを保持するコンテンツサーバ数
P: Query portの数(maximum around 64000, but often 1)
I: QureyID (maximum 16bit = 65536)
こんなんだった #draft-hubert-dns-anti-spoofing-00.txt

今回のは

  • 毎回聞きに行く(TTLが0相当)
    • NXDOMAINのresponseとの戦い(RTT)
  • Addtionalで毒いれ
    • Authorityだけでも実在するNSに向けれる

そこでこの話
http://slashdot.jp/security/comments.pl?sid=411740&cid=1390632
この話仮定が多すぎるんだけど、理由は違えどそんなに大きく外れていないと思う

・本物のサーバとの競争に勝つ可能性が 1/2 と仮定すると、防御方法が
ポート固定で ID だけがランダムの場合には16ビットなので
65536 * 2 / 2 となり平均65536回の試行で汚染に成功する

1/2はなんでかわからないけど、AuthrityNSがラウンドロビンされるされないとか
クエリ投げて観測すると結構ひとつに投げ続けるのでまぁそんなもんかな?

・ポートは16ビットあるが、さすがに全部は使えないので半分の
32768種類を使うとすると、攻撃に必要な時間は
6.5 * 32768 ≒ 213000秒 ≒ 平均2.5日になる。

これの理由もよくわからないけどBirthday Paradoxとして半分とかにすればこんなもん?

結果同じ攻撃で

  • TTL 0相当に見えてポートが固定だと数秒で成功できちゃうこと
  • ポートをランダム化しても数日オーダーだということ

OpenRecurseは問題外で、Recurseできる範囲の制限もISP程度大きいエリアだとだれかがISP CacheにForwarder向けていたりするOpenCacheがあると制限されたISP Cacheにも毒いれできちゃったりするかもしれない。末端に近いところにcacheを分散させてエリアを制限すると、上記は少しリスク分散できるがBOTからの攻撃があると本物とRTTで負けるかもしれない。
そもそもブラウザ経由なら存在しないドメインを大量にクエリさせることは容易なので広範囲に毒入れ可能かもしれない。
さて、、