DNSpooq:dnsmasq 中發現了7個安全漏洞
JSOF 研究人員在開源DNS 轉發軟件dnsmasq 中發現了7個安全漏洞,漏洞影響使用dnsmasq的約40個廠商和產品。
Dnsmasq
Dnsmasq是用來緩存DNS響應的一款非常流行的軟件。本地保存之前收到的DNS請求響應可以加速DNS解析過程。Dnsmasq廣泛應用于網絡設備和小型網絡中。Dnsmasq還可以提供DNS服務來支持WiFi熱點、企業級訪客網絡等。
DNSpooq漏洞
DNSpooq漏洞可以分為兩種類型:
- DNS 緩存投毒漏洞,可以引發DNS緩存投毒;
- 緩存溢出漏洞,可以引發遠程代碼執行。
DNS緩存投毒漏洞
DNS緩存投毒攻擊可以破壞使用dnsmasq的企業或設備的DNS查詢。也就是或,攻擊者可以路由到特點網站的通信。DNSpooq 緩存投毒漏洞的CVE編號為CVE-2020-25686、CVE-2020-25684和CVE-2020-25685。
漏洞會減少TXID或源端口的熵。本來應該是隨機化的和提供32位的熵,但是由于使用弱哈希來識別DNS查詢,以及請求和響應的寬松匹配,熵值大量減少,只有約19位需要猜測,使得緩存投毒成為可能。Dnsmasq處理CNAME 記錄的方式也使得攻擊者可以偽造CNAME 記錄鏈,同時對9個DNS記錄有效投毒。為了執行該攻擊,攻擊者需要進行一些比較復雜的設備。對緩存投毒來說,不使用Dnsmasq 緩存特征的設備的影響比較小。
緩存溢出漏洞
4個緩存溢出漏洞分別是CVE-2020-25687、CVE-2020-25683、CVE-2020-25682和CVE-2020-25681。最嚴重的漏洞會引發有漏洞的設備上的遠程代碼執行,但是緩存溢出漏洞的作用非常有限,一旦與緩存投毒漏洞相結合就會引發潛在的攻擊方式。
緩存溢出漏洞中含有一個高危的基于堆的緩存溢出漏洞,在dnsmasq配置為使用DNSSEC時可能會引發遠程代碼執行。該漏洞存在于DNSSEC 驗證的早期階段,使得DNSSEC的防御對于DNS無效。在DNSSEC使用時,其他基于堆的緩存溢出漏洞只能引發DOS攻擊。
攻擊場景
目前有大約100萬的dnsmasq服務器是互聯網可訪問的,通過互聯網的攻擊是非常容易的。根據設備配置情況可能會引發許多可能的攻擊場景:
(1) DNS緩存投毒:路由設備DNS轉發服務器的DNS緩存投毒可能會引發不同類型的欺詐,因為用戶可能會被路由到一個惡意網站。
可能被破壞的流量包括普通的互聯網流量,也包括郵件、SSH、遠程桌面、RDP視頻和音頻通話、軟件更新等流量。
(2) 設備接管:除了緩存投毒外,每個可以進行DNS緩存投毒的設備都可能會被攻擊者接管。比如對路由器設備,攻擊者可以完全控制進出網絡的所有流量。
此外,攻擊者還有可能會發起其他攻擊,比如:
(A) 大規模DDOS攻擊:到攻擊者控制的網站的大量web流量可以用來生成大量基于JS的DDOS攻擊。
(B) 反向DDOS: 攻擊者可以防止特定用戶訪問網站或登陸特定域名。
(C) 蠕蟲攻擊:攻擊者可以在無需用戶交互的情況下在有漏洞的設備中傳播。之前在使用受感染的dnsmasq 服務器的網絡中的移動設備會接收到一個惡意的DNS記錄。當設備進入新的網絡后,就會感染新的網絡。
總結
近年來,研究人員發現了DNS中的許多漏洞,DNSpooq 證明DNS的實現仍然是不安全的。雖然也開發了許多的DNS的安全增強價值,但DNSSEC這樣的安全機制仍然美元大規模部署。
完整技術報告參見:
https://www.jsof-tech.com/wp-content/uploads/2021/01/DNSpooq_Technical-Whitepaper.pdf
本文翻譯自:https://www.jsof-tech.com/disclosures/dnspooq/