2016年2月17日水曜日

CVE-2015-7547関連のbindパラメータメモ

CVE-2015-7547 はglibcの問題なのですが、getaddrinfo()の処理など名前解決処理に関する不具合で、緩和策にDNS関連のトピックも挙がっているのでひとまず整理しました。

https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html で挙げられている緩和策部分を抽出すると、
- Mitigating factors for UDP include:
  - A firewall that drops UDP DNS packets > 512 bytes.
  - A local resolver (that drops non-compliant responses).
  - Avoid dual A and AAAA queries (avoids buffer management error) e.g.
    Do not use AF_UNSPEC.
  - No use of `options edns0` in /etc/resolv.conf since EDNS0 allows
    responses larger than 512 bytes and can lead to valid DNS responses
    that overflow.
  - No use of `RES_USE_EDNS0` or `RES_USE_DNSSEC` since they can both
    lead to valid large EDNS0-based DNS responses that can overflow.
- Mitigating factors for TCP include:
  - Limit all replies to 1024 bytes.
反射攻撃やDNSフラグメンテーションが話題になった時のパラメータと顔ぶれが似てますね。
クライアント機器(スタブリゾルバ)で設定すべきものとリゾルバサーバーで設定できるものとありますが、
ひとまずbindのnamed.conf設定で該当するのは以下となります。
edns-udp-size
max-udp-size
どちらもデフォルト値は4096 bytesです。RFC6891を汲んでの値と思われます。
IPv6やDNSSECの要請でサイズが大きくなってきたところに512という小さい値の要求はキビシイ内容ですね....
素直にglibcアップデートを適用しましょう。
glibcなのでOSレベルでのリブートを行うことになるでしょうね..
 
(適宜更新します