簡述
來自 Nozomi Networks 的研究人員發現,C 標準函式庫中含有一個未修補的 DNS 漏洞,可允許攻擊者對數百萬個 IoT 設備以及路由器發動 DNS 中毒攻擊,從而達到控制它們的目的。此漏洞影響了所有版本 uClibc 和 uClibc-ng 中 DNS 的實施,這些眾多 IoT 產品中常見的 C 標準函式庫。
影響
漏洞影響範圍很大,諸如 Linksys,Netgear 和 Axis 之類的主要供應商,或是 Gentoo Linux 作業系統,都在其設備中使用 Uclibe。此外,如果攻擊者成功對設備實施了 DNS 中毒攻擊,便也可以進行中間攻擊。研究人員說,這是因為通過毒化 DNS 記錄,他們可以將網絡通信重新連接到其控制下的伺服器。
漏洞說明
研究人員是在檢視 IoT 設備執行 DNS 請求的過程中發現了缺陷。他們注意到 Wireshark 輸出的 DNS 請求模式異常。請求的Transaction ID 首先是增量,然後重置為值0x2,然後再次增量。研究人員因此進行了源碼檢測,發現 UCLIBC 庫通過調用內部 「 __DNS_LOOKUP 」函數來實現 DNS 請求,該功能位於源文件 「/libc/inet/resolv.c 」中。
他們在庫中發現了一些代碼行的故障 - 特別是第1240號線,#1260,#1309,#1321和#1335,可將其歸因於DNS請求模式中的異常,從而使 Transaction ID 成為可預測的。這種可預測性創造了一種情況,即攻擊者需要製作包含正確源端口的 DNS 響應,並贏得與 DNS 伺服器的合法 DNS 響應來利用該缺陷的合法 DNS 響應。如果操作系統配置為使用固定或可預測的源端口,則可能很容易利用這個漏洞。
不過,要利用漏洞,還取決於 OS 如何應用源端口的隨機化,這意味著攻擊者必須通過發送多個 DNS 響應來違反 16 位源端口值,同時擊敗合法的 DNS 響應。
參考資料:https://threatpost.com/dns-bug-millions-routers-iot-risk/179478/