日前,网络安全初创企业SentinelLabs的研究人员发现,KCodes NetUSB内核模块曝出了一个名为CVE-2021-45388的高危远程代码执行(RCE)漏洞,多家厂商的数百万路由器设备使用该内核模块。一旦该漏洞被成功利用,远程威胁分子就可以在内核中执行代码。
NetUSB是什么?
一些路由器厂商在设备上添加了USB端口,好让用户可以共享联网的打印机和USB驱动器。NetUSB是KCodes开发的一种内核模块连接解决方案,允许网络中的远程设备与直接插入到路由器的USB设备进行联系。
图1 NetUSB示意图(图片来源:KCodes)
SentinelLabs在该内核模块中发现了一个易受攻击的代码段,该代码段没有验证内核内存分配调用的大小值,从而导致了整数溢出。“SoftwareBus_fillBuf”函数可能随后将这个新区域用于恶意越界写入(out-of-bounds write),写入来自由攻击者控制的网络套接字的数据。
当遇到如下所述限制时,该漏洞可能很难被利用:分配的对象始终位于内核堆的kmalloc-32 slab中,该结构的大小必须小于32个字节才能装得下;所提供的大小仅用作最大接收大小,而不是精确的大小;该结构必须可以从远处来喷射;该结构必须拥有可以被写入覆盖的部分,那样才能用作目标(比如Type-Length-Value结构或指针)。
然而,易受攻击的NetUSB模块有16秒的超时时间来接收请求,因而可以更灵活地利用设备。SentinelLabs在其报告中警告:“虽然这些限制使威胁分子很难编写利用该漏洞的代码或工具,但我们认为这并非不可能,因此使用Wi-Fi路由器的人可能需要更新路由器固件。”
漏洞影响及应对
据了解,目前多家一线路由器厂商都使用了易受攻击的NetUSB模块,包括网件、普联、Tenda、EDiMAX、友讯和西部数据。目前尚不清楚哪些型号受CVE-2021-45388的影响,但一般建议使用厂商积极支持的产品,它们会定期收到安全固件更新。
由于该漏洞影响众多厂商,SentinelLabs在2021年9月9日先向KCodes发出了警报,后来在2021年10月4日提供了PoC(概念证明)脚本,以验证当天发布的补丁。相关设备厂商在11月收到了告知,固件更新则定于2021年12月陆续发布。其中,网件公司在2021年12月14日发布了安全更新,以修补受影响的产品。
图2 网件公司采用的修复方法
据网件公司2021年12月20日发布的安全公告显示,其已修复的路由产品包括D7800固件版本1.0.1.68、R6400v2固件版本1.0.4.122、R6700v3固件版本1.0.4.122。同时,网件公司实施的解决办法是向“supplied size”(所提供的大小)函数添加新的大小检查,防止越界写入。
【本文是51CTO专栏作者“安全牛”的原创文章,转载请通过安全牛(微信公众号id:gooann-sectv)获取授权】
文章来源:
https://www.bleepingcomputer.com/news/security/kcodes-netusb-bug-exposes-millions-of-routers-to-rce-attacks/