安全与隐私 · Clash 技术博客

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

Clash Party 内置 Sub-Store 风险报告涉及 2.11.4–2.37.1。核对后端版本,停用并更新至 2.38.0 以上,限制本机访问;疑似异常时保留证据,勿启用风险版本。

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

遇到内置订阅工具的风险报告,先确认自己是否真的需要继续开启它。客户端版本和后端版本分别变化,不能只看一次应用更新;已经导入的配置通常仍可使用,停用订阅处理服务并不等于清空当前节点。

Clash Party 内的 Sub-Store 后端,需要独立核对安全版本

Sub-Store 用于编辑、转换和管理订阅,不是 Mihomo 核心。停用后,用已经导入 Clash Party 的 Profile 验证策略组、系统代理和 TUN 是否仍能工作;通常不受影响,停止的是 Sub-Store 页面里的订阅处理功能。

Clash Party 可以独立更新内置后端,不能凭客户端版本判断 Sub-Store 是否安全。Clash Party #2134 是 v2.0.2 环境的用户报告,贡献者建议更新 Sub-Store,并未给出维护者确认的风险结论。

Sub-Store issue #634 的公开报告涉及 Node 后端 2.11.4 至 2.37.1,2.38.0 发布说明明确关闭该问题。截至 2026 年 9 月 23 日,当前稳定版为 2.41.0,建议更新至此版或后续已核实稳定版。修复不等于所有网络访问都有认证,版本号也不能证明设备从未受影响。

v2.0.2 源码默认启用内置 Sub-Store。是否正在运行,要看本机开关与监听地址;没打开页面、隐藏入口、删除订阅或没有弹窗,都不能证明已经停用。版本未知时,按下一节关闭服务,再用本机实际地址核对。

公开报告所描述的本地 Sub-Store 请求路径
  1. 不受信任的网页浏览器中打开的外部页面发起跨来源请求
  2. 浏览器来源检查旧版 Node 后端默认允许过宽的来源
  3. 本机 Sub-Store APIClash Party 启动的独立前后端服务
  4. 脚本处理能力订阅处理上下文可能执行脚本操作

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

版本未知时,在“设置 > Sub-Store”关闭启用与局域网访问

如果 Clash Party 正在运行 Sub-Store,但你还不知道后端版本,先关闭不受信任的网页,不要寻找或运行公开利用代码。打开“设置 > Sub-Store”,在开关仍可见时先关闭“允许局域网访问”,再关闭“启用 Sub-Store”,停止内置前后端。已经停用时,不为修改隐藏的开关重新启用服务。

“允许局域网访问”开启时绑定 0.0.0.0,局域网设备可直接访问,关闭时使用 127.0.0.1。报告也涉及网页访问本机回环地址,所以仅关闭局域网访问不能替代更新。重新启动应用后,用现有 Profile 完成真实 HTTPS 请求,确认普通代理仍可用。

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

准备更新时,先在“设置 > 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,虽不在该报告范围,也已经明显落后,应更新到当前稳定版;若页面打不开或版本无法确认,则回到停用状态,不要把“未知”当成安全。

后端显示 2.11.4 至 2.37.1

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

后端显示 2.38.0 或以上

已达到 #634 中官方说明的版本要求,仍需核对当前稳定版和监听范围。

只知道 Clash Party v2.0.2

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

浏览器地址不是 127.0.0.1

先停用服务,关闭 Allow LAN,再查配置或其他正在监听的程序。

页面或版本响应无法打开

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

长期维护记录

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

在 Clash Party 内更新 Sub-Store

以下步骤只适用于 Clash Party 内置后端。Sub-Store 页面右上角有云形“检查更新”按钮。

v2.0.2 源码显示,它分别从 sub-store-org/Sub-Store 与 sub-store-org/Sub-Store-Front-End 的官方 latest Release 下载后端和前端,完成后重启两项服务。

最低目标是 2.38.0;本次核对的目标为 2026 年 9 月 22 日发布的 2.41.0。以后选择其他稳定版时,按官方 Releases 核对。

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

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

  1. 保持本机监听

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

  2. 点击检查更新

    在 Sub-Store 页面点击右上云形“检查更新”按钮,等待下载、服务重启与完成提示。期间不要退出客户端,也不要手工覆盖应用目录中的 bundle。

  3. 重新读取版本

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

  4. 更新失败就停用

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

提交 038745f 收紧默认 CORS,限制部分 Node 脚本操作并加入拒绝测试。没有 Origin 的请求仍有不同处理,Clash Party 的自定义后端名称也使部分脚本限制不适用;这些改动不保证所有 API 调用已经过身份验证。

后续安全公告或身份验证机制变化时,按官方 Release、提交与说明重新核对。

更新后确认后端版本、仅本机可访问和停用效果

重新启动 Clash Party 后,从 Sub-Store 页面读取实际后端地址和 data.version,确认仍是更新后的版本;地址应为 127.0.0.1,不能是局域网地址或 0.0.0.0。只看到更新成功提示不够。

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

发现异常进程、连接或凭据改动时,按可能入侵处理

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

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

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

Sub-Store 更新失败或不兼容时停用,不启用风险后端

如果 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。

参考资料