-
Notifications
You must be signed in to change notification settings - Fork 4k
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
修复socks5密码可以被绕过的漏洞 #3371
修复socks5密码可以被绕过的漏洞 #3371
Conversation
我按视频里确实复现了xray有这个问题 这个也确实可以拦截非法请求并且在日志输出 |
幸好看了下,600 秒太短了,而且这样改有点影响性能 服务端设了密码时,sync.Map 存一下来源 ip 就行了,无 timeout 服务端没设密码时,绕过这个新增的机制,不影响绝大多数场景下(本地、内网 socks5)的性能 |
|
|
反正 *ray 的实现都不标准,简单加一个 IP 无 timeout,确保大聪明们开在公网的 socks5 不会轻易被人扫去转发 UDP 就行
|
好了 改成sync.Map了( |
|
还有,公网上 UDP 乱飞的,AtError() 会造成大量无用日志,改成最次要的 AtDebug() 了 |
UDPFilter 无 timeout,有个小问题是有心者可以用大量 IPv6 地址非正常地不断 Add, |
我还真没考虑过这个也会被其他udp流量影响 |
|
|
还想到一件事,Socks5 的标准 UDP Associate 是客户端开 TCP 告知自己这边要用的 UDP IP 和端口,那么我们这里的实现是可以在这个 IP 不为空时把这个 IP 加进白名单,但我觉得没有必要,因为实践中会留空(未知公网的 IP 和端口),而且客户端那个 IP 能发 UDP 就应当能发 TCP 来认证,否则有点异常,并且我们不希望客户端甚至不需要大量 IP 就可以乱塞白名单, |
Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
虽然这个漏洞无关痛痒不过多少是个安全漏洞 还是想办法修了
不改变现有的UDP处理结构(UDP还是听在TCP同端口)