INFRA:HALT在NicheStack中发现14个新的安全漏洞

NicheStack是一个TCP / IP网络堆栈通常用于世界各地数以百万计的操作技术(OT)设备,包括关键基础设施例如制造工厂、发电/输电/配电、水处理等。
JFrog的安全研究团队(前身为Vdoo),以及Forescout研究实验室,最近发现了14个新的安全漏洞影响NicheStack TCP/IP栈。这些漏洞使远程代码执行,拒绝服务,信息泄漏,TCP欺骗,或DNS缓存中毒.
本文将详细介绍这14个漏洞(我们将其命名为INFRA:HALT),并提供缓解这些漏洞的建议。
什么是NicheStack?
NicheStack是InterNiche Technologies于1996年开发的嵌入式系统常用的专有TCP/IP栈。2003年,NicheStack扩展了对IPv6的支持。
NicheStack作为其他TCP/IP协议栈的基础,也为oem厂商提供了不同的版本,包括意法半导体,飞思卡尔(NXP),阿尔特拉(英特尔)和微芯片.
NicheStack协议支持
以下是NicheStack目前支持的协议:

NicheStack分布
NicheStack是常用于OT设备在世界各地。例如,在PLC市场份额最大的西门子S7 PLC中使用。此外,根据我们的研究,我们发现在~200家设备供应商包括大多数顶级工业自动化公司,以及6400个运行NicheStack的设备实例Shodan搜索结果。
14个新的NicheStack安全漏洞
我们分析了两个版本的NicheStack:版本4.0.1的二进制样本(可通过传统的InterNiche网站公开获得)和版本3的源代码(可通过暴露嵌入式项目源文件的网站公开获得)。利用静态和动态专有技术,JFrog手动和自动地分析了二进制版本。
下表详细介绍了我们发现的所有14个新发现的漏洞。所有最新版本4.3之前的NicheStack版本,包括NicheLite,都会受到影响。
| CVE ID | 供应商ID | 描述 | 受影响的组件 | 的潜在影响 | CVSSv3.1得分 | |
| 2020 - 25928 | hccsec - 000002* | 解析DNS响应的例程没有检查单个DNS应答的“响应数据长度”字段,这可能导致OOB-R/W。 | DNSv4客户 | 远端控制设备 | ||
| 2021 - 31226 | hccsec - 000003 | 由于缺乏大小验证,在解析HTTP POST请求的代码中存在堆缓冲区溢出。 | HTTP服务器 | 远端控制设备 | ||
| 2020 - 25767 | hccsec - 000007 | 解析DNS域名例程不检查压缩指针是否指向报文边界,导致OOB-R。 | DNSv4客户 | DoS Infoleak |
||
| 2020 - 25927 | hccsec - 000009 | 解析DNS响应的例程没有检查报头中指定的查询/响应数是否与DNS报文中可用的查询/响应数据相对应,从而导致OOB-R。 | DNSv4客户 | DoS | ||
| 2021 - 31227 | hccsec - 000004 | 由于不正确的有符号整数比较,在解析HTTP POST请求的代码中存在堆缓冲区溢出。 | HTTP服务器 | DoS | ||
| 2021 - 31400 | hccsec - 000014 | TCP带外紧急数据处理函数会调用一个panic函数,如果指向带外紧急数据结束的指针指向TCP段的数据之外,这会导致DoS(无限循环或抛出中断,具体取决于NicheStack版本)。 | TCP | DoS | ||
| 2021 - 31401 | hccsec - 000015 | TCP报头处理代码不处理IP长度(报头+数据)的长度。对于精心制作的IP数据包,每当通过从总IP数据包长度中减去报头长度来计算IP数据长度时,就会发生整数溢出。 | TCP | App-dependent | ||
| 2020 - 35683 | hccsec - 000011 | 解析ICMP数据包的代码依赖于未检查的IP有效负载大小值(从IP报头中提取)来计算ICMP校验和。当配置的IP报文负载小于IP报文头大小时,可能会导致ICMP校验和计算越界。 | ICMP | DoS | ||
| 2020 - 35684 | hccsec - 000012 | 解析TCP数据包的代码依赖于未检查的IP有效负载大小值(从IP报头中提取),以在TCP校验和计算函数中计算TCP有效负载的长度。当IP负载大小设置为小于IP报头大小时,TCP校验和计算功能可能会读取越界。低影响的写出界也是可能的。 | TCP | DoS | ||
| 2020 - 35685 | hccsec - 000013 | TCP isn以可预测的方式生成。 | TCP | TCP欺骗 | ||
| 2020 - 27565 | hccsec - 000017 | 每当接收到未知的HTTP请求时,就会调用panic。 | HTTP | DoS | ||
| 2021 - 36762 | hccsec - 000016 | TFTP包处理函数不能确保文件名以空结束,因此对文件名的后续调用strlen()可能会读取超出协议包缓冲区的边界。 | TFTP | DoS | ||
| 2020 - 25926 | hccsec - 000005 | DNS客户端没有设置足够的随机事务id。处理步骤 | DNSv4client | DNS缓存中毒 | ||
| 2021 - 31228 | hccsec - 000006 | 攻击者可以通过预测DNS查询的源端口,发送伪造的DNS响应报文作为DNS客户端请求的有效应答。 | DNSv4客户 | DNS缓存中毒 | ||
CVSS分数颜色编码:
-中等或高
——关键
缓解建议
全面解决所有NicheStack安全问题的最佳方法是升级到NicheStack v4.3.
如果这是不可能的-这里有一些实用的方法来减轻漏洞:
- 运行开源脚本由Forescout研究实验室用于检测运行NicheStack的设备。随着最新的发展,脚本会不断更新新的签名。
- 限制和隔离易受攻击的设备,直到它们被修补。根据下面的列表进行缓解。
| CVE ID | 受影响的组件 | 缓解建议 |
| 2020 - 25928 2020 - 25767 2020 - 25927 2021 - 31228 2020 - 25926 |
DNSv4客户 | 如果不需要禁用DNSv4客户端,或者阻止DNSv4流量。由于存在一些便于DNS欺骗攻击的漏洞,使用内部DNS服务器可能是不够的(攻击者可能能够劫持请求-响应匹配)。 |
| 2021 - 31226 2021 - 31227 |
HTTP服务器 | 如果不需要,禁用HTTP服务器,或者将HTTP连接列入白名单。 |
| 2021 - 31400 2021 - 31401 2020 - 35684 2020 - 35685 |
TCP | 对于CVE-2021-31400, CVE-2021-31401和CVE-2020-35684,我们建议监控流量中的畸形IPv4/TCP数据包并阻止它们。例如,在正确配置的防火墙后面有一个易受攻击的设备就足够了。对于CVE-2020-35685,我们建议使用我们在Forescout中概述的建议数量:杰克报告,只要是可行的。 |
| 2020 - 35683 | ICMPv4 | 监控ICPMv4畸形报文的流量并阻断。 |
- 监控设备供应商发布的补丁,并创建业务连续性计划,直到完全修复完成。该补丁由收购InterNiche Technologies的HCC Embedded公司发布要求.
- 要注意试图利用这些漏洞或其他漏洞的恶意数据包。
下一个步骤
我们打算以透明的方式与受影响的供应商合作。我们的目标是帮助他们识别受影响的产品,并为社会提供建议。hth华体会最新官方网站JFrog和Forescout提供了详细的研究技术报告在这里.
JFrog和Forescout的研究团队将交付8月19日的联合网络研讨会,以提供有关漏洞的更多信息、如何发现漏洞以及如何减轻漏洞。了解更多信息和注册点击这里.
JFrog和Forescout也将在Hack In The Box (HITB)新加坡八月晚些时候。
有关向边缘交付安全软件的更多信息以及JFrog DevOps平台安全特性的最新更新-点击这里.