Upgrade to Pro — share decks privately, control downloads, hide ads and more …

BIND Memory leak Vulnerability and Root KSK Rollover

BIND Memory leak Vulnerability and Root KSK Rollover

Toshifumi Sakaguchi

April 26, 2019
Tweet

More Decks by Toshifumi Sakaguchi

Other Decks in Technology

Transcript

  1. BIND メモリリーク脆弱性とRoot KSK Rollover 2019/04/23 JANOG 43 -> DNS温泉番外編 ->

    ssmjp -> JANOG Interim 43.5 Toshifumi Sakaguchi 1
  2. Agenda 2019/02/22に公開されたBIND脆弱性CVE-2018-5744と、それに関連する事を説明します ⾃⼰紹介 BIND脆弱性の概要 Root KSK Rollover The Signaling Trust

    Ancker Knowledge BIND脆弱性の原因とその対応 Root KSK Rolloverの振り返り まとめ 2
  3. Who am I ? 坂⼝俊⽂/Toshifumi Sakaguchi Twitter: @siskrn GitHub: https://github.com/sischkg/

    DNS Summer Day, DNSOPS.JP BoF, JANOG Interim 42.5で発表 主な実績 CVE-2015-1868, CVE-2015-5470(PowerDNS Security Advisory 2015-01) CVE-2016-2848(BIND) CVE-2017-15120(PowerDNS Security Advisory 2017-08) CVE-2018-1110(Knot Resolver) CVE-2018-14644(PowerDNS Security Advisory 2018-07) CVE-2018-5744(BIND) 3
  4. BINDのメモリリークの脆弱性(CVE-2018-5744) A specially crafted packet can cause named to leak

    memory 複数の Key Tag Option を持つDNSクエリを受信するとメモリリーク Release Notes for BIND-9.11.5-P4 named leaked memory when processing a request with multiple Key Tag EDNS options present. Key Tag Optionの説明は後で 4
  5. 対策 回避策はなし Workaround: None. ある新機能が原因だが無効化できない BINDのバージョンアップが必要 5

  6. Key Tag Optionとは 2016年10⽉から始まった、Root KSK Rolloverの中で導⼊された Signaling Trust Anchor Knowledge

    の中で定義されたEDNS拡張 6
  7. Root KSK Rollover Root Zone のKSK(ZSKを署名するための鍵)を新しいものに変更する作業 新しいKSKで署名するまえに、対応する新しいTrust AnchorをValidator(Resolver)に設定す ることが必要 新しいTrust

    Anchorがないと名前解決に失敗 Rollover前に、新しいTrust Anchorが設置されていることを確認したい Signaling Trust Anchor Knowledge in DNS Security Extensions (DNSSEC) 7
  8. Signaling Trust Anchor Knowledge RFC8145 Signaling Trust Anchor Knowledge in

    DNS Security Extensions (DNSSEC) (https://tools.ietf.org/html/rfc8145) 新しいTrust AnchorをValidatorへ設定したかを調査するために導⼊ Validatorが使⽤しているTrust AnchorのKey Tagを、権威サーバへ通知 +------------+ +---------------------+ | 権威サーバ |<=== Key Tag(1111,2222)===| validator(resolver) | +------------+ +---------------------+ 8
  9. Signaling Trust Anchor Knowledge Key Tagの通知⽅法 クエリのOPTレコードに Key Tag Option

    を追加 +--------------+--------------+--------------+--------------+ | optcode=14 | opt-length=4 | keytag=1111 | keytag=2222 | +--------------+--------------+--------------+--------------+ クエリのQNAMEにKey Tagを含むクエリを送信 QNAME=_ta-1111. QCLASS=IN QTYPE=NULL QNAME=_ta-1111-2222. QCLASS=IN QTYPE=NULL 9
  10. Signaling Trust Anchor Knowledge 以下の機能の実装が必要 Validator側でKey Tagを送信する機能 権威(Root)サーバでKey Tagを観測する機能 10

  11. 脆弱性の原因 BINDのメモリリークは、受信したKey Tagをログへ記録する機能とともに追加 (https://gitlab.isc.org/isc- projects/bind9/commit/b41c1aacbc550fa67bfa62df3114b1d668b9c8d8) 4759. [func] Add logging channel

    "trust-anchor-telementry" to record trust-anchor-telementry in incoming requests. Both _ta-XXXX./NULL and EDNS KEY-TAG options are logged. [RT #46124] Key Tag Optionをパースするprocess_keytagに問題 (https://gitlab.isc.org/isc-projects/bind9/blob/v9_11_5_P1/bin/named/client.c#L2110) 11
  12. 脆弱性の対応の履歴 参考⽂献 BIND脆弱性が出るタイミングを⾒抜く⼒を︕ (https://dnsops.jp/bof/20161201/IW2016DNSOPS_BoF_yfujiwara.pdf) 2018/12/09 脆弱性発⾒、即ISCへ報告 2018/12/10 ISCから回答 年末にシステムを更新しない組織があるため、公開は1⽉の上・中旬の予定 2018/12/28

    ISCより報告 他の脆弱性の対応もあり、公開は1⽉の後半 2019/01/15 BIND 9.11.5-P2/9.12.3-P2 ASNへ公開? https://ftp.isc.org/isc/bind9/private の更新 12
  13. 2019/01/23 更新後のBINDの不具合修正? Master BranchのCHANGESに"placeholder"追加 2019/01/29 更新後のBINDの不具合修正? Master BranchのCHANGESに"placeholder"追加 2019/02/06 ISCより報告

    別の脆弱性の対応に問題があり2⽉中旬にリリース予定と連絡 2019/02/07 BIND 9.11.5-P4/9.12.3-P4 ASNへ公開? https://ftp.isc.org/isc/bind9/private の更新 2019/02/22 脆弱性公開 13
  14. ... snip ... 14

  15. Signaling Trust Anchor Knowledgeの実装状況(Validator) Open SourceのDNS ResolverのRFC 8145の実装状況 BIND 9.9.10,

    9.10.5, 9.11.0 (2016/10/04, default on) Unbound 1.6.4(2017/06/27,default off), Unbound 1.6.7(2017/10/10, default on) PowerDNS Recursor未実装 Knot Resolver 1.5.0(2017/11/02, default on) ほかの実装は未調査 ただし、すべてQNAMEを使⽤した実装で、Key Tag Optionは未実装 Key Tag Optionを実装する必要性は︖ 15
  16. Root KSK Rollover の振り返り Root KSK Rolloverの前後のKey Tagの観測状況 APRICOT 2019

    KSK Rollover 2015-2019(https://www.slideshare.net/apnic/ksk-rollover-20152019) 16
  17. Root KSK Rollover の振り返り APRICOT KSK Rollover 2015-2019(https://www.slideshare.net/apnic/ksk-rollover-20152019) 17

  18. Signaling Trust Anchor Knowledge による観測結果 Signaling Trust Anchor Knowledgeは新しいvalidatorのみ実装されているため、観測対象 は偏っている

    間違った実装の存在(BIND) 署名検証しない設定でも、Key Tagを送信 Suppress trust-anchor-telementry queries if validation is disabled. [RT #46131] 18
  19. まとめ Root KSK Rolloverに関連したBINDの脆弱性 Key Tag Optionを実装しなければ避けることができた脆弱性 本件の脆弱性対応はあまりよくなかった 今回のRoot KSK

    Rolloverにおいて、結果としてSignaling Trust Anchor Knowledgeは参考 にならなかった 19