NAME:WRECK DNS漏洞影响超过1亿台设备
2021-04-20
来源:关键基础设施安全应急响应中心
安全研究人员最近披露了九个漏洞,这些漏洞影响了至少1亿台设备,这些漏洞可以在设备上运行流行TCP / IP网络通信堆栈中的域名系统协议的实现。
研究人员目前将这些漏洞统一命名为NAME:WRECK,攻击者可以利用这些漏洞使受影响的设备脱机或对其进行控制。
这些漏洞是在广泛的TCP/IP协议栈中发现的,这些协议栈运行在从高性能服务器和网络设备到监控和控制工业设备的操作技术(OT)系统等各种各样的产品上。
四个TCP / IP堆栈中的漏洞
NAME:WRECK的发现是物联网企业安全公司Forescout和以色列安全研究小组JSOF的共同努力结果,它影响了DNS在以下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的一部分,用于医疗、工业、消费、航空航天和物联网设备。
根据Forescout的说法,在假设但可行的情况下,攻击者可以利用NAME:WRECK漏洞通过窃取敏感数据、修改或离线设备进行破坏,对政府或企业服务器、医疗保健设施、零售商或制造业企业造成重大损害。
攻击者还可能篡改住宅或商业场所的关键建筑功能,以控制供暖和通风,禁用安全系统或篡改自动照明系统
NAME:WRECK漏洞
研究人员分析了上述TCP / IP堆栈中的DNS实现,着眼于协议的消息压缩功能。
DNS响应数据包多次包含相同域名或一部分域名的情况并不少见,因此存在一种压缩机制来减小DNS消息的大小。
不仅仅是DNS解析器从这种编码中受益,而且它还存在于多播DNS (mDNS)、DHCP客户端和IPv6路由器通告中。
Forescout在一份报告里解释说,尽管某些协议并未正式支持压缩,但该功能还存在于许多实现中。发生这种情况是由于代码重用或对规范的特定理解。
研究人员指出,实施压缩机制一直是一项艰巨的任务,特别是自2000年以来发现了十多个漏洞。
必须注意的是,并非所有NAME:WRECK都可以被利用来获得相同的结果。其中最严重的潜在影响是远程执行代码,最高严重性得分被计算为9.8(满分10分)。
以下是九个漏洞的标识号和严重性得分的摘要。
如上表所示,并非所有漏洞都与消息压缩有关。这些例外是研究的副产品,可以与其他例外联系起来以扩大攻击的影响。
另一个例外是CVE-2016-20009。该漏洞最初由Exodus Intelligence于2016年发现,但并未获得跟踪号。尽管该产品不再维护(报废),但今天仍在使用。
Forescout要求Wind River申请CVE,但该公司已经几个月没有采取任何行动。因此,该公司向Exodus Intelligence提出了同样的要求,该漏洞最终于2021年1月获得了一个标识符。
利用单个漏洞的攻击者可能无法取得很大的攻击效果,但通过将它们组合在一起,可能会造成严重破坏。
例如,攻击者可以利用一个漏洞将任意数据写入易受攻击的设备的敏感存储位置,将另一种漏洞注入到数据包中,然后将再利用第三个漏洞将其发送给目标。
Forescout的报告深入探讨了有关技术利用的技术细节,该技术如何利用该公司在开放源代码TCP /IP堆栈中发现的NAME:WRECK漏洞和AMNESIA:33集合中的漏洞,成功地导致成功的远程代码执行攻击。2020年12月08日,Forescout实验室公布了4个开源TCP/IP协议栈中被统称为AMNESIA:33的33个漏洞。这些漏洞的严重性已经超出了常规安全范围,并且一直延伸到开发级别。AMNESIA:33会影响DNS、IPv6、IPv4、TCP、ICMP、LLMNR和mDNS等7个不同的组件,其影响包括远程代码执行、拒绝服务、信息泄漏、DNS缓存中毒等。
该公司还讨论了多个实现漏洞,这些漏洞在DNS消息解析器中不断重复,称为反面模式(anti-pattern),以下是导致NAME:WRECK漏洞发生的原因:
1.缺少TXID验证,随机TXID和源UDP端口不足;
2.缺乏域名字符验证;
3.缺少标签和名称长度验证;
4.缺少NULL终止验证;
5.缺少记录计数字段验证;
6.缺乏域名压缩指针和偏移量验证;
NAME:WRECK的修补程序可用于FreeBSD,Nucleus NET和NetX,并且如果修补程序涉及到受影响的产品,则可以防止漏洞利用。
因此,现在由设备供应商来将更正应用于仍可以更新的产品。但是,由于存在多个障碍,因此该过程的成功率不太可能达到100%。
首先,操作员需要确定在受影响的设备上运行的TCP / IP堆栈。这并不总是一项容易的任务,因为有时连设备供应商也不知道。
另一个障碍是应用补丁,在许多情况下,由于没有集中管理,因此需要手动安装该补丁。除此之外,关键设备无法在脱机中更,所以实际上不可能达到100%的补丁率。
更糟糕的是,研究人员发现新固件有时会运行不受支持的RTOS版本,该版本可能存在已知漏洞,例如,CVE-2016-20009。这是非常令人担忧的,因为假设新固件不容易受到攻击,可能会导致网络风险评估中的严重盲点。
但是,安全工程师可以使用一些缓解信息来开发检测DNS漏洞的签名:
1.发现并清点运行易受攻击的堆栈的设备;
2.实施分段控制和适当的网络安全检查;
3.关注受影响的设备供应商发布的补丁;
4.配置设备依赖内部DNS服务器;
5.监控所有网络流量中是否有恶意数据包;
此外,Forescout还提供了两个开放源代码工具,这些工具可以帮助确定目标网络设备是否运行特定的嵌入式TCP / IP堆栈(Project Memoria Detector)以及检测类似于NAME:WRECK的漏洞。