安全与隐私 · Clash 技术博客

Clash 远程规则集安全吗?rule-providers 来源、更新与篡改风险检查

rule-providers 不会直接读取账号密码,但它能改变域名走哪个出口。用之前至少要确认来源、更新记录和回退文件,重要规则更新时还要看差异。

  • rule-providers
  • 规则集
  • 供应链
  • 安全
本文目录

一份自动更新的远程规则,可能在你没有改设置时改变某个网站的去向。关注的不只是下载是否成功,还包括是谁维护、更新加了哪些域名,以及异常时能否恢复上一份文件。重要账号的请求走错出口时,连接记录和规则差异比文件看起来整齐更有参考价值。

规则文件不会读取密码,但能改变敏感请求的出口

核对 Rule Provider(rule-providers)的内容与配置中的规则顺序,尤其是前面的 DOMAIN-SUFFIX 规则。规则集合不能直接读取账号密码,但会参与决定直连、代理或拒绝;覆盖范围太广时,银行、公司后台或内网登录可能经过陌生节点。来源不明、自动更新且没有回退时,应核对这些变化。

连接记录里出现意外策略时,若有上一份可信规则备份,先恢复该文件;没有备份就暂时移除这个 Provider 的规则引用。重载配置并断开旧连接,再把异常时间、Provider 名称、命中条目和最终出口与仓库变更对照,区分误收域名、本地顺序错误或远端内容被替换。

raw 地址对应哪个仓库、维护者与提交?

添加前必须能回答

  • 这个 raw 文件属于哪个公开仓库和维护者
  • 仓库提交记录是否与规则主题一致
  • 下载内容是预期的 YAML 文本或 MRS 二进制规则文件,而不是登录页、脚本或短链跳转
  • 当前配置能否保留上一次下载的本地文件
  • 出现错误时是否知道怎样停用这一个 Provider

分支地址会随每次提交变化,适合已经信任且需要更新的规则;提交哈希地址内容固定,适合银行、公司直连等变化少、影响大的规则。两者可以并存,不必把所有来源都设成每小时更新。

rule-providers 的 URL、格式与缓存路径怎样设置?

可审查的 Rule Provider 示例
rule-providers:
  research:
    type: http
    behavior: domain
    format: yaml
    url: https://raw.githubusercontent.com/OWNER/REPO/COMMIT/rules.yaml
    path: ./ruleset/research.yaml
    interval: 86400

rules:
  # REPLACE_WITH_POLICY 必须换成当前配置中已经存在的策略组
  - RULE-SET,research,REPLACE_WITH_POLICY
  - MATCH,DIRECT

OWNER、REPO、COMMIT 和 REPLACE_WITH_POLICY 都是占位内容,复制后不能直接启用。把它们换成已经核对过的仓库、固定提交和现有策略组。

behavior、format 必须与远端内容一致;path 应落在内核允许且可写的位置。把规则引用放在 MATCH 之前,也要避开公司网段、局域网和必须直连的高优先级规则。

更新成功后看规则数量与修改时间,再挑几条熟悉域名检查命中。只看到页面提示“更新完成”,还不能证明当前运行配置真的引用了新文件。

重要规则更新前,用 diff 看它改了什么

在单独的审核目录准备 rules.last.yaml,内容必须是上一份已核对可信的规则备份;rules.new.yaml 是这次待审核的下载文件。文件名或位置不同就改成实际路径,不把候选文件直接写进正在使用的 Provider 缓存。

下面的命令分步执行:把 RULE_URL 换成可信仓库的实际固定提交地址,下载失败就停止,不对可能残留的旧文件继续算哈希或比较。没有上一份可信备份时,只能审读候选内容,不能把缺少 diff 结果当作没有变化。

在自己控制的终端比较,先替换 RULE_URL
RULE_URL='https://raw.githubusercontent.com/OWNER/REPO/COMMIT/rules.yaml'
curl -L --fail --show-error -o rules.new.yaml "$RULE_URL"
sha256sum rules.new.yaml
diff -u rules.last.yaml rules.new.yaml | less

macOS 可以用 shasum -a 256 代替 sha256sum。哈希只能证明两次文件是否相同,不能证明内容本身可信;真正需要看的仍是新增与删除条目、仓库提交说明和规则主题是否一致。

文件从几千行突然变成几十行、开头出现 <!doctype html>、或视频规则一次加入大量账号与银行域名,都应暂停自动更新。

更新后走错策略,恢复可信规则并断开旧连接

异常处置

  1. 停止该 Provider 更新

    有上一份可信规则备份时恢复该文件;没有备份就暂时移除 RULE-SET 引用。

  2. 重载配置并断开连接

    新请求应恢复原策略,旧会话不会自动改出口。

  3. 对照仓库变更

    确认是误收条目、地址迁移、格式变化还是来源无法验证。

  4. 检查敏感账号

    如果登录请求曾经过意外出口,查看登录记录并按风险更换凭据。

  5. 改用固定提交或替代来源

    无法解释的远端文件不再恢复自动更新。

参考资料