合同会社小村ソフト
第 4 章

2008 の教訓 — 並行問い合わせと短期対策

2008 年に広く知られた問題を、高レベルの攻撃発想と短期対策として理解する。

前章のおさらい: 第 3 章では、応答受理条件(question / ID / address / port)と race window、そして entropy と試行回数の関係を整理しました。本章ではその枠組みを使い、2008 年に広く知られた問題が「なぜ深刻だったのか」、そして当時から続く短期対策の組み合わせを確認します。

注意: この章は歴史的な教訓と防御の意図を扱います。実環境への攻撃手順や exploit code は扱いません。

2008 年の何が深刻だったのか

DNS cache poisoning 自体は昔から知られていましたが、2008 年に Dan Kaminsky が広く周知した問題(一般に「Kaminsky 攻撃」と呼ばれます)は、「uncached な問い合わせ機会を何度も作られると、短い race window でも attempts を増やせる」という点を鮮明にしました。詳しい攻撃手順はここでは扱いませんが、高レベルの発想としては「random123.example.com のような存在しないラベルへ次々に問い合わせを発生させ、その都度 fresh miss を作って race を多数回試行する」というものです。

1 回の race が短くても、fresh miss が何度も作られれば累積の危険は上がります。RFC 5452 が attempts と outstanding queries を分けて説明しているのは、このイメージを掴んでもらうためです。

fresh miss
cache にない問いが増えるほど、新しい race window が増える。
identical outstanding queries
同一問いを並行で多く持つと、1 window でどれかに当たる確率が上がる。
shared cache
1 回の誤受理が利用者全体へ波及する。

小問 4-1 — attempts を増やされると何が困るか

1 回の race が短くても、fresh miss が何度も作られれば累積の危険は上がります。

Q1. 2008 年に広く知られた DNS cache poisoning 問題の教訓として最も近いものはどれですか。

何が「試行回数」を増やしたのかがポイントです。

Q2. 他の条件が同じで、identical outstanding queries の本数 D だけが小さな範囲で 1 から 2 に増えたとき、1 つの window あたりの spoof 成功確率は概ねどう変わりますか。

RFC 5452 は小さな D ではほぼ比例で考えられると説明しています。

open recursion と監視

小問 4-1 で見たとおり、危険を増やす最大の要因は「attempts(fresh miss の発生回数)」です。では、その attempts を誰が増やせるのでしょうか。一つの答えが open recursion です。resolver が誰からでも使える状態だと、第三者が外部から自由に query を起こせるため、結果として fresh miss と attempts を意図的に増やされやすくなります。つまり open recursion は「攻撃者にとっての attempts 増加の入口」を広げる構成と言えます。

これは負荷・観測ノイズ・race opportunity の増加という意味で exposure を広げます。運用では「random なラベルへの query 急増」「特定 zone への miss の偏り」「NAT による port entropy の劣化」などを監視指標として持つと、挙動の変化に気づきやすくなります。

小問 4-2 — open recursion と短期対策

誰でも resolver に query を起こせる状態は exposure を広げます。短期対策は一面だけでは不十分です。

Q3. open recursion が cache poisoning の観点で危険度を上げやすい理由として最も近いものはどれですか。

誰が query を起こせるか、という入口の広さを考えます。

Q4. 短期対策としてあてはまらないものはどれですか。

副作用が大きく、防御としても不十分なのはどれかを考えます。

Q5. 次のうち誤りはどれですか。

DNSSEC が「署名による検証」なのか「秘匿」なのかを思い出します。

第 4 章のまとめ

  • 短い race window でも、fresh miss と attempts が増えると危険は累積する
  • open recursion は exposure を広げるので、trusted clients に絞るのが基本
  • patch / entropy / recursion control / 監視は短期 hardening の土台