物聯(lián)網(wǎng)企業(yè)安全公司Forescout和以色列安全研究小組JSOF的安全研究人員最近發(fā)現(xiàn)了9個漏洞,這些漏洞影響4個TCP/IP協(xié)議棧從而影響了1億多臺用戶和企業(yè)設備。攻擊者可以利用這些漏洞來控制系統(tǒng)。
這些被稱為“WRECK”的漏洞是一項名為Projrct Memoria的計劃的最新成果。該計劃旨在研究被廣泛使用的TCP/IP堆棧的安全性,這些堆棧被各個供應商納入其固件以提供互聯(lián)網(wǎng)和網(wǎng)絡連接功能。
研究人員表示,這些漏洞與域名系統(tǒng)(DNS)的實現(xiàn)有關。它們會導致拒絕服務(DoS)或遠程代碼執(zhí)行(RCE),從而允許攻擊者將目標設備脫機或控制它們。
這已經(jīng)是第五次在支撐百萬互聯(lián)網(wǎng)設備的協(xié)議棧中發(fā)現(xiàn)安全漏洞。
四個TCP/IP堆棧中的問題
FreeBSD (易受攻擊的版本:12.1) - BSD家族中最流行的操作系統(tǒng)之一。
IPnet(易受攻擊的版本:VxWorks 6.6)—最初由Interpeak開發(fā),現(xiàn)在由WindRiver維護,由VxWorks實時操作系統(tǒng)(RTOS)使用。
NetX(易受攻擊的版本:6.0.1)—ThreadX RTOS的一部分,它現(xiàn)在是微軟以Azure RTOS NetX為名維護的一個開源項目。
Nucleus NET(易受攻擊的版本:4.3)—由西門子旗下的Mentor Graphics公司維護的Nucleus RTOS的一部分,它被用于醫(yī)療、工業(yè)、消費、航空航天和物聯(lián)網(wǎng)設備中。
根據(jù)Forescout的說法,黑客很可能會利用這些漏洞來竊取敏感數(shù)據(jù)、修改或使設備離線以達到破壞目的,對政府或企業(yè)服務器、醫(yī)療設施、零售商或制造業(yè)公司造成重大損害。
攻擊者還可能篡改住宅或商業(yè)場所的關鍵建筑功能,以控制供暖和通風,禁用安全系統(tǒng)或篡改自動照明系統(tǒng)。
WRECK漏洞
研究人員在分析上述TCP/IP棧中的DNS實現(xiàn)時,考察了該協(xié)議的消息壓縮功能。
DNS響應數(shù)據(jù)包中包含相同的域名或部分域名的情況并不少見,因此存在一種壓縮機制來減小DNS消息的大小。
Forescout在4月13日的一份報告中解釋說,盡管一些協(xié)議不正式支持壓縮,但該功能也存在于許多現(xiàn)實操作中。這種情況的發(fā)生是 “由于代碼重用或對規(guī)范的特殊理解”。
不過,并不是所有的NAME:WRECK都可以被利用來達到同樣的效果。其中潛在影響最嚴重的是遠程代碼執(zhí)行漏洞,計算出最高的嚴重性分數(shù)為9.8分(滿分10分)。
以下是所有9個漏洞的概要,它們的識別號,以及它們的嚴重性分數(shù)。
從此表可以看出,并非所有的漏洞都與信息壓縮有關。這些例外的漏洞是研究的副產(chǎn)品,可以和其他的漏洞連鎖起來,擴大攻擊的效果。
Forescout公司的報告深入探討了技術細節(jié),即利用該公司在開源TCP/IP堆棧中發(fā)現(xiàn)的幾個NAME:WRECK漏洞以及AMNESIA:33集合中的漏洞,可能導致遠程代碼執(zhí)行攻擊。
該公司還討論了多個在DNS消息解析器中不斷重復的執(zhí)行問題,這些問題被稱為反面模式,是造成NAME:WRECK漏洞的原因:
缺少TXID驗證,隨機TXID和源UDP端口不足
缺少域名字符驗證
缺少標簽和名稱長度驗證
缺少NULL終止驗證
缺少記錄計數(shù)字段驗證
缺少域名壓縮指針和偏移量驗證
FreeBSD、Nucleus NET 和 NetX 都提供了 NAME:WRECK 的補丁,受影響的產(chǎn)品只要安裝修復程序就可以解決這些問題。
不過,這個過程不太可能有100%的成功率,因為有幾個障礙:
首先,運營商需要確定受影響設備上運行的TCP/IP協(xié)議棧。這并不總是一件容易的事,因為有時連設備供應商都不知道。
另一個障礙是應用補丁,在許多情況下,需要手動安裝補丁。
安全工程師可以使用一些緩解信息來開發(fā)檢測DNS漏洞的簽名:
發(fā)現(xiàn)并清點運行脆弱堆棧的設備
執(zhí)行分段控制和適當?shù)木W(wǎng)絡衛(wèi)生
監(jiān)控受影響設備供應商發(fā)布的漸進式補丁
將設備配置為依賴內部DNS服務器
監(jiān)視所有網(wǎng)絡流量,防止惡意數(shù)據(jù)包
此外,F(xiàn)orescout還提供了兩個開源工具,可以幫助確定目標網(wǎng)絡設備是否運行特定的嵌入式TCP/IP協(xié)議棧(Project Memoria Detector)和用于檢測類似于NAME:WRECK的問題(與Joern合作)。