只读的 agent 机群凭据卫生审计:检查凭据文件权限、git remote 内嵌凭据(输出脱敏)与 provider token 字面量计数;零依赖、确定性。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:LeslieWylie/dsh-fleet-audit
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DSH agent 舰队卫生审计插件:只读、零依赖、确定性。检查三件事,输出全程脱敏:
- 凭据文件权限 —— 常用凭据文件(
~/.gitconfig、~/.netrc、~/.npmrc、~/.env、~/.ssh/)应收紧为600/《700,组/其他可读一律标记为tooOpen` - git remote 内嵌凭据 —— 扫描
~/.gitconfig与给定目录下的.git/config,识别https://user:pass@host、https://oauth2:TOKEN@host、token 型用户名等;输出 URL 中凭据以***掩码,逐字节保证不泄露原文 - provider token 前缀字面量(可关)—— github / github-fine-grained / gitlab / gitlab-ci / slack / aws / openai / jwt 常见前缀,只报「类型 × 出现次数」
为什么
多 agent 时代的机器上,凭据散落在 ~/.gitconfig、agent 配置、.git/config 与各种 .env 里。git 的 url.*.insteadof 或 pushurl 一旦嵌了 token(例如 https://oauth2:<token>@gitlab.example.com/...),任何 git remote -v 都会把密钥打印进日志/对话/CI。一键只读审计 + 脱敏输出,是安全基线体检的第一道。
安装
# 本地验证
dsh plugin --profile web add /path/to/dsh-fleet-audit
# 发布后(npm / GitHub)
dsh plugin --profile web add dsh-fleet-audit
# 或
dsh plugin --profile web add github:LeslieWylie/dsh-fleet-audit
安装后重启 dsh web,直接说「审计一下本机凭据卫生 / run fleet_audit」。
用法(工具参数)
| 参数 | 类型 | 说明 |
|---|---|---|
roots |
string[] | 递归扫描 .git/config 的目录(可选;默认只查 ~/.gitconfig) |
files |
string[] | 额外要查权限的凭据文件绝对路径 |
scanSecrets |
boolean | 是否扫描 token 前缀字面量(默认 true) |
maxGitConfigs |
number | git config 扫描上限(默认 200,上限 2000) |
maxDepth |
number | 目录递归深度(默认 5,上限 20) |
输出示例(脱敏)
{
"ok": true,
"summary": { "files": 5, "tooOpen": 1, "gitLeaks": 2, "secretFiles": 1, "issues": 4, "scannedGitConfigs": 12 },
"checks": {
"credentialFiles": [
{ "path": "/Users/alice/.gitconfig", "exists": true, "mode": "644", "tooOpen": true }
],
"gitRemoteLeaks": [
{ "file": "/Users/alice/code/proj/.git/config", "host": "gitlab.example.com", "maskedUrl": "https://***:***@gitlab.example.com/group/proj.git" }
],
"secrets": [
{ "file": "/Users/alice/.gitconfig", "providers": [ { "provider": "github", "count": 1 } ] }
]
},
"note": "Read-only audit; secret-like values are masked in the output. Fix permissions with chmod 600 and rotate any exposed credentials."
}
安全边界
- 只读:不写文件、不启进程、不访问网络、不保存状态
- 脱敏:所有疑似凭据一律掩码;测试同时断言「输出 JSON 不含原始密钥」
- 有界:git config 数量与递归深度均设上限,可防扫描失控
开发
npm install
npm run check # typecheck + vitest + build
已知局限
- 仅扫描文本类配置文件(不会解析加密存储、系统钥匙串、二进制文件)
- token 前缀识别为启发式规则:可能漏报(非常规前缀)或误报(需人工复核)
- 默认只检查固定凭据列表;任意路径凭据请通过
roots/files显式指定 - 不主动修改任何文件;发现泄漏后请自行
chmod 600并轮换密钥
回滚
dsh plugin --profile <p> remove dsh-fleet-audit # 或从 dsh.profile.bundles 删除该行
插件只读、无状态,卸载不影响任何用户数据。
独立社区插件
本项目为独立社区插件,与 DeepSeek 官方或其 DSH 仓库无隶属关系;"official"
身份仅通过官方渠道授予。发布时会给仓库添加 dsh-plugin topic 以便发现。
许可
MIT © LeslieWylie
链接
同类插件
toby-bridges/api-relay-audit★ 860
从 DeepSeek Harness 对 AI API 中转站和 LLM 代理运行本地安全审计,生成 Markdown 报告,覆盖提示词注入、模型替换信号、工具调用改写、错误泄漏、流完整性和按 profile 启用的 Web3 风险。
SeaOf0/dsh-redteam-model★ 638
面向授权安全研究的 DSH 合集:九个工作模式(redteam 总控、渗透测试、代码审计、二进制分析、攻防评估、免杀对抗、应急溯源、云安全攻防、CTF 解题)与十五个运行时插件,设置页管理台支持一键部署、安装、更新与卸载。
howmp/dsh-pentest★ 558
面向 DeepSeek Harness 的授权渗透模式:以探索链路记录目标、线索、资产与漏洞,并在 Web 中可视化展示。
PerryLink/dsh-auto-review★ 206
审批链上的第二模型自动审查:只读审查子代理返回带理由的 allow/deny 结构化裁决,默认 fail-closed。
NanmiCoder/dsh-auto-mode★ 163
在 Workspace Write 与 Full access 之间增加 Auto 权限档:日常操作留在官方 workspace-write 沙箱内,由当前会话模型复核升权与破坏性调用,精确的越界访问按次放行一次,意图不明时询问,命中关键路径则拒绝。
PerryLink/dsh-permission-rules★ 114
Claude Code 风格的声明式权限规则:按序 allow/deny/ask 的 YAML 规则,在 tools/pre-execute 瀑布上匹配工具名、参数、工作区路径与 agent 身份,带完整会话日志审计、干跑模式与热重载。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。