CVE-2021-45608:NetUSB RCE漏洞影响数百万路由器 - 嘶吼 RoarTalk – 网络安全行业综合服务平台,4hou.com

CVE-2021-45608:NetUSB RCE漏洞影响数百万路由器

ang010ela 漏洞 2022-01-19 11:45:00
227280
收藏

导语:NetUSB RCE漏洞影响数百万路由器。

NetUSB是KCodes开发的产品,允许网络中的设备与连接在路由器上的USB设备进行交互。比如,可以与打印机进行交互。这一过程要求计算机中的驱动能够通过kernel模块与路由器通信。研究人员在NetUSB中发现一个远程代码执行漏洞,漏洞CVE编号为CVE-2021-45608。

NetUSB授权给了大量的厂商使用,包括:

Netgear

TP-Link

Tenda

EDiMAX

DLink

Western Digital

因此该漏洞影响全球数百万的设备,而且该漏洞的利用可以远程实现。

NetUSB.ko Internals

用于初始化连接的握手如下所示:

微信图片_20220119100735.jpg

握手后,会执行用于命令分析的while循环,代码如下:

微信图片_202201191007351.jpg

SoftwareBus_fillBuf 与recv的处理方式类似,都用到buffer和buffer大小,会用从socket读取的数据来填充buffer。

漏洞分析

命令0x805f在函数 SoftwareBus_dispatchNormalEPMsgOut中会达到以下代码:

微信图片_202201191007352.jpg

Kernel模块中有漏洞的代码部分

代码会从远程PC处取回4字节的内容。然后加上0x11,并用作kmalloc中的size值。因为提供的size值并没有经过验证,因此加上0x11后可能会引发整数溢出。比如,0xffffffff的大小在加上0x11会变成0x10。

然后分配的区域可以通过去引用和SoftwareBus_fillBuf函数来使用和写入:

微信图片_202201191007353.jpg

越界写

从最后一次对SoftwareBus_fillBuf的调用来看,填充的大小可以用作从远程socket读取的最大值。从之前的例子来看,大小0xffffffff可以用作发送给recv的大小。

漏洞补丁

建议的修复方案

在用用户提供的size值来分配内存之前,研究人员建议进行一个整数溢出检查:

if(user_supplied_size + 0x11 < 0x11) return;

因为该漏洞存在于不同种类路由器的第三方组件中,修复该漏洞的唯一方式就是更新路由器固件。

Netgear给出的更新固件中,就是加入了一个新的size检查:

微信图片_202201191007354.jpg

Netgear给出的补丁

本文翻译自:https://www.sentinelone.com/labs/cve-2021-45608-netusb-rce-flaw-in-millions-of-end-user-routers/如若转载,请注明原文地址
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论

 
本站4hou.com,所使用的字体和图片文字等素材部分来源于原作者或互联网共享平台。如使用任何字体和图片文字有侵犯其版权所有方的,嘶吼将配合联系原作者核实,并做出删除处理。
©2022 北京嘶吼文化传媒有限公司 京ICP备16063439号-1 本站由 提供云计算服务