安全加固(三):提示注入防御与安全审计
一句话目标:防住提示注入——把进入 Gateway 的不可信输入管起来、把明文凭据清干净,并用 openclaw secrets audit --check 通过一次安全审计。
前置:先完成《安全加固(一):访问控制与身份》;工具权限与沙箱见《安全加固(二)》。
准备
- OpenClaw 2.0(v2026.8.1)及以上,本教程以仓库版本 2026.10.9 为基准。
- 一份能正常启动的 Gateway 配置:渠道已接入,至少配好一个模型 provider。
- 终端里能运行
openclawCLI。
跟我做
第 1 步:盘点注入面
操作:列出所有进入 Gateway 上下文的输入源——渠道消息、skills、MCP 工具返回的内容、浏览器抓取的网页。对每一项标注「可信 / 不可信」。记住一条原则:Gateway 进程是唯一信任边界,模型与 agent harness 都是可换插件,插件返回的内容一律按不可信输入处理。
预期结果:一张「输入源 → 信任级别 → 可触发的工具」清单。凡是不可信源能触发的工具,回到上一课收紧权限。
第 2 步:迁移凭据,消除明文
操作:明文凭据可能藏在四处:openclaw.json、.env、退役的 auth-profile JSON 归档、生成的 agents/*/agent/models.json。逐项改写为 SecretRef——支持 env、file、exec、store 四类 provider 块,exec 可直接接 1Password、Bitwarden、Vault、pass、sops。团队共享密钥放进共享 SQLite secret store,取密出站流量走 egress proxy 的 allowlist。
预期结果:上述文件里不再出现明文 API key。注意 SecretRef 是按凭据逐项启用的(opt-in),不会自动迁移。
第 3 步:运行审计
操作:执行
openclaw secrets audit --check检查是否还有明文残留。 hardened-baseline 的完整审计项与对应命令参数,以官方 security 文档为准。
预期结果:报告显示无 plaintext residue。若有残留,按报告指向的文件回到第 2 步继续迁移。
验证
- 重启 Gateway,确认各渠道与模型正常工作——凭据已从 SecretRef 加载。
- 再跑一次
openclaw secrets audit --check,结果为无残留。 - 在测试渠道发一条诱导性消息(例如要求读取
.env),确认审批会绑定确切的请求、命令、会话与人,而不是被静默放行——这是 2.0 安全模型的核心行为。
常见坑
- 只清理了
openclaw.json,漏掉.env和生成的agents/*/agent/models.json,审计照样报明文。 - 以为开了 SecretRef 就万事大吉:它是逐凭据启用的,每个凭据都要单独迁移,直到 audit 报告干净为止。
- 把 skills 或 MCP 工具的输出直接并入上下文:这会扩大注入面,必须配合第 1 步的信任标注和上一课的工具权限。
- hardened-baseline 建议的具体默认配置项清单,待核对官方文档后补充。
下一课
安全基线跑通后,下一课「CLI 命令与配置速查」汇总你日常运维最常用的命令与配置项。