@shamcleren/dsh-security-scan:在 DSH 裏做本地代碼安全掃描與修復閉環

前言

用 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 中的掃描器上游許可。

典型用法

工作臺第一次掃描

  1. 點擊側欄「安全掃描」,選擇「新建任務」。
  2. 代碼來源選「本地目錄」並填寫項目路徑,或選「倉庫地址」填寫 Git 地址與分支。僅跑規則、不用模型時,取消「啓用 Agentic AI」。
  3. 點擊「保存並運行」。在「歷史報告」中打開報告,勾選要處理的問題,選擇「在會話中修復」或「標記爲誤報」。

也可在已選項目的 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜