前言¶
DeepSeek Harness (DSH) 的核心设计是“一切皆插件”。引入外部插件意味着引入新的代码和权限,开发者通常只能依赖静态扫描,但这无法覆盖运行时动态构造的命令或工具调用。dsh-guardwall 作为一个安全插件,提供两层防护:安装前的源码体检和运行时的护栏拦截,并附带篡改检测的审计日志。
功能概览¶
该插件由 iiiweiii 维护,采用 MIT 许可证。核心能力包括:
* 安装前体检:通过真实制品落地、权限清单、静态风险扫描和信任评分,对插件进行“装前把关”。
* 运行时拦截:在输入侧拦截破坏性命令、凭据、SSRF 和反向 shell,在输出侧审计密钥泄露。
* 篡改检测审计:使用 HMAC 链式哈希和尾部 checkpoint,确保日志不被篡改或截断。
* 热加载:无需重启即可更新规则和阈值。
* 零第三方运行时依赖:仅使用 Node.js 内置模块。
安装与启用¶
通过 CLI 安装插件。如果 npm 尚未发布制品,可使用 GitHub 通道。
dsh plugin --profile web add dsh-guardwall
安装后验证配置是否挂载:
dsh --profile web --dump-config | grep -A2 'id: guardwall'
第一层:安装前体检¶
在安装插件前,系统会先确认“装这个插件 = 给了它什么权限”。默认拦截风险等级 >= 7 的插件。
体检工具:
npx guardwall check <spec> # 体检输出报告
npx guardwall add <spec> [--force] # 体检通过后执行安装
<spec> 支持本地路径、npm 包名或 github:owner/repo。
四步体检流程:
1. 真实制品落地:通过 --ignore-scripts 安装 npm 包或检出 GitHub 精确 ref,获取源码后再做判断。
2. 权限清单:静态分析插件访问的文件路径(如 ~/.ssh)、执行的命令(如 rm、curl)和连接的域名。
3. 静态风险扫描:检查依赖树、危险模式(eval、动态执行)及安装脚本。
4. 信任评分与门禁:基于五维评分。D 级拒绝(需 --force),C 级警告,A/B 级放行。
第二层:运行时拦截¶
插件在 DSH 的 tools/execute(输入侧)和 tools/result(输出侧)事件中介入。
与依赖 cordis/dsh-tools 的其他安全插件不同,dsh-guardwall 零第三方运行时依赖,减少供应链攻击面。当 Agent 被诱导执行高危操作(如 rm -rf /)时,调用会被拦截并返回错误提示。
默认拦截规则(风险 >= 7):
* SEC-001:破坏性删除/格式化(rm -rf /、format、mkfs)。
* SEC-002:访问凭据文件(~/.ssh、.aws、.env)。
* SEC-003:参数中出现疑似明文凭据(password=、sk-)。
* SEC-004:SSRF 攻击(云元数据端点)。
* SEC-005:反向 shell 或下载执行管道(bash -i、nc -e)。
* SEC-006:命令链注入(;rm、&&rm)。
* SEC-007:提权操作(sudo su、chmod 777 /)。
* SEC-008:写入系统关键文件(/etc/passwd、/boot)。
输出侧审计规则:
* OUT-001:密钥/私钥泄露(sk-、AKIA、BEGIN PRIVATE KEY)。
* OUT-002:内网 IP 输出。
* OUT-003:带口令数据库连接串。
* OUT-004:环境变量密钥 dump。
* OUT-005:公钥/证书/私密材料。
热加载¶
支持在运行时动态修改规则和阈值,无需重启 DSH。
热加载规则:
规则文件位于 ~/.dsh/cache/dsh-guardwall/rules.d/*.json,保存即生效。
[
{ "id": "MY-001", "direction": "input", "risk": 8,
"re": "internal\\.corp\\d+\\.com", "summary": "禁止访问内网域名", "advice": "确认授权后访问" }
]
热配置:
同目录下的 config.json 可调整阈值:
{ "blockThreshold": 6, "warnThreshold": 3 }
工具命令:
* guard_reload:手动刷新规则与配置。
* guard_rules:查看生效规则。
配置与策略¶
默认策略为 risk >= 7 拦截、risk >= 4 告警。可在 cordis.patch.yml 的 config 中调整。
- insert:
- id: guardwall
name: dsh-guardwall
config:
blockThreshold: 7
warnThreshold: 4
dataDir: ~/.dsh/cache/dsh-guardwall
failMode: closed # 扫描异常时拒绝执行
allowAgentWhitelist: false # 默认禁止 Agent 自助放行
审计日志¶
审计日志依赖 HMAC 链式哈希机制,确保日志完整性。
日志存储位置:~/.dsh/cache/dsh-guardwall/
* audit-YYYY-MM-DD.jsonl:每条记录包含 prevHash 和 HMAC hash。
* checkpoint-YYYY-MM-DD.json:尾部锚点。
* chain.key:链密钥(权限 0600)。
安全机制:
内容修改、并发链分叉或尾部截断会导致 verify() 返回失败。该机制用于检测意外损坏和未持有密钥的修改。
工具列表¶
| 工具 | 用途 |
|---|---|
guard_check |
安装前体检(权限/风险/评分/门禁建议) |
guard_status |
拦截/告警/记录统计、审计链完整性、白名单 |
guard_whitelist |
临时放行某规则(默认关闭,需精确工具名和有效期) |
guard_reload |
手动重载热加载规则与配置 |
guard_rules |
查看生效规则与热加载状态 |
兼容性与路线图¶
- 兼容性:已验证
@deepseek-ai/dsh 0.1.0-rc.5(web profile)。 - 路线图:白名单按 agent/会话隔离、高敏操作二次确认、审计导出/周报、npm 发布。
结语¶
dsh-guardwall 通过源码溯源、运行时拦截和链式审计,为 DSH 插件生态提供了从安装到使用的全流程安全兜底。如果你需要在不牺牲灵活性的前提下加强智能体执行环境的安全性,可参考其配置进行部署。