圈小蛙

Clash Verge曝出本地提权漏洞,请尽快升级

重要等级:高
影响范围:≤ 2.2.4-alpha
受影响平台:MacOS / Linux / Windows

漏洞概述:

Clash Verge Rev 项目中存在严重的本地提权漏洞,影响 Mac、Linux 和 Windows 平台。在 Mac 和 Linux 系统上,攻击者可以利用此漏洞将权限提升至 root;在 Windows 系统上,可提权至 SYSTEM 级别。该漏洞影响当前最新发布版本 2.2.4-alpha 及之前的所有版本。问题源于服务管理机制中的权限控制不当。

风险描述:

Clash Verge Rev 存在的本地提权漏洞,允许本地低权限用户通过特定方式获取系统最高权限(MacOS/Linux 下为 root,Windows 下为 SYSTEM)。攻击者一旦成功提权,可绕过操作系统的安全边界,执行任意代码、篡改系统配置、持久化植入恶意程序,甚至完全接管受影响设备。

漏洞细节:

Clash Verge Rev安装服务调用 install_service 函数,此函数先获取程序工作目录,后调用指定文件名的外部程序来完成服务安装

因此可以替换目录中的 install_service 文件,即可执行自定义的逻辑。函数仅在主程序为admin/root权限时成功执行,并且继承主程序的权限。另外后续调用的程序在windows上不会显示任何窗口,因为已经硬编码为 CREATE_NO_WINDOW 标识

函数所在源码目录
src-tauri/src/core/service.rs

风险提示:

此程序系 clash-verge 系统服务核心组件,会启动Web服务。代码逻辑位于 clash-verge-service/src/service/mod.rs,监听127.0.0.1,端口硬编码为33211。接收“start_clash”等路由请求,参数包含“bin_path”“config_dir”等。
当接收到路由为“start_clash”的请求时,会将body中的参数传入 start_clash 函数(逻辑位于/src/service/core.rs),最终传递至 spawn_process(/src/service/process.rs)根据 bin_path 启动一个子进程。

可能的风险:没有鉴权,任何程序可以通过请求127.0.0.1:33211/start_clash 来启动任何二进制程序,只要在测试流程中(test_config_file 函数)返回正常的exit_code即可。

处置建议:

  1. Windows 平台:通过“服务管理器”打开系统服务,找到并禁用 Clash Verge 服务,以阻止其在高权限下运行。
  2. Linux 平台:使用 systemctl 命令停止并禁用 clash-verge-service 服务
  3. MacOS 平台:在“系统设置”中,进入“登录项”(后台权限自启动管理),手动移除或禁用名为 "won fen" 的自启动项,防止程序在后台以高权限自动运行。

补充说明:

  1. 当前 Clash Verge Rev 开发团队已收到漏洞报告,并已定位问题原因,正在着手修复。
  2. 漏洞发现者尚未公开披露漏洞细节,暂未存在广泛传播的利用代码或攻击案例,但建议用户提前采取缓解措施,降低潜在风险。

紧急修复:

1、在 systemd 配置文件模板中限制守护进程和后续启动的子进程的权限,并且指定 NoNewPrivileges=true 限制获取新的权限

2、检查目标文件的文件名是否为指定的文件名 verge-mihomo 和 verge-mihomo-alpha,在 linux 平台上检查是否为符号链接

3、macos上检查目标文件的签名

windows 平台上的实现依然存在风险,并且建议服务实现合并进主程序,使用命令行参数区分启动模式,以防注册服务时被替换为其他程序

Exit mobile version