-
Notifications
You must be signed in to change notification settings - Fork 12
Description
V2Ray 项目在最近的几天内收到了数个隐匿性能方面的漏洞报告。这些漏洞都在被提出的数个小时内被解决(除 mKCP 修复暂缓)并发布相关更新。您可以升级到最新版本 v4.23.4 来获取最大程度的保护。我们支持和鼓励寻找并提出 V2Ray 各个方面漏洞的人。我们希望 V2Ray 的用户不要指责或者攻击为我们提供安全审计的人士。
可以使用
如果你已经升级到 V2Ray v4.23.4,并且没有开启 TLS 的 AllowInsecure 选项,以下配置组合不会泄露识别信息:
VMess over Websocket with TLS
VMess over TLS
VMess over HTTP/2 (使用 TLS 的 HTTP/2,并非 h2c)
Shadowsocks(AEAD) over Websocket with TLS
谨慎使用
以下配置组合可能会在攻击者位于网络路径上时可能会使攻击者获得的协议数据的一些统计学属性,但是这些信息不足以用于确定服务器上部署了这些协议
VMess over TCP (还在继续改进中)
并不建议
以下配置组合不建议用于穿越被攻击者控制的网络:
任何协议 + SOCKS5
任何协议 + HTTP 代理
任何协议 + HTTP 伪装
任何协议 + mKCP + 任何伪装
漏洞认定和影响
我们把这次几个VMess实现的漏洞归纳为隐匿性欠缺考虑,原因为在项目形成初期(2017~2018年),网络流量审查防火墙机制并未迭代至目前带有回放探测机制的级别。VMess 的实现过于注重性能,未能考虑停止读取和关闭连接会泄露协议处理分支走向的问题。
但是区别于信息安全性漏洞,隐匿性欠缺的结果可能是服务器地址被屏蔽,对用户通信的机密性能、信息完整性能没有影响。但是作为一个作为翻墙软件被用户记忆和相信的程序,我们认为这些问题属于安全性问题,会在被报告后立刻进行修复( mKCP 修复暂缓)。
如果您将 VMess 流量通过其他隧道(如 IPLC , Kcptun )发送,那么这个配置的隐蔽性取决于这个隧道。
我们会继续为 V2Ray 提供安全更新并加入新功能。因此并不需要对这些漏洞过度担心,只需要及时更新程序就可以避免被发现和封锁。毕竟 V2Ray 程序的更新速度肯定是显著快于 GFW 等识别程序的更新速度的。
为了更快的获取未来的更新,建议所有用户以及客户端脚本开发者自 https://github.com/v2fly/v2ray-core/releases 下载更新数据。
误传和理清
此前有传播的说法是启用 AllowInsecureCiphers 选项,如今此方案不再需要。
不管 AllowInsecure 还是 AllowInsecureCiphers,都是跳过安全检查或降低安全标准的一个不应当在任何不可控传输通路中用于生产的选项,不存在所谓的“开了更安全”。
技术细节
TLS 协议的相关漏洞
V2Ray 之前会根据算法是否安全选择对应的加密参数,在更新后加密参数会保持和 Go 语言默认值相同,阻止位于网络路径上的攻击者识别客户端类型。
VMess 协议的相关漏洞
VMess 的漏洞在于服务器在读取分析协议内容必要的数据之后就会立刻关闭连接。因此根据认证信息错误,认证信息正确但是连接密钥重复,认证信息密钥不重复等情况会在读取定长的数据后关闭连接。通过判断程序读取多少字节的数据后关闭连接,可以判定分析出程序的内部处理分支以识别监听程序类型。
我们通过根据 UUID 程序性生成读取长度和读取长度抖动,并在判断连接合法性后继续读取数据直到读取到生成的读取长度为止消除了此特征。
假 HTTP 头伪装的相关漏洞
V2Ray 中的 HTTP 头伪装的 HTTP 实现与标准 HTTP 实现不一致,已经在最新的更新中通过进一步逼近 HTTP 标准库的实现来进一步提高相似度,抵抗主动探测。在修复后的 HTTP 头伪装协议仍然和 HTTP 协议一样没有加密,无法阻止位于网络路径上的攻击者使用特化工具进行识别,只能用于对抗运营商对于未知流量的 QoS ,限速和劣化。
mKCP 的相关漏洞
mKCP 目前未实现加密功能,无法阻止位于网络路径上的攻击者使用特化工具进行识别,只能用于对抗运营商对于的 QoS ,限速和劣化。
尾声
V2Ray 的开发和发布仓库已经移动至 https://github.com/v2fly/v2ray-core ,请开发者以此仓库的内容为基准,并将PR发布至这里。
V2Ray 项目组在过去的一段时间内经历了一些较大的变动。但是我们会坚守在这里,带着最开始的目标,继续和你一起去看那边的世界。
V2Ray/V2Fly