VPN企业Mullvad经通报,发现在WSL2(Windows Subsystem for Linux 2)存在资料不受VPN保护,泄露到互联网上的漏洞。即便用户配置所有网络流量皆需使用VPN服务,网络流量还是可能未经VPN信道,直接流进互联网,Mullvad提到,他们目前还没不到到解决方案,且在其他VPN客户端软件上也有相同的情况。
WSL是微软在2016年推出的功能,是个可在Windows上执行Linux应用程序的环境,WSL提供Linux兼容的核心接口,允许在其上执行GNU用户空间,像是Ubuntu、openSUSE与Kali等Linux版本,在2019年的时候,微软更新发布WSL2新架构,在Windows中直接内置Linux核心,并且持续强化改进WSL2的功能,目前WSL2已经支持GPU与DirectX,开发者可以在WSL2上,使用GPU加速运算,而且WSL2还开始支持Linux GUI应用程序。
Mullvad收到回应,披露在WSL2中会泄露VPN流量的安全漏洞,Mullvad进一步查明,这个漏洞发生原因,是因为Linux访客的流量,会绕过Windows主机防火墙WFP,直接进到互联网中。由于来自Linux访客的网络流量,都会经过主机默认的路由不受WFP的检查,当VPN信道创建且运行,那Linux访客流量就会通过VPN发送而不会泄露,但是当应用程序错误或是断线等,在没有可用VPN信道的情况,WFP又无法拦截Linux访客网络流量,即便用户设置总是需要VPN选项,Linux访客虚拟机的流量,还是就会直接泄露到网络上。
Mullvad解释,问题发生在WSL2使用的Hyper-V虚拟网络,Hyper-V模拟以太网卡供流量传入与传出Linux访客,因为流量不经过主机防火墙,因此防火墙也无法像检查一般封包一样,检查Linux访客的网络封包。转发的封包都只会被视为以太网络影格(Ethernet Frame)格式资料,因此Mullvad提到,只要是使用Hyper-V进行网络连接,任何在Windows Sandbox或Docker下执行的访客,都可能发生类似的资料泄露。
Mullvad也对其他VPN企业的客户端进行测试,发现都会以同样的方式泄露资料,Mullvad提到,这并非只是Mullvad VPN的问题,VPN供应商都遇到相同的情况,因为微软实例Linux访客虚拟网络的方式,让保护其网络流量变得困难。
早在4月的时候,就有人发现这个问题了,有一位GitHub ID为fibu79的开发者,在微软WSL存储库中开了一个关于在WSL2使用VPN的问题,说明了WSL2的Linux访客网络流量,可能不受VPN保护的状况,不少开发者也附和遇到相同问题,但这个问题并没有被官方明确处理,有一些人通过改变系统配置,解决流量泄露的问题。Mullvad在8月曾接过一次回应,但因为当时没有正确重现漏洞,所以不知道问题所在,等到9月再次收到同样问题的回应,他们才成功重现这个问题,目前还在研究解决方案中。