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

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

NicheStack分布
NicheStack是常用于OT设备世界各地。例如,它被用于西门子S7 PLC,它拥有最大的PLC市场份额。此外,根据我们的研究,我们发现使用~200家设备供应商包括大多数顶级工业自动化公司,以及6,400个运行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响应报文将被接受为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报文流量,并阻断异常ICPMv4报文。 |
- 监控设备供应商发布的补丁,并创建业务连续性计划,直到完全修复完成。由收购了InterNiche Technologies的HCC Embedded公司发布的补丁已经上市要求.
- 请注意试图利用这些漏洞或其他漏洞的恶意数据包。
下一个步骤
我们打算以透明的方式与受影响的供应商合作。我们的目标是帮助他们识别受影响的产品,并为社区准备咨询。hth华体会最新官方网站可以从JFrog和Forescout找到详细的研究技术报告在这里.
JFrog和Forescout研究团队将提供服务8月19日的联合网络研讨会,以提供有关漏洞、如何发现漏洞以及如何缓解漏洞的更多信息。获取更多信息并注册点击这里.
JFrog和Forescout也将在Hack In The Box (HITB)新加坡8月下旬。
有关将安全软件交付到边缘的更多信息以及JFrog DevOps平台安全特性的最新更新-点击这里.
