CVE-2026-30872OpenWrt Project的mdns守护进程存在栈缓冲区溢出漏洞。攻击者可通过UDP 5353端口发送特制的IPv6反向DNS查询,利用match_ipv6_addresses函数中未验证长度的缺陷,导致栈溢出并可能实现远程代码执行。该漏洞影响24.10.6和25.12.1之前的版本。
该漏洞源于OpenWrt mdns守护进程在处理IPv6反向DNS查询时的安全缺陷。具体而言,当通过UDP 5353端口接收到针对.ip6.arpa域的PTR查询时,match_ipv6_addresses函数会被调用。该函数首先利用strcpy将域名从name_buffer复制到256字节的栈缓冲区中,紧接着尝试将反向IPv6请求解析并提取到一个仅有46字节(INET6_ADDRSTRLEN)的固定大小缓冲区内。关键的安全疏漏在于,程序在执行提取操作前,完全未对输入数据的长度进行边界检查。因此,远程攻击者可以精心构造一个长度超过46字节的特制DNS查询包发送至目标设备。这将导致数据写入时超出预设缓冲区边界,引发栈缓冲区溢出。通过控制溢出的数据,攻击者能够覆盖栈上的关键内存结构(如返回地址),进而改变程序执行流,最终在目标系统上实现远程代码执行。