安全與隱私 · 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。

參考資料