前言¶
DeepSeek Harness (DSH) 的生態高度依賴第三方插件。在插件市場或社區市場安裝來源不明的插件時,直接執行可能帶來代碼注入或權限風險。dsh-plugin-safety 是一個安裝時安全門控插件,它攔截市場發起的安裝請求,在代碼執行前對 npm 或 GitHub 來源的插件進行靜態掃描與元數據審查。通過評分機制,安全的插件靜默放行,有風險的插件會彈出審查報告,由用戶決定是否繼續安裝。
核心機制¶
本插件通過包裹 DSH 的 window.fetch 攔截安裝請求。當用戶在市場界面點擊安裝時,請求會被攔截並轉發至宿主側的 /api/plugin-safety/check 接口。
掃描過程主要分兩部分:
- 源碼靜態掃描:針對 npm 的 tarball 或 GitHub 的倉庫歸檔,提取 JS/TS 源碼。檢查內容包括生命週期腳本(install/prepare)、遠程代碼執行鏈(eval/new Function)、硬編碼公網 IP、持久化機制(自啓動腳本)、密鑰文件訪問以及子進程執行等。
- 元數據信號分析:獲取 npm registry 或 GitHub API 的元數據。檢查發佈時間(<7 天)、下載量、stars 數量、許可證聲明、倉庫歸檔狀態以及包名相似度(仿冒檢測)。
掃描結果返回 verdict(安全/謹慎/高風險/未知)。若爲 safe,請求原樣放行;否則彈出窗口展示評分與證據,用戶可選擇“仍然安裝”、“取消”或“信任並加入白名單”。
安裝與啓用¶
安裝本插件需要將其加入 DSH 的桌面 profile。
- 進入 profile 目錄:
cd ~/.dsh/profiles/desktop
- 使用 pnpm 添加插件(請替換爲實際路徑):
pnpm add file:/絕對路徑/dsh-plugin-safety
- 修改 profile 的
package.json,在dsh.profile.bundles列表中追加dsh-plugin-safety。 - 重啓 DSH Desktop 使插件生效。
配置項¶
在 DSH 設置頁的“插件 → 安裝安全”中可調整以下參數:
- 啓用檢查:默認開啓。關閉後所有安裝請求將直接放行,不進行掃描。
- 需要確認的最低風險:
caution:任何需要確認的風險都會彈出對話框。risky:僅對高風險(≥20 分)的插件攔截。
- 白名單:支持 npm 包名、GitHub 倉庫地址或 URL。命中規則直接放行,不經過評分。
- 黑名單:同上。命中規則直接返回高風險攔截。
判定規則¶
插件基於啓發式規則對插件進行評分,總分決定風險等級。
靜態掃描得分項¶
- 高危(12-14分):遠程代碼執行鏈(下載+eval+子進程)、動態代碼執行(eval/new Function/vm)、可疑生命週期腳本(下載執行)、硬編碼公網 IP 或雲元數據地址、數據外傳信號、持久化機制、密鑰路徑與文件 IO 同現、子進程執行/寫主目錄。
- 中危(8-10分):監聽端口、終端命令解釋器調用、生命週期腳本(install 8分,prepare 4分)、大體積 Base64 載荷、解密例程、原生模塊鏈、訪問密鑰環境變量、明文 HTTP 外聯。
- 低危(3-5分):fetch 外部 URL、安裝時編譯鏈、原生構建聲明(gypfile)。
- 極低危(1分):缺失完整性校驗、單一維護者。
元數據信號加分項¶
- 新發布 <7 天:+7
- 下載量極低:+3~5
- 無倉庫或許可證:+2~3
- stars 極低:+2~5
- 倉庫已歸檔:+5
- 仿冒包名(Levenshtein ≤2 且剝離標點):+8
風險等級判定¶
risky:總分 ≥ 20 分。caution:總分 ≥ 8 分,或存在 critical 發現,或掃描不完整(如歸檔損壞、文件數超限)。safe:其他情況。unknown:目標無法解析或掃描失敗。
侷限與注意¶
本插件基於啓發式規則,而非數學證明,因此存在誤報或漏報風險。它不提供代碼層面的絕對安全保證。
- 攔截範圍:僅攔截市場 UI 發起的安裝(包括 Community Market 的 preview/execute 雙步)。通過終端直接執行
pnpm add或手動修改 profile 不經過此流程。 - 更新檢查:市場的“更新”請求體不包含來源 URL,因此無法對更新進行安全檢查。
- API 限流:若 GitHub API 觸發限流,元數據信號將缺失(計 2 分並提示),源碼掃描不受影響。
- 依賴來源:插件本身通過 npm 發佈,安裝時會掃描它自己,形成閉環。
適用場景¶
適合對插件安全性有較高要求的開發者,或在使用社區市場時,希望對未知名來源的包進行二次審查的場景。