安全與隱私 · 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. 改用固定提交或替代來源

    無法解釋的遠端檔案不再恢復自動更新。

參考資料