物联网企业安全公司Forescout和以色列安全研究小组JSOF的安全研究人员最近发现了9个漏洞,这些漏洞影响4个TCP/IP协议栈从而影响了1亿多台用户和企业设备。攻击者可以利用这些漏洞来控制系统。
这些被称为“WRECK”的漏洞是一项名为Projrct Memoria的计划的最新成果。该计划旨在研究被广泛使用的TCP/IP堆栈的安全性,这些堆栈被各个供应商纳入其固件以提供互联网和网络连接功能。
研究人员表示,这些漏洞与域名系统(DNS)的实现有关。它们会导致拒绝服务(DoS)或远程代码执行(RCE),从而允许攻击者将目标设备脱机或控制它们。
这已经是第五次在支撑百万互联网设备的协议栈中发现安全漏洞。
四个TCP/IP堆栈中的问题
FreeBSD (易受攻击的版本:12.1) - BSD家族中最流行的操作系统之一。
IPnet(易受攻击的版本:VxWorks 6.6)--最初由Interpeak开发,现在由WindRiver维护,由VxWorks实时操作系统(RTOS)使用。
NetX(易受攻击的版本:6.0.1)--ThreadX RTOS的一部分,它现在是微软以Azure RTOS NetX为名维护的一个开源项目。
Nucleus NET(易受攻击的版本:4.3)--由西门子旗下的Mentor Graphics公司维护的Nucleus RTOS的一部分,它被用于医疗、工业、消费、航空航天和物联网设备中。
根据Forescout的说法,黑客很可能会利用这些漏洞来窃取敏感数据、修改或使设备离线以达到破坏目的,对政府或企业服务器、医疗设施、零售商或制造业公司造成重大损害。
攻击者还可能篡改住宅或商业场所的关键建筑功能,以控制供暖和通风,禁用安全系统或篡改自动照明系统。
NAME:WRECK漏洞
研究人员在分析上述TCP/IP栈中的DNS实现时,考察了该协议的消息压缩功能。
DNS响应数据包中包含相同的域名或部分域名的情况并不少见,因此存在一种压缩机制来减小DNS消息的大小。
Forescout在4月13日的一份报告中解释说,尽管一些协议不正式支持压缩,但该功能也存在于许多现实操作中。这种情况的发生是 "由于代码重用或对规范的特殊理解"。
不过,并不是所有的NAME:WRECK都可以被利用来达到同样的效果。其中潜在影响最严重的是远程代码执行漏洞,计算出最高的严重性分数为9.8分(满分10分)。
以下是所有9个漏洞的概要,它们的识别号,以及它们的严重性分数。
从此表可以看出,并非所有的漏洞都与信息压缩有关。这些例外的漏洞是研究的副产品,可以和其他的漏洞连锁起来,扩大攻击的效果。
Forescout公司的报告深入探讨了技术细节,即利用该公司在开源TCP/IP堆栈中发现的几个NAME:WRECK漏洞以及AMNESIA:33集合中的漏洞,可能导致远程代码执行攻击。
该公司还讨论了多个在DNS消息解析器中不断重复的执行问题,这些问题被称为反面模式,是造成NAME:WRECK漏洞的原因:
- 缺少TXID验证,随机TXID和源UDP端口不足
- 缺少域名字符验证
- 缺少标签和名称长度验证
- 缺少NULL终止验证
- 缺少记录计数字段验证
- 缺少域名压缩指针和偏移量验证
FreeBSD、Nucleus NET 和 NetX 都提供了 NAME:WRECK 的补丁,受影响的产品只要安装修复程序就可以解决这些问题。
不过,这个过程不太可能有100%的成功率,因为有几个障碍:
- 首先,运营商需要确定受影响设备上运行的TCP/IP协议栈。这并不总是一件容易的事,因为有时连设备供应商都不知道。
- 另一个障碍是应用补丁,在许多情况下,需要手动安装补丁。
安全工程师可以使用一些缓解信息来开发检测DNS漏洞的签名:
- 发现并清点运行脆弱堆栈的设备
- 执行分段控制和适当的网络卫生
- 监控受影响设备供应商发布的渐进式补丁
- 将设备配置为依赖内部DNS服务器
- 监视所有网络流量,防止恶意数据包
此外,Forescout还提供了两个开源工具,可以帮助确定目标网络设备是否运行特定的嵌入式TCP/IP协议栈(Project Memoria Detector)和用于检测类似于NAME:WRECK的问题(与Joern合作)。