The FreeBSD Project, the FreeBSD Security Officer and the Security Officer Teamは13日(協定世界時)、BINDに関するFreeBSD Security Advisoryを報告した。BINDサーバを運用している場合は早めの対応や問題回避を実施されたい。

FreeBSD-SA-08:06.bind

  • トピック - DNSキャッシュポイズニング脆弱性
  • カテゴリ - contrib
  • モジュール - bind
  • 公表日 - 2008-07-13
  • クレジット - Dan Kaminsky
  • 影響範囲 - すべてのFreeBSDバージョン
  • 修正済み
    • 2008-07-12 10:07:33 UTC (RELENG_6, 6.3-STABLE)
    • 2008-07-13 18:42:38 UTC (RELENG63, 6.3-RELEASE-p3)
    • 2008-07-13 18:42:38 UTC (RELENG_7, 7.0-STABLE)
    • 2008-07-13 18:42:38 UTC (RELENG70, 7.0-RELEASE-p3)
  • CVE-2008-1447

BINDの特定の処理においてUDPソースポートのランダマイズを実装していなかったため、クエリIDが適切なランダム性を実現していなかったという問題が発見された。この結果、DNSキャッシュポイズニング攻撃を実行するにあたって必要になるデータの総量が想定よりも少なかったという問題が明らかになった。この問題を利用されるとターゲットシステムからユーザに対して返されるDNSクエリの結果を制御したり影響を与えることが可能になる。

この問題を一時的に回避する方法はない。ただし、再帰クエリを許可するマシンを限定することで、この脆弱性が利用されることを困難にすることはできる。再帰クエリを許可するマシンを制限する場合、named.conf設定ファイルに次のような設定を追加すればよい。

acl example-acl {
   192.0.2.0/24;
};


options {
        recursion yes;
        allow-recursion { example-acl; };
};
再帰クエリを許可するマシンを制限する設定例 - FreeBSD-SA-08:06.bindより抜粋

問題を解決するにはシステムを最新のセキュリティブランチに更新するか、FreeBSD-SA-08:06.bindの指示に従ってパッチを適用しBIND9を更新すればいい。アップデートすることでBINDのUDPポートの扱いが変更されるため、ファイアウォールでブロックしている場合などはそれに合わせてファイアウォールの設定も変更する必要がある。オプションを指定することでランダマイズ機能を無効にすることもできるが、それは推奨されていない。

BINDはPorts Collectionにも含まれているが、Ports Collectionに含まれているBINDはすでに同等の処理が取り込まれている。システムのBIND9を使っている場合でも、Ports Collectionからインストールして使っている場合でも、迅速なアップデートを実施されたい。