搜索

Watt Toolkit 加速的隐私安全风险点

发布于 · 更新于

本地反代

很早我就开始使用 Watt Toolkit (那时候还叫 Steam++ )来加速访问 Github、 Steam 等网站。因为这款软件加速这些平台是使用本地反代加速,与那些加速器的原理不同。本地反代不需要中转服务器,只在本地对请求进行一些处理(比如隐藏 sni )来实现连接,本质上仍然是直连。

这不是非常的优雅吗? 而且也很安全? 因此我觉得这种方法真的是 fantastic ,(甚至还赞助了 Watt Toolkit

然而,事实真的有这么美好吗

安全隐患

根证书

其实我一开始翻源代码是担心自签证书的问题。如果它使用的是统一发放的证书,那么开发者甚至其他用户,只要能拿到我的流量数据(当然本地反代的情况下一般来说是拿不到的),就能解密得到所有原始数据。我觉得这多少是个风险点,应该检查一下源码是怎么实现的。检查发现它的证书是在本地随机生成密钥,并不是统一发放。所以这方面是没有什么问题的。

但是,得到了意外“收获”。

MITM 风险

我顺便让 AI 给我检查了一下加速的逻辑,确认一下它本地反代的逻辑是不是与我想象的一致。

然后发现,问题大了

AI 给我翻出了一个 ProxyType.ServerAccelerate 类型,说有这种类型的域名会走服务器中转流量。

??还有服务器中转???

我赶紧去详细研究了一下它这代码是怎么写的

ProxyType.cs
public enum ProxyType : byte
{
/// <summary>
/// 本地代理
/// </summary>
Local = 0,
/// <summary>
/// 启用重定向
/// </summary>
Redirect = 1,
/// <summary>
/// 直接成功
/// </summary>
DirectSuccess,
/// <summary>
/// 直接失败
/// </summary>
DirectFailure,
/// <summary>
/// 服务器加速
/// </summary>
ServerAccelerate,
}

从上面可以看到有多种 ProxyType , Watt 启动时会从一个 url 拉取加速网站列表,里面就是每个网站的相关参数

ServerAccelerate 是直接服务器明文中转,这显然是要 pass 掉的(嘶,其实也不一定,如果只是内容 CDN ,无用户数据,好像没什么大问题

大部分网站都是 Local 和 Redirect 类型,连接到下发的网址或ip
连接的实际站点理论上应该就是官方网站或者是CDN,这样才能通过 SSL 校验
但我不清楚这俩的 SSL 校验会校验原域名还是 Redirect 的域名,如果是后者也是不太行的) 不过其实不用考虑会校验哪个域名,因为我发现下发的网站配置几乎全都设置了 IgnoreSSLCertVerification!

所以可以说这些加速的网站全都可以被 MITM 中间人攻击,全都是不安全的。

推测代码这样写的原因

我觉得, Watt 这么写也有它的道理

要知道,我们这个本地反代的核心作用是剥离 sni 信息,但你不发 sni 信息的话,对面的响应证书可不一定是你要的网站

所以直接一刀切了?全部不验证 SSL ?

我认为应该还是有更好的解决方案的。目前正在研究中。

总之目前来看这个代码确实是没有恶意的,但安全隐患是有的。