最近,有關 在Dnsmasq軟件包中發現了7個漏洞, 它結合了一個緩存的DNS解析器和DHCP服務器,它們被分配了代號DNSpooq。 問題允許惡意DNS緩存攻擊或緩衝區溢出 可能導致遠程執行攻擊者的代碼。
即使最近 默認情況下,Dnsmasq在常規Linux發行版中不再用作求解器,但仍在Android中使用 以及OpenWrt和DD-WRT等專業發行版以及許多製造商的無線路由器固件。 在正常發行版中,可能會隱式使用dnsmasq,例如,在使用libvirt時,可以啟動它來在虛擬機上提供DNS服務,也可以通過更改NetworkManager配置器中的設置來激活它。
由於無線路由器升級文化尚有很多不足之處, 研究人員擔心發現的問題可能仍未解決 長期以來,它將參與對路由器的自動攻擊,以控制它們或將用戶重定向到惡意惡意站點。
有大約40個基於Dnsmasq的公司包括Cisco,Comcast,Netgear,Ubiquiti,Siemens,Arista,Technicolor,Aruba,Wind River,Asus,AT&T,D-Link,華為,Juniper,Motorola,Synology,Xiaomi,ZTE和Zyxel。 可以警告此類設備的用戶不要使用其上提供的常規DNS查詢重定向服務。
第一部分漏洞 在Dnsmasq發現 是指針對DNS緩存中毒攻擊的防護, 基於Dan Kaminsky在2008年提出的方法。
發現的問題使現有保護無效 並允許欺騙緩存中任意域的IP地址。 Kaminsky的方法可控制DNS查詢ID字段的大小可忽略,只有16位。
要找到欺騙主機名所需的正確標識符,只需發送大約7.000個請求並模擬大約140.000個虛假響應即可。 攻擊歸結為向DNS解析器發送了大量偽造的IP綁定數據包 具有不同的DNS事務標識符。
識別出的漏洞降低了32位熵級別 預計需要猜測19位,這使得高速緩存中毒攻擊非常現實。 另外,dnsmasq對CNAME記錄的處理使其可以欺騙CNAME記錄鏈,從而一次可以有效欺騙多達9個DNS記錄。
- CVE-2020-25684: 在處理來自外部服務器的DNS響應時,缺少對請求ID以及IP地址和端口號的驗證。 此行為與RFC-5452不兼容,RFC-XNUMX要求在匹配響應時使用其他請求屬性。
- CVE-2020-25686: 缺少對具有相同名稱的未決請求的驗證,從而允許使用生日方法來顯著減少偽造響應所需的嘗試次數。 結合CVE-2020-25684漏洞,此功能可以大大降低攻擊的複雜性。
- CVE-2020-25685: 在不使用DNSSEC進行編譯的情況下(SHA-32與DNSSEC配合使用),在驗證響應時使用不可靠的CRC1哈希算法。 通過允許您利用與目標域具有相同CRC32哈希的域,可以利用此漏洞來大大減少嘗試次數。
- 第二組問題(CVE-2020-25681,CVE-2020-25682,CVE-2020-25683和CVE-2020-25687)是由在處理某些外部數據時導致緩衝區溢出的錯誤引起的。
- 對於CVE-2020-25681和CVE-2020-25682漏洞,有可能創建可能導致系統上代碼執行的漏洞利用。
最後提到 Dnsmasq更新2.83中解決了漏洞 解決方法是,建議使用命令行選項禁用DNSSEC和查詢緩存。