Linux 2的Windows子系统下的Linux泄露VPN流量

2020-10-01 03:25:08

我们发现,当您在WSL2(Windows Subsystem For Linux2)下运行Linux时,您的Internet流量可能会泄露。

我们的调查显示,这些泄漏也发生在其他VPN软件上,尽管我们目前还没有解决方案,但我们觉得有必要解决这个问题。当你读到这篇文章时,我们正在研究这个问题的解决方案。

最近,我们收到一份报告,说WSL2下的Linux有漏洞。我们的调查得出结论,来自Linux来宾的流量绕过了WFP的所有正常层(Windows主机上的防火墙),直接进入网络。因此,应用程序在防火墙中所做的所有拦截操作都会被忽略。

来自Linux来宾的网络流量始终从主机的默认路由传出,而不会被WFP的普通层检查。这意味着如果有VPN通道启动并运行,Linux来宾的流量将通过VPN通道发送,没有任何泄漏!但是,如果没有活动的VPN通道,就像应用程序断开、连接、重新连接或阻塞(错误发生后)时的情况一样,那么Linux来宾的流量将在常规网络上泄漏出来,即使启用了“始终需要VPN”。

WSL2使用Hyper-V虚拟网络,这就是问题所在。Hyper-V虚拟以太网适配器在来宾之间传递流量,而不会让主机的防火墙以与检查正常数据包相同的方式检查数据包。转发的(NAT)数据包在WFP(OSI第2层)的较低层中仅显示为以太网帧。如果客户配置为使用Hyper-V进行联网,则在Windows Sandbox或Docker下运行的任何来宾也可能发生此类泄漏。

我们测试了来自竞争对手的其他几个VPN客户端,发现它们都以相同的方式泄漏。因此,这不是Mullvad VPN的具体问题,而是一个行业范围的问题,目前还没有人或极少数人解决过这个问题。微软为Linux客户实现虚拟网络的方式使其很难得到适当的保护。

我们目前正在研究是否以及如何阻止Hyper-V虚拟交换机上不需要的流量。当我们有任何关于这个问题的更多信息时,我们会提供更多的信息。同时,要知道,如果您在WSL2下使用Linux,或者在Hyper-V网络下使用任何其他来宾/容器,来宾的流量可能会在连接和重新连接阶段以及没有隧道启动和运行的所有状态中泄露。

这是2020年8月12日通过线报首次向我们报道的。在第一次迭代中,这只由我们的支持团队处理,但由于当时在测试机器上安装了不幸的软件组合,他们无法重现泄漏。因此,该问题从未转发给开发人员。然后,在2020年9月17日,由同一个线人再次报告给我们,并立即传递给开发人员,他们能够验证这是一个我们应该认真对待的问题。我们现在正在研究一个解决方案。