Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于 v4.23.2 前固定 TLS 密码套件潜在的特征识别风险 #2518

Closed
nicholascw opened this issue May 31, 2020 · 1 comment
Closed

关于 v4.23.2 前固定 TLS 密码套件潜在的特征识别风险 #2518

nicholascw opened this issue May 31, 2020 · 1 comment

Comments

@nicholascw
Copy link
Contributor

@nicholascw nicholascw commented May 31, 2020

出于该改动可能有部分兼容和安全等影响,开此新置顶 issue 用作通知。原 issue 虽然已经解决,但可能近期仍有部分讨论故移动至 v2ray/discussion

TL;DR: 正在使用 TLS 和 WebSocket 功能的用户且担心使用环境中有潜在的指纹识别风险的,应当升级 TLS 客户端侧到 v4.23.2 或更高版本。

“漏洞”到底“漏”了什么?

客户端代码中使用了一个固定的 TLS 密码套件列表进行握手,这个固定列表可能在 V2Ray 客户端发送 TLS 握手包时被防火墙用作识别 V2Ray 客户端的特征。

“漏洞”存在多长时间?

v2ray-core 项目在 2018 年中的版本(v3.23.1)中引入了 TLS 底层配置的功能,此后这个列表便一直存在于代码中。2019 年的版本(v4.18.1)中因为加入 TLS 1.3 的支持,列表增加了一些项目。

目前处理方法?

Golang 标准库的 crypto/tls 也在活跃的维护当中,已经有完善了密码套件的选择机制,标准库会根据运行的硬件平台性能选择适当的密码套件顺序。

新版本(v4.23.2+)去掉列表,设为空值(nil),由 Golang 底层处理。

后续改进?

进一步避免指纹被侦测的另外一个思路是把 TLS 配置成跟常见浏览器一致(注:浏览器不同版本的 TLS 指纹都有所区别)。目前有项目 (如 tlsfingerprint.io) 在关注这个问题。

对 V2Ray 项目而言,这属于功能性加强,会在后续版本中引入由 uTLS 库提供的伪装指纹功能。

@nicholascw nicholascw pinned this issue May 31, 2020
@v2ray v2ray locked as resolved and limited conversation to collaborators May 31, 2020
@nicholascw
Copy link
Contributor Author

@nicholascw nicholascw commented Jun 3, 2020

see #2542.

@nicholascw nicholascw closed this Jun 3, 2020
@nicholascw nicholascw unpinned this issue Jun 3, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant