1. DNS/キャッシュ毒盛

DNS/毒盛

現状のDNSキャッシュ(リゾルバー)には比較的簡単に偽情報を注入することができる。

1.1. 注入の手口,あるいは条件

  1. リゾルバーが外部に問い合わせるきっかけを与える。(与えられることが条件)
  2. 本来の返答より先に偽の返答を送りつける。(送信元を騙る)
  3. リゾルバーが偽返答を本来の返答だと思う。(返事の内容)

Kaminskyはリゾルバーが問い合わせを発生するきっかけを外部から与えられることを指摘した。

-- ToshinoriMaeno 2017-03-29 23:34:18

DNS/毒盛 DNS/毒盛/キャッシュ毒盛

1.2. 防御

手口に書いたみっつの項目についての対策を考える。

  1. 信頼できない相手からの問い合わせは拒否する。(アクセス制限)
  2. ゾーンサーバ側の問題なので、対応できない。(送信元の確認くらいか。)
  3. 正当な返答かどうか確認

ここでは3番目の項目について、特にNS毒について、検討する。

1.3. NS 毒

入れやすい毒のひとつにNSレコードがある。特に以下の二つが課題である。

  1. delegation (Muellerの指摘)
  2. NS移転情報によるキャッシュの上書き

後者は毒の可能性のあるレコードによって、キャッシュにあるレコードを上書きするという危険な動作をしていることが 理由であるので、実装の不良であると考える。

従って、重要なのはdelegation返答に含まれる毒を検出することだと言える。

-- ToshinoriMaeno 2017-10-10 12:07:55

1.3.1. 否定返答を使った防御

本来の返答がNXDOMAINやNo Nameなどの否定的返答である場合には、

現状のリゾルバーはこの情報を利用していないために毒盛されやすい。

-- ToshinoriMaeno 2017-04-01 04:20:23

1.3.2. 肯定返答を使った防御

wildcardレコード設定を行っていると、Answerあり返答になることもあるから、 SOA情報は毒見には使えない。(このことから、wildcard設定があると防御しづらいと言える。)

ただし、返答があったという事実はSOAレコードと同様にzone cutの不在を示すので、 この情報を毒見に使えると思う。(親子ゾーンの同居時は別途検討する必要がある。否定返答と同様)

-- ToshinoriMaeno 2017-04-02 11:35:39

1.4. 系列ゾーンの同居の検討

親子同居については、子ゾーンはゾーンとして独立していないものとみなすことで対応できる。

親の親(祖先)などと同居している場合にはすこし話がややこしい。

-- ToshinoriMaeno 2017-04-04 02:51:21

com/net NS (*.gtld-servers.net)

というややこしい関係を設定しているのが、verisign