数十年来,网络地址转换(NAT)一直是大型网络中分配IP地址的默认方式,主要用于应对IPv4地址短缺问题。

NAT的基本前提是私有地址保持私密,但这一假设如今可能已不再完全成立。在2026年美国黑帽大会上,独立安全研究员、Synack红队成员Malcolm Stagg公开披露了NatJack攻击类别——该攻击能够操纵NAT连接跟踪表。

与受害者共享NAT边界的攻击者,可以劫持活跃连接、污染DNS响应并强制发起拒绝服务攻击,而无需借助旧式二层攻击所需的IP欺骗或广播域访问权限。此次研究共通知了13家厂商,测试覆盖32款产品及配置,生成95份报告,每一款被测实现均对NatJack的部分或全部技术存在漏洞。

Stagg并非有意寻找NAT缺陷,而是偶然发现了这一问题。他告诉《Network World》:"我完全是意外碰上这个攻击的。我注意到有时候收到的响应与我发送的数据包不符,这说明NAT表内部正在发生某种损坏。"

NAT从未被设计为安全控制机制

NAT诞生于20世纪90年代初,最初只是IPv4地址耗尽问题的权宜之计,允许多台设备共享一个公网IP地址,并基于对等端之间相互信任的假设运行。

Stagg表示:"我认为根本原因在于部分RFC规范不够完善,仅基于网络中对等端相互信任的假设来定义行为。"

NAT此前也曾遭受过攻击。安全研究员Samy Kamkar于2010年在DEF CON 18和黑帽大会上披露了NAT Pinning技术,这是一种早期操纵NAT端口行为的手法。十年后,他与Armis研究人员合作于2020年和2021年相继披露了NAT Slipstreaming,该技术滥用应用层网关(ALG)连接跟踪机制,但需要受害者访问恶意网站。上述漏洞均已修复。

NatJack与之不同:它直接操纵NAT表,无需ALG,也无需受害者执行任何操作,受害者只需有一条通过同一NAT的活跃连接即可。

该漏洞的影响不止于二层网络。VLAN分段和交换端口隔离均无法阻止此攻击,因为攻击针对的是三层和四层的共享NAT基础设施,而非本地广播域。该漏洞已在Windows、Linux和macOS上得到证实,尽管三者并不共享NAT代码库,这表明问题根源是共同的设计假设,而非孤立的代码缺陷。

NatJack的四种攻击技术

NatJack涵盖四种不同技术,均建立于NAT表跟踪连接方式的同一漏洞之上。

TCP连接劫持:攻击者利用伪造数据包强制受害者连接进入关闭状态,再将产生的表项替换为指向攻击者的条目。Stagg发现的RFC 1337 TIME-WAIT消除机制使这一过程只需数个数据包即可完成,而无需等待标准连接超时。

DNS响应污染:该技术拦截并篡改通过NAT传输的UDP DNS响应,在受害者毫不知情的情况下重定向其域名查询。

拒绝服务:攻击者耗尽NAT表本身的资源,导致共享该NAT的所有设备均无法正常联网。

连接端口识别:攻击者确定NAT为某条活跃连接分配的端口号,该信息可为其他三种攻击技术提供支持。

厂商反应不一

Stagg按规范流程进行了漏洞披露,但各厂商的反应差异悬殊,从正式发布补丁到直接拒绝承认不等。

Linux内核安全团队最初驳回了该报告,甚至将其定性为"完全无稽之谈"。Stagg表示这一回应令他措手不及:"得到这样的反馈让我有些意外,也有些沮丧。"

最终,应微软请求,Linux内核在Azure Kubernetes Service的支持需求推动下完成了修补,对应漏洞编号为CVE-2026-63913。微软自身影响Hyper-V的Windows NAT漏洞则被分配了CVE-2026-56181。

其他厂商拒绝将相关发现归类为安全漏洞。思科产品安全事件响应团队(PSIRT)表示:"这些报告反映的是NAT在设计层面的局限性,而非安全漏洞。针对Cisco Secure Firewall和Cisco IOS XE产品,已有文档记录的缓解措施,可防范此类问题中的大多数乃至全部情形。"

苹果公司也持类似立场,其产品安全团队表示:"我们认定该行为反映的是传输层的已知局限性,而非漏洞。现代安全模型本就假设本地网络可能存在敌意,这也是我们持续依赖TLS等端到端加密机制的原因。"

Stagg指出,加密虽然能在一定程度上削弱NatJack的危害,但并不能彻底消除风险。"加密在这里很有帮助,因为攻击者即使劫持了连接,也无法在该连接上明文收发数据。但攻击者仍然可以针对并终断这些连接。"

缓解建议

即便没有完整的补丁可用,网络安全专业人员仍可采取以下措施降低风险。Stagg给出了如下建议:

监控入侵指标:关注NAT表是否接近或达到满载状态、宽端口范围内的TCP或UDP数据包洪泛、同一IP地址出现在两个物理位置,以及异常的SYN或RST数据包序列。

启用源IP保护:在路由器或防火墙上开启IP Source Guard等保护机制,以阻断伪造数据包。

隔离不受信任流量:将不受信任的用户放置在独立子网或VLAN中,并将每个客户端的连接数上限控制在约1万以内。

禁用宽松连接模式:在支持的设备上关闭宽松连接跟踪、端口保留和端点无关映射功能。

限制容器网络访问:禁止不受信任的容器和Kubernetes工作负载访问网络,避免以root权限运行,并移除默认能力集。

隔离云端工作负载:避免将不受信任和受信任的工作负载置于同一NAT网关之下,并为无服务器工作负载使用专用IP。

Stagg补充道:"其中一种攻击变体在攻击者与受害者位于不同子网的情况下仍然有效。"

Stagg表示,NatJack带来的深层启示远不止于某个单一补丁。

"大量网络都容易受到这类攻击,你不能始终依赖现有的二层隔离措施。当你依赖历史设计决策时,那时的威胁模型和现在可能已大相径庭。因此,有必要重新审视这些设计假设,评估是否需要根据新的威胁模型作出相应调整。"

Q&A

Q1:NatJack攻击是什么?它和以前的NAT攻击有什么区别?

A:NatJack是一类能够直接操纵NAT连接跟踪表的攻击技术,由安全研究员Malcolm Stagg在2026年黑帽大会上披露。与此前的NAT Pinning和NAT Slipstreaming不同,NatJack不需要依赖应用层网关(ALG),也不需要受害者执行任何操作,受害者只需有一条通过同一NAT的活跃连接即可遭受攻击。此外,该攻击无需IP欺骗或广播域访问权限,影响范围覆盖Windows、Linux和macOS系统。

Q2:NatJack漏洞具体有哪些攻击方式?

A:NatJack包含四种主要攻击技术:一是TCP连接劫持,通过伪造数据包强制关闭受害者连接并接管;二是DNS响应污染,拦截并篡改受害者的DNS查询结果;三是拒绝服务攻击,通过耗尽NAT表使共享该NAT的所有设备断网;四是连接端口识别,获取NAT为活跃连接分配的端口号,为其他攻击提供信息支持。

Q3:面对NatJack攻击,普通企业和网络管理员该怎么办?

A:在没有完整补丁的情况下,可采取以下措施降低风险:监控NAT表使用率及异常流量;启用IP Source Guard防止数据包伪造;将不受信任的用户隔离到独立子网或VLAN;关闭宽松连接跟踪和端口保留等功能;限制容器和Kubernetes工作负载的网络访问权限;云环境中不受信任与受信任的工作负载应使用不同的NAT网关。同时,使用TLS等端到端加密可有效降低数据泄露风险。

Networkworld