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