dsh-guardwall:DeepSeek Harness 的运行时安全护栏

前言

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 插件生态提供了从安装到使用的全流程安全兜底。如果你需要在不牺牲灵活性的前提下加强智能体执行环境的安全性,可参考其配置进行部署。

羽毛球分组比赛记分
小程序二维码

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

小夜