dsh-leak-guard:DSH 发布前凭据审计插件

前言

在 DSH(DeepSeek Harness)里用智能体改代码、打包外发时,.env、API key、托管平台 token 很容易被当成「项目文件」一起带进 git push 或 npm 发布。事后靠公开仓库扫描补救,成本远高于发布前拦一道。

下面介绍社区插件 dsh-leak-guard(维护者 7gzgn):在推送、发包、打包外发之前对工作区做一次本地扫描,检查是否混入不该公开的凭据。分类为 admin-security;仓库与说明见 SkillHub 目录页 与 GitHub。

这是什么

dsh-leak-guard 是给 DSH 用的发布前凭据审计插件(当前包版本 0.1.1,MIT 许可证)。它扫描指定路径下的文件,查找 API key、token、私钥、数据库连接串、明文密码等;零依赖、纯本地、不联网、不上传内容,命中结果在返回前脱敏(预览仅前 6 个字符)。

设计目标可以概括成:发布动作之前先跑扫描,ok = false 就不要发。

检测范围

README 用表格归纳了主要类别,完整规则可通过工具打印(当前 23 条内容规则 + 11 条文件名规则)。

类别 例子
大模型 key sk-…、sk-ant-…、hf_…
代码托管 token ghp_/gho_/ghu_/ghs_/ghr_、github_pat_…、glpat-…
云厂商 AKIA…/ASIA…(AWS)、LTAI…(阿里云)、AKID…(腾讯云)、AIza…(Google)
支付 / 通信 sk_live_…(Stripe)、xox…(Slack)、SG.…(SendGrid)、Telegram bot token
私钥 / 证书 -----BEGIN … PRIVATE KEY-----、id_rsa、*.pem / *.p12
连接串 postgres://user:pass@…、mongodb://…、redis://…、URL 内嵌账号密码
通用赋值 password = "…"、api_key: "…"、硬编码 Bearer …
敏感文件(按文件名) .env*、.credentials.yaml、.npmrc、.netrc、.git-credentials、service-account*.json、.gh-token

规则策略上强调宁可漏报、不要误报:要求特异前缀与足够长的随机体,并对 sk-xxxx、<YOUR_KEY>、${TOKEN}、change-me 等占位符白名单放行。

在 DSH 里调用

插件注册为 DSH 工具 leak_guard。扫描指定目录示例:

leak_guard({ action: "scan", path: "D:\\dsh\\projects\\my-thing" })

返回 JSON 中,ok: true 表示未发现需处理的项;ok: false 时查看 findings,并优先处理 critical / high 级别。counts 汇总各级数量,stats 给出扫描文件数、跳过数与字节数。

查看完整规则列表:

leak_guard({ action: "rules" })

作为 Node 库使用

除 DSH 工具外,包导出纯 ESM 扫描器(Node >= 18),可在脚本或 CI 中直接引用:

import { scanPath } from 'dsh-leak-guard/scanner'

const result = await scanPath('/path/to/repo')
if (!result.ok) {
  console.error('别发,先处理:', result.findings)
  process.exit(1)
}

package.json 还提供 ./patterns 等子路径导出,便于单独复用规则定义。

实现上的几条取舍

  1. 先粗筛再精查:联合正则过滤无关行,疑似行再跑完整规则,中等规模项目可达秒级。
  2. 同条泄露不重复报:已有具体规则命中时,不再叠加泛化的 assignment-secret。
  3. 离线边界:不联网、不写盘、不读未指定路径、不跟随符号链接;二进制文件默认跳过;单文件默认 1MB 上限,超出只提示不扫描。
  4. 高熵检测默认关闭:开启 entropy: true 时会对长随机串更敏感,且仅在同行出现 key/token/secret 等上下文词时才报,噪声仍可能偏多。

局限与 DSH 兼容性

务必先认清边界,再把它当习惯动作而不是保险:

  • 不是 git 历史扫描器,只看工作区现有文件,不翻已提交历史。
  • 会漏:规则有限,新服务前缀或自定义编码可能漏检,定位是兜底。
  • 声明的 DSH 兼容范围为 >=0.2.0-rc.2 <0.3.0-0(覆盖整个 0.2 线);运行时若拿不到 @deepseek-ai/dsh-tools 的 defineTool 会降级,避免拖垮宿主。

安装与使用注意

DSH 生态采用「一切皆插件」;SkillHub 是社区目录站点,与 DeepSeek / 幻方无官方从属关系。安装前请在 GitHub 仓库 阅读源码与 MIT 许可证,确认符合你的安全策略。

插件以当前 DSH 进程权限读取你传入的 path,只扫描你指定的目录。在 agent 自动 git push 或发包流程里,把 leak_guard 固定在发布前一步,比事后公开仓库救火更省事。

结尾

dsh-leak-guard 解决的是「发出去之前工作区里有没有凭据」这一问题:本地、脱敏、可脚本化。需要规则明细时用 action: "rules";日常发布前用 action: "scan",以 ok 为准决定是否继续。

  • 目录页:https://www.skillhub.cn/plugins/7gzgn/dsh-leak-guard
  • 源码与文档:https://github.com/7gzgn/dsh-leak-guard
羽毛球分组比赛记分
小程序二维码

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

Xiaoye