Vproxy易受零DOS攻击的漏洞CVE-2025-54581
VProxy 是个高性能 HTTP(S) 中转服务器,支持多种中转协议和高级特性,是简单易用多平台代理客户端,保护隐私与权利,畅游互联网。
一、基本情况
VProxy是一个零依赖负载均衡器和SDN虚拟交换机,作为一款无需依赖的负载均衡器和SDN虚拟交换机,项目仅需Java 22即可顺利运行。
栋科技漏洞库关注到vproxy受影响版本中存在容易受到零DOS攻击的漏洞,该漏洞现已被追踪为CVE-2025-54581,漏洞的CVSS评分7.5。
二、漏洞分析
CVE-2025-54581漏洞存在于2.3.3及以下版本中,该漏洞的存在可能导致服务器崩溃,从而导致拒绝服务,该漏洞现在2.4.0版本中已修复。
从不受信任的数据从用户控制的HTTP代理授权标头中提取并传递给Extension::try_from,然后流入parse_ttl_exxtension,被解析为ttl值。
如果攻击者提供的TTL为零(例如,使用“configureUser-TTL-0”等用户名),模运算“timestamp%TTL”将导致除零恐慌并导致服务器崩溃。
存在漏洞的代码如下:
vproxy/src/extension.rs
Lines 173 to 183 in ab304c3
/// `Extensions::None`.
#[inline(always)]
fn parse_ttl_extension(s: &str) -> Extension {
if let Ok(ttl) = s.parse::<u64>() {
let start = SystemTime::now();
let timestamp = start
.duration_since(UNIX_EPOCH)
.map(|d| d.as_secs())
.unwrap_or(rand::random());
let time = timestamp - (timestamp % ttl);
三、POC概念验证
1、下载并运行最新版本的vproxy
2、发送一个cUrl请求,如下所示,根据需要调整地址和端口:cUrl-x“http://test-ttl-0:test@127.0.0.1:8101" https://google.com
3、等待指示“代理连接中止”的cUrl错误
4、查看vproxy服务器的日志
5、观察到vproxy服务器因除零恐慌而崩溃
由此导致的崩溃使代理服务器在重置之前无法使用,该漏洞由Black Duck的研究人员报告,具体归功于David Bohannon(dbohanon)。
四、影响范围
vproxy <= 2.3.3
五、修复建议
vproxy >= 2.4.0
六、参考链接
