前言¶
在 DeepSeek Harness (DSH) 中,webServer 路由通過最長前綴匹配進行分發,優先於 /api 網關的統一信任檢查。這意味着每個插件作者必須自行實現瀏覽器信任圍欄,以防止 DNS 重綁定等攻擊,但大多數插件並未實現。此工具用於靜態掃描插件代碼,找出那些未正確實現圍欄的 HTTP 路由。
核心功能¶
該插件是一個靜態 linter,用於檢查 DSH 插件的 HTTP 路由安全性:
- 靜態掃描:針對
webServer註冊的路由進行靜態分析。 - Host 固定檢查:確保路由在處理 Origin 或
sec-fetch-site標誌之前,先固定 Host 頭部爲 loopback 或受信任的權威域名。 - Fallback 檢查:檢查
registerFallback,防止其作爲未圍欄的攻擊面。 - 路徑指定:支持掃描特定的配置文件路徑或 Profile 目錄。
- 引用解析:解析導入和導出,對非相對引用(exports, imports, tsconfig paths)發出警告。
使用方法¶
安裝爲 DSH 插件後,通過 CLI 命令運行掃描。
基礎掃描¶
掃描默認的 Web Profile 目錄($DSH_HOME/profiles/web):
dsh-route-fence scan
指定路徑掃描¶
掃描指定的 Profile 路徑:
dsh-route-fence scan /path/to/profile
退出代碼¶
0:所有檢查通過(Clean)。1:至少發現一個 FAIL。2:用法錯誤或 I/O 錯誤。
判定說明¶
插件對每個路由輸出 PASS、WARN 或 FAIL 等級。
- PASS:處理程序在 Origin 處理之前,對 Host 頭部進行了圍欄檢查。
- WARN:在圍欄內部,Origin 或
sec-fetch-site在 Host 固定之前被讀取;或者路由定義在掃描包之外,無法讀取圍欄,需人工確認。 - FAIL:沒有 Host 檢查;圍欄比較 Origin 和 Host 但從未將 Host 固定爲 loopback(可被 DNS 重綁定繞過);或者圍欄存在但該處理程序從未調用。
- SKIP:無法讀取源代碼的 Bundle,不計入 Clean。
適用場景與注意事項¶
- 適用對象:DSH 插件開發者,特別是負責 HTTP API 和 Web 路由構建的開發者。
- 掃描範圍:僅掃描包發佈的文件(
package.json的files字段),未聲明files則掃描整個包。 - 侷限性:
- 基於啓發式(源文本分析),而非完整的數據流分析。
- 無法檢查通過包裝(wrapping)或運行時配置安裝的圍欄。
- 非相對引用(如
package.jsonexports, imports, tsconfig paths)無法被掃描,結果爲 WARN。 - 可能報告誤報(False Verdicts),這被視爲 Bug。
結語¶
該工具幫助開發者快速定位插件中缺失或錯誤的瀏覽器信任圍欄。建議在開發流程中集成此檢查,以消除潛在的安全隱患。更多詳情與源碼,請訪問插件目錄或GitHub 倉庫。