前言¶
用 DeepSeek Harness(DSH)改代碼時,安全往往要靠人工翻 diff、或另開一套 SAST 工具鏈,結果和日常會話脫節:規則跑在別處,修漏洞還得自己對照報告改。@shamcleren/dsh-security-scan 是社區維護者 shamcleren 提交的 DSH 插件(目錄分類 admin-security),把 Python、Go、JavaScript/TypeScript 的靜態掃描、密鑰與依賴檢查、可選運行時基線,以及可選的 AI 複覈和會話內修復收進側欄「安全掃描」工作臺;規則掃描在本機執行且不消耗模型 Token,需要時再讓已配置的模型按源碼行做證據化複覈。
這是什麼¶
插件全稱 @shamcleren/dsh-security-scan(npm 包版本 0.18.0,MIT 許可)。它面向已在用 DSH 的開發者:對本地目錄或 Git 倉庫發起掃描,生成可離線打開的中文報告(HTML、JSON、SARIF),在報告裏勾選問題後可交給 DSH 會話修復,修完自動復掃對比殘留項。與僅提供 CLI 的掃描器不同,它與 DSH 工作區、會話和分支修復流程打通。
核心功能¶
下面按 README 已寫明的能力歸納,不超出倉庫說明。
靜態規則掃描(不消耗模型 Token)¶
內置 29 條 Semgrep 規則,覆蓋 Flask、Django、Express、Koa、Next.js、React、Gin、Echo、net/http 及常見 SQL/HTTP 庫中的命令注入、SQL 注入、XSS、SSRF、路徑穿越、開放跳轉、不安全反序列化、關閉 TLS 校驗、JWT 不驗籤等。掃描在本地完成,默認不聯網(首次準備掃描器時需下載工具鏈)。
密鑰與依賴¶
Gitleaks 查找疑似憑據;通過 OSV 查詢已知依賴漏洞,支持 npm/pnpm 鎖文件、go.sum、requirements 和 uv.lock。向 OSV 發送的是包名與版本,不發送源碼。
可選運行時檢查¶
默認關閉。在你填寫服務地址並確認授權後,對同源地址最多發送 12 個 GET 請求,檢查安全響應頭、Cookie 屬性、CORS、調試頁面以及 .git / .env 暴露等。
AI 複覈(可選)¶
新任務默認可開啓「Agentic AI」。模型讀取你在 DSH 中配置的 endpoint,對選取的源碼片段追蹤調用關係,確認或排除候選問題,並補充規則難以覆蓋的越權、租戶隔離等風險;結論需引用實際讀過的代碼行,會消耗模型 Token。
修復閉環與誤報¶
在報告中勾選問題,一鍵交給 DSH 會話修復(默認在獨立分支上修改並驗證);完成後自動復掃,對比仍存在的問題。誤報可在報告中標記,或經修復會話覈實後由你審批排除,後續掃描自動隱藏;相關代碼改動後候選會再次出現。
報告與 CLI¶
離線 HTML、JSON、SARIF;可與同一任務上一份報告或目標分支對比,只看新增問題。提供 dsh-security CLI,Git hooks 與 CI 可複用同一套規則;CLI 與 hooks 不調用模型。
插件不收集遙測,也不另存 API Key。報告含代碼片段與位置,外發前需按項目保密要求處理。
安裝與啓用¶
官方 README 要求 DSH 0.2.1-rc.5,其他版本尚未驗證。安裝命令須帶版本號(pnpm 默認不自動選用發佈未滿一天的版本):
dsh plugin --profile web add @shamcleren/dsh-security-scan@0.18.0
也可在 DSH 側欄「插件 → 添加插件」中填寫 @shamcleren/dsh-security-scan@0.18.0。桌面版將 web 換爲實際使用的 desktop profile。升級時把版本號換成 GitHub Releases 中的新版本;npm 包與 Release 中的 .tgz 爲同一份文件。
安裝後重啓 DSH,側欄上方會出現「安全掃描」。首次啓用時,插件會自動下載並校驗 Semgrep、Gitleaks 和獨立 Python,放在 ~/.dsh/security-scan/toolchains/,不改動系統 Python 等系統環境。插件以當前 DSH 進程權限運行,安裝前建議查看倉庫源碼與 MIT 許可證及 THIRD_PARTY_NOTICES.md 中的掃描器上游許可。
典型用法¶
工作臺第一次掃描¶
- 點擊側欄「安全掃描」,選擇「新建任務」。
- 代碼來源選「本地目錄」並填寫項目路徑,或選「倉庫地址」填寫 Git 地址與分支。僅跑規則、不用模型時,取消「啓用 Agentic AI」。
- 點擊「保存並運行」。在「歷史報告」中打開報告,勾選要處理的問題,選擇「在會話中修復」或「標記爲誤報」。
也可在已選項目的 DSH 會話中說:「用安全掃描插件掃描當前項目,並複覈候選漏洞」。
命令行掃描¶
~/.dsh/profiles/web/node_modules/.bin/dsh-security scan --target /path/to/project
更細的掃描範圍、基線、hooks、CI 與報告閱讀見倉庫 使用手冊。
網絡與模型使用(默認行爲)¶
| 檢查 | 默認 | 網絡 | 模型 Token |
|---|---|---|---|
| 源碼規則 | 開啓 | 不聯網(首次準備掃描器需下載) | 不需要 |
| 密鑰檢測 | 新任務開啓 | 不聯網 | 不需要 |
| 依賴漏洞 | 新任務開啓 | 向 OSV 發送包名和版本 | 不需要 |
| 運行時檢查 | 關閉 | 僅訪問你填寫的地址 | 不需要 |
| AI 複覈 | 新任務開啓 | 向 DSH 配置的模型發送選取的源碼片段 | 需要 |
適用場景與注意¶
適合:已在 DSH 內迭代 Web 或後端項目,希望規則掃描、報告和修復留在同一環境;需要在 CI 或 hooks 裏複用與 GUI 相同規則的團隊。
侷限(倉庫原文):隨包 97 個合成樣例上規則候選精確率 95.3%、召回率 89.1%,指標由同作者編寫樣例與規則,偏樂觀;規則只做函數內分析,不跨函數或文件追蹤。缺失授權、越權等業務問題需 AI 複覈或人工判斷。掃描結果是待覈實候選,未發現不等於無漏洞。macOS arm64 已實機驗證;macOS x64 與 Linux(glibc ≥ 2.34)有掃描器發佈包但未實機驗收;Windows 不提供自動準備的掃描器。
DSH 生態理念是「一切皆插件」;SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
@shamcleren/dsh-security-scan 把本地 Semgrep/Gitleaks/OSV 掃描、可選運行時基線與 DSH 會話修復、復掃對比放在一條路徑上,規則階段不佔用模型配額,深入判斷再交給 AI。進一步瞭解可訪問目錄頁與倉庫:
- https://www.skillhub.cn/plugins/shamcleren/dsh-security-scan
- https://github.com/shamcleren/dsh-security-scan