插图:MirageC/Getty Images
概述
研究人员开发了一种针对几乎所有虚拟专用网络(VPN)应用的攻击手段,迫使它们将部分或全部流量发送和接收至加密隧道之外,从而使其受到窥探或篡改的威胁。这种被称为“TunnelVision”的攻击基本上削弱了VPN的核心目的,即将进出互联网的流量封装在加密隧道中,并隐藏用户的IP地址。
TunnelVision攻击的工作原理
研究人员认为,当VPN连接到一个敌对网络时,这种攻击会影响所有VPN应用。他们指出,除了用户的VPN运行在Linux或Android上外,几乎没有防止此类攻击的方法。TunnelVision的效果是“受害者的流量现在被解密,并直接通过攻击者进行路由”。攻击者可以读取、丢弃或修改泄露的流量,而受害者仍然保持与VPN和互联网的连接。
攻击机制
此攻击通过操控分配IP地址给试图连接本地网络的设备的DHCP服务器实现。一个被称为选项121的设置允许DHCP服务器覆盖默认路由规则,这些规则将VPN流量通过本地IP地址发送到启动加密隧道。通过使用选项121将VPN流量路由到DHCP服务器,攻击者将数据转发到DHCP服务器本身。
研究人员解释道:
我们的技术是在与目标VPN用户相同的网络上运行一个DHCP服务器,并将我们的DHCP配置设置为使用自身作为网关。当流量到达我们的网关时,我们使用DHCP服务器上的流量转发规则将流量传递到合法网关,同时对其进行监听。
路由控制
我们使用DHCP选项121在VPN用户的路由表上设置路由。我们设置的路由是任意的,如果需要,我们还可以设置多个路由。通过推送比大多数VPN使用的/0 CIDR范围更具体的路由,我们可以创建优先级更高的路由规则,从而覆盖VPN创建的虚拟接口的路由。我们可以设置多个/1路由,以重建大多数VPN所设置的0.0.0.0/0全部流量规则。
推送路由还意味着网络流量将通过DHCP服务器的相同接口发送,而不是虚拟网络接口。这一预期功能并未在RFC中明确说明。因此,对于我们推送的路由,流量不会通过VPN的虚拟接口加密,而是通过与DHCP服务器通信的网络接口传输。作为攻击者,我们可以选择哪些IP地址通过隧道发送,哪些地址通过与DHCP服务器通信的网络接口发送。
防御措施与建议
尽管Android是唯一完全免受此攻击的操作系统,但对于所有其他操作系统,仍然没有完整的修复方案。Linux系统上的设置可以最小化影响,但即便如此,TunnelVision仍然可以利用侧信道进行目标流量的去匿名化和拒绝服务攻击。网络防火墙也可以配置为拒绝与物理接口的进出流量。这种补救措施存在两个问题:
- 连接到不信任网络的VPN用户无法控制防火墙。
- 这打开了与Linux缓解措施相同的侧信道。
最有效的修复方案
最有效的解决方案是在虚拟机内运行VPN,该虚拟机的网络适配器不处于桥接模式,或者通过移动设备的Wi-Fi网络将VPN连接到互联网。来自Leviathan Security的研究人员Lizzie Moratti和Dani Cronce的研究提供了更详细的信息。
结论
TunnelVision攻击揭示了VPN在面临特定网络环境时的脆弱性。用户在选择VPN时,应该考虑其安全性,尤其是在连接到不受信任的网络时。确保使用强大且更新的VPN服务是保护个人隐私和数据安全的关键。
注意: 在选择VPN服务时,请务必选择提供强大安全功能和持续更新的产品。