本文目錄
先確認公開報告涵蓋的範圍
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 的緩解 | 任何網路來源都已受到身分驗證與存取控制保護 |
| 沒有異常處理程式或彈窗 | 暫未觀察到明顯症狀 | 舊後端繼續執行沒有風險 |
- 不受信任的網頁瀏覽器中開啟的外部頁面發起跨來源請求
- 瀏覽器來源檢查舊版 Node 後端預設允許過寬的來源
- 本機 Sub-Store APIClash Party 啟動的獨立前後端服務
- 指令碼處理能力訂閱處理上下文可能執行指令碼操作
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 頁面處理訂閱。
先形成可還原的安全狀態
關閉不受信任的網頁
保留本文和專案官方頁面即可,不測試任何來源不明的請求、指令碼或所謂檢測站。
關閉啟用開關
進入設定的 Sub-Store 區域,關閉“啟用 Sub-Store”,等待前後端停止。
關閉區域網路存取
確認“允許區域網路存取”未開啟,後續重新啟用時也只綁定 127.0.0.1。
重啟並驗證普通代理
重新開啟 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 後端。它是獨立下載和執行的元件,必須在自己的頁面完成更新並讀取自己的版本號。
只走應用內的官方更新路徑
保持本機監聽
確認 Allow LAN 關閉,並關閉其他不受信任的瀏覽器頁面。
按一下檢查更新
在 Sub-Store 頁面按一下右上雲形按鈕,等待下載、重啟和完成提示。
重新讀取版本
再次使用頁面給出的實際後端位址,確認 data.version 不低於 2.38.0。
更新失敗就停用
若下載、重啟或版本核對失敗,關閉“啟用 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。
可還原但不回到風險版本
關閉獨立服務
停用 Sub-Store,確認前後端已經停止。
恢復可用 Profile
使用應用內仍可工作的設定,或匯入升級前儲存的乾淨副本。
驗證日常代理
固定一條已知可用節點,分別驗證系統代理或 TUN 與實際請求。
等待相容修復
關注 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 與安全說明 | 避免把使用者報告寫成官方結論 | 看到新版本或新告警時 |
