TCP/IP堆棧:NAME:WRECK DNS協議漏洞
發布時間 2021-04-130x00 漏洞概述
2021年04月13日,安全人員披露了TCP/IP堆棧中DNS協議中統稱為NAME:WRECK的9個安全漏洞,這些漏洞至少影響了1億個Internet上運行的設備,攻擊者可以利用這些漏洞使受影響的設備脫機或對設備進行控制。
0x01 漏洞詳情
NAME:WRECK是物聯網企業安全公司Forescout和以色列安全研究小組JSOF的共同發現的,這些漏洞影響的TCP/IP堆棧包括但不限于:
FreeBSD(影響版本:12.1)-BSD系列中最流行的操作系統之一。
IPnet(影響版本:VxWorks 6.6)-最初由Interpeak開發,現在由WindRiver維護,并由VxWorks實時操作系統(RTOS)使用。
NetX(影響版本:6.0.1)-ThreadX RTOS的一部分,現在是Microsoft維護的一個開源項目,名稱為Azure RTOS NetX。
Nucleus NET(影響版本:4.3)-由西門子業務Mentor Graphics維護的Nucleus RTOS的一部分,用于醫療、工業、消費類、航空航天和物聯網設備。
攻擊者可以利用NAME:WRECK漏洞竊取敏感數據、修改或使設備脫機以對制造行業中的政府或企業服務器、醫療機構、零售商或公司造成重大安全事故。
攻擊者還可以利用這些漏洞篡改住宅或商業場所的智能設備,以控制供暖和通風、禁用安全系統或篡改自動照明系統。
研究人員在分析上述TCP/IP堆棧中的DNS時,分析了該協議的消息壓縮功能。DNS響應數據包中包含相同的域名或部分域名的情況并不少見,因此它使用一種壓縮機制來減小DNS消息的大小,這種編碼不僅應用在DNS解析器中,它還應用在多播DNS(mDNS)、DHCP客戶端和IPv6路由器通告中。
Forescout在其報告中解釋說,盡管某些協議并未正式支持壓縮,但該功能還存在于許多應用中。值得注意的是,并非NAME:WRECK中的所有漏洞都可以被利用來獲得相同的結果。其中最嚴重的是遠程代碼執行漏洞,其最高評分為9.8(滿分10分),9個漏洞如下表所示,并非所有漏洞都與消息壓縮有關:
CVE ID | Stack | 描述 | 受影響功能 | 潛在影響 | 評分 |
CVE-2020-7461 | FreeBSD |
-網絡上的攻擊者可以將惡意制作的數據發送到DHCP客戶端 | Message compression | RCE | 7.7 |
CVE-2016-20009 | IPnet | -消息解壓縮功能基于堆棧的溢出 | Message compression | RCE | 9.8 |
CVE-2020-15795 | Nucleus NET | -DNS域名標簽解析功能無法正確驗證DNS響應中的名稱 -解析格式錯誤的響應可能導致寫操作超出分配的結構的末尾 | Domain name label parsing | RCE | 8.1 |
CVE-2020-27009 | Nucleus NET | -DNS域名記錄解壓縮功能無法正確驗證指針偏移值 -解析格式錯誤的響應可能導致寫操作超出分配的結構的末尾 | Message compression | RCE | 8.1 |
CVE-2020-27736 | Nucleus NET | -DNS域名標簽解析功能無法正確驗證DNS響應中的名稱 -解析格式錯誤的響應可能導致寫操作超出分配的結構的末尾 | Domain name label parsing | 拒絕服務 | 6.5 |
CVE-2020-27737 | Nucleus NET | -DNS響應解析功能無法正確驗證各種長度和記錄數 -解析格式錯誤的響應可能會導致讀取超出已分配結構的末尾 | Domain name label parsing | 拒絕服務 | 6.5 |
CVE-2020-27738 | Nucleus NET | -DNS域名記錄解壓縮功能無法正確驗證指針偏移值 -解析格式錯誤的響應可能導致超出分配結構末尾的讀取訪問 | Message compression | 拒絕服務 | 6.5 |
CVE-2021-25677 | Nucleus NET | -DNS客戶端無法正確隨機化DNS事務ID(TXID)和UDP端口號 | Transaction ID | DNS緩存中毒/欺騙 | 5.3 |
* | NetX | -DNS解析器中的兩個功能無法檢查壓縮指針是否不等于當前正在解析的相同偏移量,從而可能導致無限循環 | Message compression | 拒絕服務 | 6.5 |
利用單個漏洞可能不會造成太大影響,但如果攻擊者將它們組合在一起來利用,就可能會造成嚴重破壞。例如,攻擊者可以利用一個漏洞將任意數據寫入易受攻擊設備的敏感內存位置,利用另一個漏洞在數據包中注入代碼,然后再利用第三個漏洞將其傳遞給目標。
Forescout公司的報告深入探討了技術細節,即利用在開源TCP/IP堆棧中發現的NAME:WRECK漏洞以及AMNESIA:33中的漏洞來實現遠程代碼執行攻擊。該公司還討論了多個在DNS消息解析器中不斷重復的執行問題,這些問題被稱為anti-patterns(反模式),它們是造成NAME:WRECK漏洞的原因:
缺少TXID驗證,隨機TXID和源UDP端口不足;
缺乏域名字符驗證;
缺少標簽和名稱長度驗證;
缺少NULL終止驗證;
缺少記錄計數字段驗證;
缺乏域名壓縮指針和偏移量驗證;
此外,Forescout還提供了兩個開源工具,可以幫助確定目標網絡設備是否運行特定的嵌入式TCP/IP協議棧(Project Memoria Detector)和用于檢測類似于NAME:WRECK的問題(namewreck,與Joern一起使用)。
0x02 處置建議
NAME:WRECK的修復程序適用于 FreeBSD、Nucleus NET和 NetX,建議先實施以下安全建議,再及時應用設備供應商發布的安全更新。
安全建議:
使用一些緩解信息來開發檢測DNS漏洞的簽名;
發現并清點運行易受攻擊堆棧的設備;
實施分段控制和適當的network hygiene;
監視受影響的設備供應商發布的補??;
配置設備依賴內部DNS服務器;
監控所有網絡流量中的惡意數據包。
0x03 參考鏈接
https://www.bleepingcomputer.com/news/security/name-wreck-dns-vulnerabilities-affect-over-100-million-devices/
https://www.freebsd.org/security/advisories/FreeBSD-SA-20:26.dhclient.asc
https://github.com/Forescout/project-memoria-detector
https://github.com/Forescout/namewreck
0x04 時間線
2021-04-13 bleepingcomputer披露漏洞
2021-04-13 VSRC發布安全通告
0x05 附錄
CVSS評分標準官網:http://www.first.org/cvss/