CVE-2026-29004BusyBox在commit 42202bf之前的版本中存在堆缓冲区溢出漏洞。该漏洞位于DHCPv6客户端(udhcpc6)的DNS_SERVERS选项处理逻辑中。由于`option_to_env()`函数对堆缓冲区的分配计算存在错误,网络邻近攻击者可发送包含恶意构造D6_OPT_DNS_SERVERS选项的DHCPv6响应包。利用此漏洞,攻击者可触发内存损坏,导致拒绝服务,或在未启用堆加固的嵌入式系统上执行任意代码。
该漏洞位于BusyBox源码的`networking/udhcp/d6_dhcpc.c`文件中,主要由`option_to_env()`函数的实现缺陷导致。该函数在解析DHCPv6响应包中的DNS服务器选项(D6_OPT_DNS_SERVERS)时,未正确验证输入数据长度与堆缓冲区大小的关系。当处理特制的选项长度时,函数会向过小的缓冲区写入过量数据,引发堆缓冲区溢出。由于许多嵌入式系统缺乏严格的堆保护机制(如ASLR或Stack Canaries),攻击者可利用此内存破坏漏洞覆盖返回地址或函数指针,从而劫持控制流,实现远程代码执行或导致系统崩溃。