腾讯和清华的最新研究:利用“长度侧信道”绕过5G/4G/WiFi网络的加密
Author: Guancheng Li of Tencent Security Xuanwu Lab
在当今数字化时代,5G、4G和Wi-Fi等无线通信技术已成为我们日常生活的重要基础设施。这些网络普遍采用先进的加密协议,理论上能够有效保护用户通信安全。然而,近期由我们腾讯玄武实验室与清华大学陈建军老师团队在EuroS&P 2025上发表的研究成果LenOracle揭示了一个新的安全隐患:攻击者可能将空口数据帧(radio frame)长度信息作为侧信道,在不破解无线加密的情况下劫持加密网络中的TCP/UDP连接。我们在真实的商用LTE网络和Wi-Fi环境中进行了测试,成功在TCP场景下利用该攻击向受害设备注入了一条伪造的短消息,并在UDP场景下污染了受害设备的DNS缓存,展示了该攻击对关键网络服务的潜在破坏力。
这是怎么一回事呢?无线网络的加密协议虽然可以阻止攻击者在物理层窃听通信内容或篡改、注入消息,但在传输层,如果攻击者掌握了四元组信息(客户端IP、客户端端口、服务器IP、服务器端口)以及序列号(SEQ)和确认号(ACK),仍可以通过发送伪造四元组的数据包,将任意数据注入到相应的网络连接中。这些伪造的数据包会经过互联网路由,最终被调制为空口数据帧并传递到受害者设备,从而间接实现对无线信道的消息注入。在实际情况下,攻击者通常难以获取四元组和序列号等关键信息。而我们的研究发现,如果将空口数据帧的长度信息与网络地址转换(NAT)的工作机制以及TCP协议的固有特性结合,是可以逐步推断出目标连接的四元组(源IP、源端口、目的IP、目的端口)以及关键的协议状态信息(如序列号和确认号),从而实现对网络中TCP/UDP通信的劫持。
0x01 长度侧信道是什么?
侧信道攻击并不是直接破解加密算法,而是通过分析网络通信过程中产生的一些“副产品”——比如数据包的长度、传输延迟等——来间接推测出原本不应泄露的信息。
而我们提出的无线网络中的长度侧信道,其根本原因在于大多数无线协议采用的加密算法属于流密码(stream cipher)。流密码的一个重要特性是:加密前后的明文和密文长度完全一致。在实际通信中,经过加密的数据包会被封装成空口数据帧(radio frame)在无线信道中传输。尽管数据内容被加密,但无线监听者依然可以捕获这些帧,并通过分析每个帧的长度,从而间接获取原始明文数据包的长度信息。

0x02 长度侧信道为什么能在路径外劫持TCP和UDP连接
在网络通信中,无论是TCP还是UDP,一个连接都由四元组唯一标识:客户端IP、客户端端口、服务器IP、服务器端口。理论上,攻击者要实现路径外劫持,确实需要掌握这四项参数。不过在实际攻击场景下,服务器的IP和端口往往是已知或者在一个非常有限的集合内的,这有两方面原因:一方面,攻击者在发起攻击前通常会明确选择一个目标服务器;另一方面,许多服务(如DNS、Web服务器)在一个地区或应用中都会使用固定的服务器IP和端口,例如DNS常用地址8.8.8.8:53。因此,实际攻击中,攻击者的重点主要是在如何获取受害者的外部IP地址和其与服务器通信时使用的外部源端口号。
对于UDP协议,如果攻击者能够获知受害者的外部IP和源端口,并能进行源IP欺骗(即伪造源IP发送数据包),就有可能向该连接注入数据,这种攻击手法就是“路径外劫持(Off-path hijacking)”。对于TCP协议,除了四元组外,还需要准确获取序列号(SEQ)和确认号(ACK),否则伪造的数据包会被协议栈直接丢弃,因而劫持难度更高。

而我们的研究发现,攻击者可以借助无线信道中暴露的数据包长度等侧信道信息,逐步推测出受害者使用的源端口号,甚至进一步获取TCP连接的SEQ和ACK等参数,从而为劫持攻击创造条件。而受害者的外部IP地址,则可以通过如RCS协议漏洞等方式,在无用户交互的情况下被获取。
获取受害者的外部源IP
大多数家庭和企业网络都处于NAT(网络地址转换)环境下,内部IP不可见,外部IP通常是受害者所在的NAT IP。一种获取IP的方式是,利用RCS协议,向受害者手机发送一条指向攻击者服务器的预览图片链接的消息。这一消息会触发受害者向攻击者服务器发送一个GET请求,从而获取受害者的公网IP,用户在这个过程中无需任何操作。

此外,攻击者还可以利用地理定位信息和基站位置,结合运营商的IP分配规律,缩小公网IP的猜测范围。
利用长度侧信道获取受害者的外部源端口
确定公网IP后,下一步是获取NAT分配给受害者的外部端口。NAT通常会在一定范围内分配端口(如Linux常见区间32768-61000),但到底是哪一个端口,外部世界通常不可见。攻击者可以构造不同端口不同长度的数据包发送到受害者所在的外部NAT IP。只有匹配真实端口的包会被NAT转发,并在无线信道中出现加密帧,从而被攻击者捕获。通过分析在无线信道中出现的帧的长度特征,攻击者便可以获取受害者的外部端口号。

利用长度侧信道获取正确的SEQ,ACK
对于UDP协议,只要获得外部IP和端口,攻击者就能进行伪造劫持。而TCP协议更为复杂,除了四元组,还需要准确获取序列号(SEQ)和确认号(ACK),否则伪造的数据包会被直接丢弃。
此时,长度侧信道再次发挥作用。攻击者可以利用TCP协议的Challenge ACK机制,向服务器发送带不同序列号的伪造包。如果发送一个包,序列号/确认号刚好在在窗口内(In Window),目标机会回一个Challenge ACK包,如果序列号/确认号完全错了,直接丢弃包,观察受害者无线信道中是否出现固定长度的Challenge ACK帧。如果出现,说明猜测的SEQ/ACK在正确范围内。通过不断调整猜测范围,采用二分法等方式,最终可以精准获得TCP连接的有效SEQ和ACK,从而完全控制连接。

0x03 真实世界的攻击演示
我们展示了一种基于真实场景的攻击方法:通过劫持 RCS(又称 5G 消息)的 TCP 长连接,向目标注入任意伪造的消息。RCS 是一种基于 TCP 的 SMS 协议,通过劫持其长连接,攻击者可以向受害者发送任意伪造的短信。劫持 TCP 连接的过程大约需要 40 秒,成功劫持后,攻击者只需向连接中注入伪造的短信结构,即可使受害者接收到任意伪造的短信。

0x04 总结与安全提醒
这类攻击的本质在于:即便无线流量已加密,数据包的长度和发送时序等元信息依然会泄露关键信息。攻击者无需破解加密算法,仅通过分析加密帧的长度和协议特性,就能逐步还原出受害者的连接参数,进而实现远程劫持。之所以会出现长度信息泄漏,主要是因为无线协议普遍采用流密码,这导致加密前后的数据包长度完全一致,因此可以通过加入random padding从而在协议层直接修复这一问题,这种修复方式涉及协议栈的更新,成本较高。
不过,值得庆幸的是,如果应用层采用了额外的加密协议(如HTTPS、SSH),攻击者即便能够劫持连接,也无法注入有意义的数据内容,在一定程度上缓解了风险(但依然可能通过该方法重置连接)。此外,全球运营商应通过边界策略过滤伪造源地址的IP包,但值得一提的是,只要全球仍有任何一个ASN允许发送伪造源地址的数据包,这类攻击就无法彻底杜绝。