@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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye