安全与隐私 · Clash 技术博客

Clash Party 内置 Sub-Store 风险怎么处理?

Clash Party 内置 Sub-Store 用户应核对后端版本。公开报告涉及 2.11.4–2.37.1;本文说明停用、更新至 2.38.0 以上和限制本机访问,并提供证据保留与安全回退步骤。

  • Clash Party
  • Sub-Store
  • 安全更新
  • 本地 API
  • CORS
本文目录

先确认公开报告覆盖什么

Sub-Store issue #634 的公开报告把受影响范围写为 Node 后端 2.11.4 至 2.37.1,并描述了过宽的跨来源访问与脚本处理能力组合后的风险。上游随后用提交 038745f 收紧默认 CORS、限制部分 Node 脚本操作并增加拒绝测试,2.38.0 的发布说明明确关闭该 issue。

截至 2026 年 9 月 12 日,Sub-Store 当前稳定版是 2.39.6。本文把 2.38.0 作为上游明确关闭 #634 的最低版本边界,并建议更新到当前稳定版;这不等于 2.38.0 为所有网络暴露增加了认证,也不能据版本号判断设备是否已经受到影响。

Clash Party issue #2134 是一条针对 v2.0.2 环境的用户报告,随后按项目安全报告流程由机器人关闭,贡献者建议更新 Sub-Store。Clash Party 可以独立更新内置后端,所以只看客户端版本无法确定正在运行的 Sub-Store 版本。

v2.0.2 源码把内置 Sub-Store 设为默认启用,但实际状态仍以本机设置和监听结果为准。没有打开过页面、隐藏入口或删除一条订阅,都不等于后端已经停用。

先把事实分开

看到的信息能得出的结论不能据此断言
Sub-Store 版本为 2.11.4 至 2.37.1落在公开报告范围,应停止暴露并更新设备已经被利用或感染
Clash Party 显示 v2.0.2需要继续核对内置后端所有 v2.0.2 安装使用同一后端版本
Sub-Store 已到 2.38.0 以上包含上游关闭 #634 的缓解任何网络来源都已获得鉴权保护
没有异常进程或弹窗暂未观察到明显症状旧后端继续运行没有风险
公开报告所描述的本地 Sub-Store 请求路径
  1. 不受信任的网页浏览器中打开的外部页面发起跨来源请求
  2. 浏览器来源检查旧版 Node 后端默认允许过宽的来源
  3. 本机 Sub-Store APIClash Party 启动的独立前后端服务
  4. 脚本处理能力订阅处理上下文可能执行脚本操作

2.38.0 收紧了默认来源范围并限制部分脚本操作,但 CORS 不是 API 鉴权;还应关闭局域网访问,无法确认版本时直接停用 Sub-Store。

核对前先停用 Sub-Store

如果 Clash Party 正在运行 Sub-Store,但你还不知道后端版本,先关闭不受信任的网页,不要寻找或运行公开利用代码。打开 Clash Party 的“设置 > Sub-Store”,关闭“启用 Sub-Store”;官方源码显示,这个动作会停止内置前端和后端服务。

同时确认“允许局域网访问”保持关闭。该选项打开时服务会绑定 0.0.0.0,局域网设备可直接访问;关闭时使用 127.0.0.1。公开报告包含浏览器页面访问回环地址的路径,所以只关局域网访问不能代替更新,但它能避免继续扩大网络暴露面。

Sub-Store 是订阅编辑、转换和管理工具,不是 Mihomo 核心本身。停用后,已经导入 Clash Party 的 Profile、策略组、系统代理和 TUN 通常仍可继续工作,只是不能继续使用 Sub-Store 页面处理订阅。

先形成可回退的安全状态

  1. 关闭不受信任的网页

    保留本文和项目官方页面即可,不测试任何来源不明的请求、脚本或所谓检测站。

  2. 关闭启用开关

    进入设置的 Sub-Store 区域,关闭“启用 Sub-Store”,等待前后端停止。

  3. 关闭局域网访问

    确认“允许局域网访问”未开启,后续重新启用时也只绑定 127.0.0.1。

  4. 重启并验证普通代理

    重新打开 Clash Party,使用现有 Profile 完成一次真实 HTTPS 请求,确认停用 Sub-Store 没有破坏日常代理。

记录实际后端版本与监听地址

准备更新时,先在“设置 > Sub-Store”确认使用的是内置后端还是自定义后端。内置模式由 Clash Party 启动本地 bundle;自定义模式会停止内置后端并连接用户填写的 URL,应用内更新不能替代外部部署自己的升级、监听限制和鉴权。

使用内置后端时,确保不受信任的网页已经关闭,再临时启用 Sub-Store,并保持该设置区的“允许局域网访问”关闭。进入 Sub-Store 页面使用“在浏览器中打开”,以界面给出的实际地址为准,不要假设每台设备都固定使用同一个端口。

Clash Party v2.0.2 源码显示,后端默认从 127.0.0.1:38324 开始寻找可用端口,若端口已占用会继续递增。打开后端根地址时,Sub-Store 的响应会在 data.version 中给出实际版本;只记录版本和地址,不提交脚本参数或进行利用测试。

若版本落在 2.11.4 至 2.37.1,应立即更新;若版本低于 2.11.4,虽不在该报告范围,也已经明显落后,应更新到当前稳定版;若页面打不开或版本无法确认,则回到停用状态,不要把“未知”当成安全。

先区分后端模式

当前模式谁负责运行正确处理
内置后端Clash Party 本机服务应用内更新、关闭 Sub-Store Allow LAN、核对本机版本
自定义后端用户填写的外部部署在部署端独立更新、限制监听并配置鉴权
不使用 Sub-Store不应有前后端服务关闭启用开关并在重启后验证停止

后端显示 2.11.4 至 2.37.1

属于公开报告范围,保持仅限本机并立即执行上游更新。

后端显示 2.38.0 或以上

已越过 #634 的官方关闭下限,继续核对当前稳定版和监听范围。

只知道 Clash Party v2.0.2

信息不足;同一客户端版本可能运行不同的 Sub-Store 后端。

浏览器地址不是 127.0.0.1

先停用服务,关闭 Allow LAN,再排查配置或其他监听者。

页面或版本响应无法打开

不要反复暴露服务,保持停用并从官方更新路径重试。

在 Clash Party 内更新 Sub-Store

下面的步骤只适用于 Clash Party 内置后端。Sub-Store 页面右上角有云形“检查更新”按钮;v2.0.2 源码显示,该入口会从 sub-store-org/Sub-Store 官方 Release 的 latest 下载后端与前端文件,完成后重启两项服务。

点击更新后等待完成提示,不在中途退出客户端,也不要同时手工覆盖应用目录中的 bundle。最低目标是 2.38.0,当前目标是 2026 年 9 月 11 日发布的 2.39.6;若未来已有更新稳定版,应以官方 Releases 为准。

更新 Mihomo 内核、刷新订阅或重新安装相同的 Clash Party 客户端,都不能替代核对 Sub-Store 后端。它是独立下载和运行的组件,必须在自己的页面完成更新并读取自己的版本号。

只走应用内的官方更新路径

  1. 保持本机监听

    确认 Allow LAN 关闭,并关闭其他不受信任的浏览器页面。

  2. 点击检查更新

    在 Sub-Store 页面点击右上云形按钮,等待下载、重启和完成提示。

  3. 重新读取版本

    再次使用页面给出的实际后端地址,确认 data.version 不低于 2.38.0。

  4. 更新失败就停用

    若下载、重启或版本核对失败,关闭“启用 Sub-Store”,不要降级或从第三方复制文件。

更新后验证版本、监听与停用开关

更新提示成功只是第一层验证。重启 Clash Party 后,再从 Sub-Store 页面读取实际后端地址和 data.version,确认版本没有回到旧值;同时确认地址使用 127.0.0.1,而不是局域网地址或 0.0.0.0。

然后关闭“启用 Sub-Store”,确认前端和后端页面不再可用,再用现有 Profile 完成一次真实 HTTPS 请求。这样可以同时证明停用开关确实停止独立服务,也证明普通代理并不依赖 Sub-Store 持续运行。

安全核验清单

  • 实际 Sub-Store 后端版本不低于 2.38.0,并已与当前官方稳定版核对
  • 重启 Clash Party 后版本仍保持新值
  • “允许局域网访问”关闭,界面给出的后端主机为 127.0.0.1
  • 关闭“启用 Sub-Store”后,前端与后端服务不再可访问
  • Sub-Store 停用时,现有 Profile、系统代理或 TUN 仍能完成真实请求
  • 使用自定义后端时,已经在外部部署端单独核对版本、监听与鉴权
  • 没有运行 PoC、未知脚本或第三方安全检测页面

怀疑受影响时先保留证据

版本落在报告范围不等于已经被利用。只有出现未知进程、异常网络连接、系统安全软件告警、配置或凭据被异常改动等证据时,才应把事件升级为可能的设备入侵;此时更新只能封堵后续入口,不能删除已经存在的程序或恢复泄露的凭据。

先停用 Sub-Store 并断开设备网络,记录 Clash Party 与 Sub-Store 版本、监听地址、告警时间和可疑现象。不要为了“清理”而立即删除日志、配置或未知文件,它们可能是判断影响范围的重要证据。

使用操作系统或企业已批准的安全工具做完整扫描。若订阅 URL、节点凭据、WebDAV、GitHub Token 或其他密钥曾进入该设备,应从一台可信设备让旧凭据失效并重新签发;分享日志前先制作脱敏副本。完整性无法确认时,从官方来源重新安装系统或客户端,并只恢复确认干净的配置。

事件响应最低动作

  • 已停用 Sub-Store 并限制受影响设备继续联网
  • 已记录版本、监听地址、时间线、告警与可疑连接
  • 原始日志和配置已保留,公开副本已脱敏
  • 已用可信的系统安全工具完成扫描
  • 可能暴露的订阅 Token 与云端凭据已在可信设备上轮换
  • 不能确认完整性时,没有把旧应用目录直接复制回新环境

更新失败时停用,不恢复旧后端

如果 2.38.0 以上版本导致某项订阅转换或脚本不再工作,不要为了恢复功能降级到 2.37.1 或更早版本。先关闭 Sub-Store,继续使用已经验证可用的 Clash Party Profile;需要恢复订阅时,从可信服务商重新取得原始链接或导入升级前的干净备份。

只有在新版本、Allow LAN 关闭且监听限于 127.0.0.1 的条件下,才重新开启 Sub-Store 复测。若某个第三方脚本仍必须依赖被限制的旧行为,应停止使用该脚本并联系维护者更新,而不是放宽整个本地 API。

可回退但不回到风险版本

  1. 关闭独立服务

    停用 Sub-Store,确认前后端已经停止。

  2. 恢复可用 Profile

    使用应用内仍可工作的配置,或导入升级前保存的干净副本。

  3. 验证日常代理

    固定一条已知可用节点,分别验证系统代理或 TUN 与真实请求。

  4. 等待兼容修复

    关注 Sub-Store 和相关脚本的官方更新,不恢复 2.37.1 或更早的 bundle。

以后按组件版本复核,不看客户端名称猜测

这次风险的核心对象是 Clash Party 启动的 Sub-Store Node 后端,不是 Mihomo 内核,也不是所有名为 Clash 的客户端。后续复核应同时记录 Clash Party 版本、Sub-Store data.version、Allow LAN 状态和实际监听地址。

官方 2.38.0 发布关闭了 #634,2.39.6 是本次检查时的当前稳定版;Clash Party #2134 仍只是用户报告。若上游以后发布新的安全公告、鉴权机制或 Clash Party 整合版本,应以新的官方 Release、提交和说明更新结论。

长期维护记录

记录项为什么需要何时复核
Sub-Store data.version判断独立后端是否达到修复下限每次应用内更新后
Allow LAN 与监听地址确认 API 没有扩大到局域网网络或设置变化后
Clash Party 版本理解界面和更新路径客户端升级后
官方 Release 与安全说明避免把用户报告写成官方结论看到新版本或新告警时

参考资料