影響大多數 DNSSEC 實施的 KeyTrap 和 NSEC3 漏洞

在 DNSSEC 協定的各種實作中已發現兩個漏洞,影響 BIND、PowerDNS、dnsmasq、Knot Resolver 和 Unbound DNS 解析器。這些漏洞可能會導致執行 DNSSEC 驗證的 DNS 解析器拒絕服務,進而導致高 CPU 負載幹擾其他查詢的處理。若要實施攻擊,只需使用 DNSSEC 向 DNS 解析器發送請求即可,這會導致呼叫攻擊者伺服器上專門設計的 DNS 區域。

發現的問題:

  • CVE-2023-50387(代號 KeyTrap) - 存取專門設計的 DNS 區域時,由於 CPU 負載較大且 DNSSEC 檢查執行時間較長,會導致拒絕服務。要進行攻擊,需要在攻擊者控制的 DNS 伺服器上放置帶有惡意設定的網域區域,並確保該區域被遞歸 DNS 伺服器訪問,攻擊者尋求拒絕服務。

    惡意設定涉及使用衝突金鑰、RRSET 記錄和區域數位簽章的組合。嘗試使用這些金鑰進行驗證會導致耗時、資源密集型操作,這些操作可能會完全載入 CPU 並阻止其他請求的處理(例如,據稱在對 BIND 的攻擊中,有可能停止處理其他要求16 小時)。

  • CVE-2023-50868(代號 NSEC3)是一種拒絕服務,因為在處理特製的 DNSSEC 回應時計算 NSEC3(Next Secure v3)記錄中的雜湊值時執行了大量計算。此攻擊方法與第一個漏洞類似,只不過在攻擊者的 DNS 伺服器上建立了一組專門設計的 NSEC3 RRSET 記錄。

值得注意的是,上述漏洞的出現是由於 DNSSEC 規範中定義 DNS 伺服器能夠發送所有可用的加密金鑰,而解析器必須處理任何接收到的金鑰,直到檢查成功完成或全部完成而造成的。收到的密鑰已被驗證。

作為阻止漏洞的措施,解析器限制信任鏈過程中涉及的DNSSEC 金鑰的最大數量和NSEC3 的雜湊計算的最大數量,並限制每個RRSET(金鑰簽章組合)和每個伺服器回應的驗證重試。

這些漏洞已在Unbound (1.19.1)、PowerDNS Recursor (4.8.6、4.9.3、5.0.2)、Knot Resolver (5.7.1)、dnsmasq (2.90) 和BIND (9.16.48、9.18.24) 的更新中修復.9.19.21 和 XNUMX)。可以在以下頁面評估發行版中的漏洞狀態:Debian、Ubuntu、SUSE、RHEL、Fedora、Arch Linux、Gentoo、Slackware、NetBSD、FreeBSD。

BIND DNS 伺服器版本 9.16.48、9.18.24 和 9.19.21 也修復了多個漏洞:

  • CVE-2023-4408 解析大型 DNS 訊息可能會導致 CPU 負載過高。
  • CVE-2023-5517 - 對特製反向區域的請求可能會因觸發斷言檢查而導致崩潰。該問題僅出現在啟用了「nxdomain-redirect」設定的設定中。
  • CVE-2023-5679 – 由於在支援 DNS64 並啟用「serve-stale」(設定、stale-cache-enable 和 stale-answer-enable)的系統上觸發斷言檢查,遞歸主機偵測可能會導致崩潰。
  • CVE-2023-6516 特製的遞迴查詢可能會導致進程耗盡可用的記憶體。

來源: opennet.ru

添加評論