目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2026-79981— DNS 解析器 UDP 源端口复用漏洞

一分钟漏洞结论

影响对象
zephyrproject zephyr
利用判断
尚无明确在野利用证据,仍需结合暴露面评估
建议动作
优先检查厂商安全公告和参考链接中的修复版本;无法立即升级时,限制受影响服务暴露并加强监测。

在 中的 DNS 存根解析器(stub resolver)在初始化解析器上下文时(调用路径为 → → ),会为每个配置的 DNS 服务器绑定一个 UDP 套接字。由于本地端口被设置为 0,系统栈仅会在初始化时一次性选择一个临时端口。随后, 函数在发送后续所有查询时均复用该套接字,不再重新绑定,因此源端口在整个解析器上下文的生命周期内保持恒定,仅每轮查询的 16 位事务标识符( ,由 随机生成)发生变化。然而,RFC 5452 第 9.2 节明确要求源端口和事务标识符两者均需变化;在源端口固定的情况下,路径外的攻击者

CVSS 6.5 · Medium
获取后续新漏洞提醒 登录后订阅

一、 漏洞 CVE-2026-79981 基础信息

漏洞信息

对漏洞内容有疑问?看看神龙的深度分析是否有帮助!
查看神龙十问 ↗

尽管我们使用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。神龙努力确保数据的准确性,但请您根据实际情况进行核实和判断。

Vulnerability Title
DNS resolver reuses a single UDP source port for all queries, easing off-path answer spoofing
来源: CVE Program / CVE List V5
Vulnerability Description
The DNS stub resolver in subsys/net/lib/dns/resolve.c binds one UDP socket per configured server when the resolver context is initialised (dns_resolve_init_locked() -> register_dispatcher() -> dns_dispatcher_register()), with the local port left at 0 so the stack picks an ephemeral port exactly once. dns_write() then sends every subsequent query from that same socket without re-binding, so the source port is constant for the lifetime of the resolver context while only the 16-bit transaction identifier (ctx->queries[i].id, drawn with sys_rand16_get()) varies per query. RFC 5452 section 9.2 requires both to vary; with a fixed port, an off-path attacker has to guess only the identifier. The stable port is cheap to learn. Any single observed query reveals it permanently, and it can also be found by probing the ephemeral UDP range: subsys/net/ip/connection.c answers unmatched unicast UDP with an ICMP port-unreachable, so the resolver's socket is the one port in that range that stays silent. Acceptance of a reply is decided solely by get_slot_by_id() matching the transaction identifier and a CRC-16 of the queried name — the reply's source address is never checked (dispatcher_cb() does ARG_UNUSED(addr)), so forged answers need not even be spoofed to appear to come from the configured server; they only need to reach the resolver's port. An attacker with UDP reachability to the device (same LAN, Wi-Fi or mesh segment, or a globally routable device address) can therefore flood answers for a predictable query name across the 16-bit identifier space during a query window and race the legitimate server. A win makes the application resolve an attacker-chosen address, and with CONFIG_DNS_RESOLVER_CACHE enabled the forged record is retained for its attacker-chosen TTL. The attack still requires winning that race, and applications that validate TLS certificates for the resolved endpoint are largely protected. The fix draws a fresh local port before each query to a server that has nothing outstanding: dns_randomize_source_port() unregisters the dispatcher, closes and reopens the socket, and re-registers it bound to port 0 so the system selects a new port, raising the per-query guessing space from roughly 16 to roughly 31 bits. Multicast DNS and LLMNR are excluded because their ports are protocol-fixed. The behaviour is controlled by CONFIG_DNS_RESOLVER_RANDOMIZE_SOURCE_PORT (default y).
来源: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:N
来源: CVE Program / CVE List V5
Vulnerability Type
使用不充分的随机数
来源: CVE Program / CVE List V5

受影响产品

厂商 产品 影响版本 CPE 订阅
zephyrproject zephyr 1.8.0 ~ 4.5.0 -

二、漏洞 CVE-2026-79981 的公开POC

# POC 描述 源链接 神龙链接
AI 生成 POC 高级

未找到公开 POC。

登录以生成 AI POC

三、漏洞 CVE-2026-79981 的情报信息

请登录查看更多情报信息。

CVE-2026-79981 补丁与修复 (1)

同批安全公告 · zephyrproject · 2026-10-23 · 共 7 条

CVE-2026-79982 8.8 HIGH USB 蓝牙 HCI 传输越界写入漏洞
CVE-2026-79977 8.2 HIGH Zephyr WireGuard 远程隧道劫持漏洞
CVE-2026-79979 7.8 HIGH ARM64 用户线程访问重用物理帧漏洞
CVE-2026-19741 7.5 HIGH OpenThread 默认 PSKd 凭证泄露漏洞
CVE-2026-79980 5.6 MEDIUM DHCPv4 可预测事务 ID 导致网关和 DNS 被篡改漏洞
CVE-2026-79978 3.6 LOW ADXL345 驱动 RTIO 流读取越界写漏洞

IV. Related Vulnerabilities

V. Comments for CVE-2026-79981

暂无评论


发表评论