HW期间,为防范钓鱼,即日起FreeBuf将取消投稿文章的一切外部链接。给您带来的不便,敬请谅解~
物联网企业安全公司Forescout和以色列安全研究小组JSOF的安全研究人员最近发现了9个漏洞,这些漏洞影响4个TCP/IP协议栈从而影响了1亿多台用户和企业设备。攻击者可以利用这些漏洞来控制系统。
这些被称为“WRECK”的漏洞是一项名为Projrct Memoria的计划的最新成果。该计划旨在研究被广泛使用的TCP/IP堆栈的安全性,这些堆栈被各个供应商纳入其固件以提供互联网和网络连接功能。
研究人员表示,这些漏洞与域名系统(DNS)的实现有关。它们会导致拒绝服务(DoS)或远程代码执行(RCE),从而允许攻击者将目标设备脱机或控制它们。
这已经是第五次在支撑百万互联网设备的协议栈中发现安全漏洞。
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的说法,黑客很可能会利用这些漏洞来窃取敏感数据、修改或使设备离线以达到破坏目的,对政府或企业服务器、医疗设施、零售商或制造业公司造成重大损害。
攻击者还可能篡改住宅或商业场所的关键建筑功能,以控制供暖和通风,禁用安全系统或篡改自动照明系统。
研究人员在分析上述TCP/IP栈中的DNS实现时,考察了该协议的消息压缩功能。
DNS响应数据包中包含相同的域名或部分域名的情况并不少见,因此存在一种压缩机制来减小DNS消息的大小。
Forescout在4月13日的一份报告中解释说,尽管一些协议不正式支持压缩,但该功能也存在于许多现实操作中。这种情况的发生是 "由于代码重用或对规范的特殊理解"。
不过,并不是所有的NAME:WRECK都可以被利用来达到同样的效果。其中潜在影响最严重的是远程代码执行漏洞,计算出最高的严重性分数为9.8分(满分10分)。
以下是所有9个漏洞的概要,它们的识别号,以及它们的严重性分数。
CVE ID | 堆 | 描述 | 受影响的功能 | 潜在影响 | 严重度分数 |
CVE-2020-7461 | FreeBSD |
网络上的攻击者可以将假数据发送到DHCP客户端 | 信息压缩 | RCE | 7.7 |
CVE-2016-20009 | IPnet | 信息解压缩功能基于堆栈的溢出 | 信息压缩 | RCE | 9.8 |
CVE-2020-15795 | 核网 | DNS域名标签解析功能无法正确验证DNS响应中的名称 解析格式错误的响应可能导致写操作超出分配的结构的末尾 | 域名 | RCE | 8.1 |
CVE-2020-27009 | 核网 | DNS域名记录解压缩功能无法正确验证指针偏移值 解析格式错误的响应可能导致写操作超出分配的结构的末尾 | 信息压缩 | RCE | 8.1 |
CVE-2020-27736 | 核网 | DNS域名标签解析功能无法正确验证DNS响应中的名称 解析格式错误的响应可能导致写操作超出分配的结构的末尾 | 域名 | 拒绝服务 | 6.5 |
CVE-2020-27737 | 核网 | DNS响应解析功能无法正确验证各种长度和记录数 解析格式错误的响应可能会导致读取超出已分配结构的末尾 | 域名 | 拒绝服务 | 6.5 |
CVE-2020-27738 | 核网 | DNS域名记录解压缩功能无法正确验证指针偏移值 解析格式错误的响应可能导致超出分配结构末尾的读取访问 | 信息压缩 | 拒绝服务 | 6.5 |
CVE-2021-25677 | 核网 | DNS客户端无法正确随机化DNS事务ID(TXID)和UDP端口号 | 交易编号 | DNS缓存中毒/欺骗 | 5.3 |
* | NetX | DNS解析器中的两个功能无法检查压缩指针是否不等于当前正在解析的相同偏移量,从而可能导致无限循环 | 信息压缩 | 拒绝服务 | 6.5 |
从此表可以看出,并非所有的漏洞都与信息压缩有关。这些例外的漏洞是研究的副产品,可以和其他的漏洞连锁起来,扩大攻击的效果。
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合作)。
来源:bleedingcomputer