在 Black Hat USA 2026 大会上,独立研究员 Malcolm Stagg 披露全新攻击类 NatJack,通过直接操纵 NAT 连接跟踪表实现 TCP 会话劫持、DNS 响应伪造、对外映射端口探测和 NAT 表耗尽拒绝服务。测试覆盖 13 家厂商的 32 款产品/配置,Windows、Linux、macOS 全部受影响。Linux 与 Windows 实现侧已分别获得 CVE-2026-63913 与 CVE-2026-56181 两个补丁,但 NatJack 根植于 RFC 规范中“同 NAT 终端天然互信”的设计假设,不存在完整修复方案。
事件概述
NatJack 并非针对单一厂商代码缺陷,而是对 1990 年代 NAT 设计假设的体系性利用。NAT 诞生初衷仅为缓解 IPv4 地址枯竭,规范默认同一网关下终端相互信任,不存在对连接跟踪表项的合法性校验。攻击者只需获得同一 NAT 边界内的访问权限——共享 Kubernetes 节点上的恶意容器、同一云宿主上的邻居 VM、企业办公网中的任意设备——即可在不被目标主机察觉的情况下干扰任意连接。
技术细节
四类核心攻击路径
- TCP 会话劫持:基于 RFC 1337 TIME-WAIT Assassination 思路,发送伪造 SYN+RST 序列使受害者活动 NAT 表项提前关闭,攻击者抢注释放的槽位接管会话;
- DNS 投毒:用伪造连接耗尽受害者的 NAT 表项,弹出待解析 DNS 条目,注入指向攻击者主机的伪造映射,再向受害者返回伪造 DNS 响应;
- 端口探测:通过探测 NAT 表状态推断受害者连接使用的源端口,为后续攻击提供侦察依据;
- NAT 表耗尽:以海量伪造流灌入连接表,挤占合法用户的新建连接,形成拒绝服务。
已分配的两个实现层 CVE
CVE-2026-63913(CVSS 8.2):Linux Netfilter conntrack 方向校验缺失。攻击者发送伪造 SYN 与无效序列号 RST 可强制活动 NAT 表项进入关闭态。修复内核版本 5.10.259 / 5.15.210 / 6.1.176 / 6.6.143 / 6.12.93 / 6.18.35 / 7.0.12 / 7.1,但研究者指出该补丁仅增加攻击复杂度,并未根除 NatJack 整体攻击面。
CVE-2026-56181(CVSS 8.3):Windows NAT 在 Hyper-V 中的源校验错误,受影响版本包括 Windows 11 24H2(< 26100.8875)、25H2(< 26200.8875)、26H1(< 28000.2525)以及 Windows Server 2025(< 26100.33158)。补丁主要面向 Azure Kubernetes Service 工作负载场景,更广义的 Windows NAT 暴露面仍未完整解决。macOS 目前尚无补丁。
影响评估
NatJack 打破了安全行业“NAT 即内网边界”长达二十年的认知。最易受威胁的场景包括:
- 共享 Kubernetes 节点:多租户容器共享同一宿主 NAT;
- 虚拟化与多租户云:邻居 VM 在同一 NAT 出口;
- VDI 与开发者虚拟化环境:未受信代码与生产流量同处一网关;
- 企业办公网:任意内部设备沦陷即可横向干扰关键会话。
截至 2026 年 8 月 7 日尚未发现 NatJack 在野利用证据,但概念验证代码已公开,自动化武器化窗口预计将快速缩短。TLS 加密可阻止攻击者读取劫持流量,但无法避免会话中断与 DNS 跳转。
修复建议
立即行动
- 部署 Linux 内核 5.10.259 / 5.15.210 / 6.1.176 / 6.6.143 / 6.12.93 / 6.18.35 / 7.0.12 / 7.1+ 稳定更新;
- Windows 11/Server 升级至最新累积更新,覆盖 CVE-2026-56181;
- 关键内部通信启用 TLS,对内部 DNS 启用 DoH/DoT 并使用固定解析器。
架构性加固
- 取消“共享 NAT = 可信边界”的旧假设,将不同安全等级的工作负载划分到独立网桥/VLAN/宿主;
- 在接入交换机启用 IP Source Guard,防止二层内的伪造包注入;
- 监控 NAT 表满载、连接异常重置事件,作为 NatJack 攻击的早期信号;
- macOS 环境下暂时限制未受信设备与关键会话共享同一 NAT 边界。