据悉,uClibc库域名系统(DNS)组件中的一个漏洞影响了数百万的物联网设备。
全球工业网络安全领域领导者Nozomi Networks警告说,大量物联网产品使用的uClibc库域名系统(DNS)组件中存在漏洞,被追踪为CVE-2022-05-02。该漏洞还影响所有版本的uClibc-ng库的域名系统(DNS),uClibc-ng库是专门为关键基础设施部门路由器的通用操作系统OpenWRT设计的分支。
攻击者可以利用该漏洞发起DNS缓存中毒或DNS欺骗的网络攻击,并将受害者重定向到恶意网站而不是合法网站。
Nozomi Networks在公告中表示,该漏洞是由库生成的DNS请求中包含的事务ID可预测性引起的,这使得攻击者能够对目标设备发起DNS中毒攻击。
uClibc库被主要的供应商使用,包括Linksys、Netgear和Axis,以及Embedded Gentoo等Linux发行版。因为供应商尚未解决该问题,所以安全专家没有透露该漏洞的细节。
Nozomi的研究人员通过查看物联网设备在其测试环境中执行DNS请求的过程发现了这个问题。他们能够从Wireshark的输出中确定执行DNS请求的模式,事务ID首先是递增的,然后重置为0x2值,然后再次递增。请求的事务ID是可预测的,这种情况可能允许攻击者在某些情况下发起DNS中毒攻击。
研究人员分析了该可执行文件,发现创建DNS请求的问题存在于C标准库uClibc的0.9.33.2版本中。
Nozomi Networks还表示:“源代码审查显示,uClibc库通过调用位于源文件"/libc/inet/resolv.c "中的内部"__dns_lookup "函数来实现DNS请求。鉴于事务ID现在是可预测的,要利用该漏洞,攻击者需要制作包含正确源端口的DNS响应,并赢得它与合法DNS响应之间的竞争。该漏洞的可利用性完全取决于这些因素。由于该功能没有应用任何明确的源端口随机化,如果操作系统被配置为使用固定或可预测的源端口,它就很可能被轻松地利用。”
如果操作系统使用源端口的随机化,则利用该问题的唯一方法是通过发送多个DNS响应来暴力破解16位源端口号,同时赢得与合法响应之间的竞争。
Nozomi Networks总结道:“正如预期的那样,截至本博客发布时,该漏洞仍未被修补。维护者无法为该漏洞开发修复程序,他们希望能够获得帮助。自2022年1月以来,计算机紧急事件响应小组协调中心已向200多家受邀参与VINCE案例的供应商披露了该漏洞。”