TCP/IP客栈:NAME:WRECK DNS协议误差

宣布时间 2021-04-13

0x00 误差概述

2021年04月13日 ,清静职员披露了TCP/IP客栈中DNS协议中统称为NAME:WRECK的9个清静误差 ,这些误差至少影响了1亿个Internet上运行的装备 ,攻击者可以使用这些误差使受影响的装备脱机或对装备举行控制。

 

0x01 误差详情

image.png


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误差窃取敏感数据、修改或使装备脱机以对制造行业中的政府或企业服务器、医疗机构、零售商或公司造成重大清静事故。

image.png

 

攻击者还可以使用这些误差改动住宅或商业场合的智能装备 ,以控制供温暖透风、禁用清静系统或改动自动照明系统。

image.png

 

研究职员在剖析上述TCP/IP客栈中的DNS时 ,剖析了该协议的新闻压缩功效。DNS响应数据包中包括相同的域名或部分域名的情形并不少见 ,因此它使用一种压缩机制来减小DNS新闻的巨细 ,这种编码不但应用在DNS剖析器中 ,它还应用在多播DNS(mDNS)、DHCP客户端和IPv6路由器通告中。

Forescout在其报告中诠释说 ,只管某些协议并未正式支持压缩 ,但该功效还保存于许多应用中。值得注重的是 ,并非NAME:WRECK中的所有误差都可以被使用来获得相同的效果。其中最严重的是远程代码执行误差 ,其最高评分为9.8(满分10分) ,9个误差如下表所示 ,并非所有误差都与新闻压缩有关:

CVE   ID

Stack

形貌

受影响功效

潜在影响

评分

CVE-2020-7461

FreeBSD


  dhclient
(8)的DHCP数据包中的选项119数据举行剖析时泛起界线过失

-网络上的攻击者可以将恶意制作的数据发送到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/

image.png