浅谈一下Shadowsocks和VMess的安全性

首先,这些是纯个人观点,本人虽然从事IT相关工作,但算法并非专业方向。所以本文观点,仅供参考,如果有错误,也希望有大佬指正。

本人大概去看了一下Shadowsocks和VMess的Github Issues。其中,关于安全性的问题主要有两类:探测重放

首先聊一下探测。探测顾名思义就是可以通过发送特定数据包到你的代理服务器,从而判断出你的服务器上运行着SS或者VMess。关于这类的问题,SS和VMess都曾今存在,先把Issue链接放出来:
vmess协议设计和实现缺陷可导致服务器遭到主动探测特征识别(附PoC)
需要注意的是,这个漏洞目前已经修复。
关于VMess协议,能看到的比较关键的漏洞就这一个,并且是20年就已经被报告,目前的版本应该都没有问题。

关于Shadowsocks的问题,我主要看到两个:
Shadowsocks AEAD 加密方式设计存在严重漏洞,无法保证通信内容的可靠性
首先,这是一个目前状态仍为Open的Issue,但是在SS2022中已经得到了修复。
这个漏洞会导致什么样的后果呢?如果你通过SS访问http的网站,那可能会发现访问的网站开始答非所问。如果是HTTPS,将有可能被作为确定你是否在使用Shadowsocks的一种探测手段。

shadowsocks redirect attack exploit
这一个漏洞,就相对来说更严重了,首先说一下修复方法,就是使用AEAD Cipher,如AES-256-GCM。
这个漏洞可能会导致访问http网站的数据包直接被解密,而https网站的数据包则会暴露访问的网站域名。
最后,这是一个已修复的漏洞。


总结一下,我自己还是比较倾向于使用Shadowsocks,主要是简单,并且目前版本没有明显的安全漏洞。
另外,其实使用任何软件都是有安全风险的,只要你有足够的价值。
比如,VMware就曾今出现过虚拟机穿透的漏洞,你正搁虚拟机里反党呢,宿主机就被安装上了后门。
再比如,VeraCrypt也曾发现过安全漏洞。
这么看,双虚拟机是不是也并没有想象的那么安全了呢?
所以,我个人感觉纠结SS还是V2ray根本没什么必要,毕竟当你真正成长到像编程随想那样的大反贼,瞄准你的可能就是一堆未公开0day了。
哦对,shadowsocks redirect attact exploit这个漏洞,最初是由奇虎的一位研究员发现的,他们能发现第一个,手上就可以留着第二个第三个,VMess也是同理。

写到最后我自己都开始怕了。
5
分享 2022-05-31

7 个评论

总结得不错。防范主动探测,可以用随机化数据包长度的方法,并避免数据包含有特定未加密或可以篡改的结构。防范重放攻击,需要记录先前数据包的指纹,并与新数据包比对,同时使用依赖于时间的密钥生成办法。

shadowsocks 协议现阶段还是安全的,但 VMess 在一些领域做得更好,例如使用依赖于时间的密钥生成办法。

我在开发翻墙软件 mieru 的时候仔细研读过这些漏洞,并在设计协议时避开了这些坑。如果对这个项目有兴趣,欢迎使用。

项目地址 https://github.com/enfein/mieru
ss的aead问题我感觉并没有完全修复,反而成了后遗症,我之前换了日本线路想上日服网飞,但它给我跳的港服就很干😅
重放的安全问题一般都是重复造轮子导致的。防探测和伪装感觉在tcp协议的基础上已经不太好精进了。udp天生的无状态按理说更适合做梯子,可是现在好多运营商给udp胡乱丢包就很无解。再加上福建泉州现在试运行的白名单机制,如果扩大到全国后很让人头疼。梯子做到现在感觉已经不光是科学问题而是社会博弈。
>>ss的aead问题我感觉并没有完全修复,反而成了后遗症,我之前换了日本线路想上日服网飞,但它给我跳的...

那是你的服务器ip没有被奈飞ip信息库准确识别导致的
>>那是你的服务器ip没有被奈飞ip信息库准确识别导致的

谢谢指点
Ss和vmess两者都是属于比较简单的协议,至于加密算法都是使用的公开算法,如AES chacha 20等等,v2ray客户端也是早就弃用了不安全的加密算法,目前只支持带身份认证的加密算法。
如果不怕性能衰减完全可以套娃,先用加密算法对数据包进行加密然后再将加密后的数据包封装到TLS中
Valkyrie_HO 新注册用户
已隐藏

要发言请先登录注册

要发言请先登录注册