当AI Agent能够访问网页、执行Shell命令、调用外部工具时,一道"输入过滤"已经远远不够用了。来自UNSW Sydney的研究者提出了 OpenClaw PRISM——一个无需修改(Fork)任何底层代码、却能在运行时全生命周期守护LLM Agent网关的深度防御层。它把安全控制分布在10个生命周期钩子上,将检测、拦截、审计与运营工作流融为一体,让Agent网关真正变得可控、可观测、可防御。
🔍 研究背景:单一边界防御已然失效
现代LLM Agent不再只是一个"问答机器"——它会浏览网页、执行代码、读写本地文件、调用外部API,甚至生成并发送外部消息。这一能力扩展带来了全新的攻击面:
- 间接提示注入(Indirect Prompt Injection):恶意指令藏在网页内容或工具返回结果中,绕过了最初的用户输入过滤
- 工具滥用(Tool Abuse):通过Shell蹦床命令(如
bash -c、curl | sh)执行危险操作 - 凭证泄露(Credential Leakage):Agent在生成回复时不经意间将API密钥等敏感信息外传
- 控制文件篡改(Control File Tampering):攻击者修改网关的策略文件或安全配置,从根本上削弱防御
- 渐进式升级(Long-horizon Escalation):单条消息看似无害,但多轮积累后风险阈值被悄悄突破
已有的防御方案——无论是LlamaFirewall、NeMo Guardrails,还是各类输入/输出分类器——大多只在"一到两个检查点"上做文章,根本上与工具型Agent的执行模型不匹配。PRISM的出发点就是:安全控制必须分布在整个运行时生命周期,而不是集中于某个单一边界。

💡 核心设计:10个钩子 × 5层防护
🏗️ 零侵入架构(Zero-Fork)
PRISM最大的工程亮点是无需Fork上游代码。它以一个进程内插件(in-process plugin)为核心,注册到OpenClaw网关的生命周期钩子上,同时可以挂载4个可选的Sidecar服务:
- Scanner:对可疑工具返回内容进行远程LLM辅助分类
- Invoke-Guard Proxy:策略驱动的工具调用治理代理
- Dashboard:审计浏览、策略配置和异常放行的运营界面
- Monitor:对选定本地控制文件进行完整性监控
插件可以独立运行,Sidecar服务按需启用,完全模块化——运营者可以从轻量保护起步,随着安全需求增长逐步接入更多组件。
⚡ 生命周期全覆盖:5个阶段 × 10个钩子

这10个钩子组成5个防护阶段:
- 接入阶段(
message_received+before_prompt_build):扫描入站消息,如果会话风险积累已够高,在Prompt构建前注入安全警告上下文 - 执行前阶段(
before_tool_call):拦截危险工具调用——Shell元字符、蹦床命令、私有网络目标、受保护文件路径一律受策略管控 - 执行后阶段(
after_tool_call+tool_result_persist):对工具返回内容进行两级扫描;持久化前对可疑内容进行清洗,防止恶意文本污染后续Prompt上下文 - 出站阶段(
before_message_write+message_sending):最后一道防线——DLP检查凭证泄露,高风险会话的消息发送直接阻断 - 生命周期维护(Sub-agent生成 + Session结束 + 网关启动):高风险Session禁止生成子Agent,风险状态跨重启持久化
🔬 两级扫描流水线(Hybrid Heuristic + LLM)
PRISM不依赖单一分类器,而是采用快速启发式 + 可选LLM辅助的两级扫描:
第一级(启发式):NFKC Unicode规范化 → 零宽字符剥离 → 百分号解码 → 加权规则打分。覆盖指令覆盖短语、系统提示外泄语言、凭证泄露模式、工具滥用命令等。低延迟,部署于全部钩子。
第二级(Scanner Sidecar + Ollama LLM):仅对启发式判定为可疑的工具返回内容触发;本地模型(如 qwen3:8b)提供额外分类信号;高分命中可短路直接判定为恶意,无需调用模型;模型失败时优雅降级至启发式结果。
📈 会话风险引擎(Session Risk Engine)
PRISM引入了一个带TTL衰减的风险积累引擎,区分对话级(conversation-scoped)和会话级(session-scoped)风险:
- 风险条目携带TTL,定期清扫——高风险是有时限的操作状态,而非永久标签
- 策略响应是分级的,而非二元判断:低风险→注入警告上下文;中风险→阻断高危工具;高风险→阻断子Agent生成
- 风险状态可跨重启持久化,多轮渐进攻击无处遁形
📊 实验结果:Full PRISM攻击阻断率达95.5%
在80个测试用例组成的统一基线阶梯(plugin-flow + tool-abuse + tool-use)上,使用本地Ollama(qwen3:8b)运行的实验结果如下:
| 配置 | 攻击阻断率 | 误报率 | F1 |
|---|---|---|---|
| No PRISM(无防护) | 0.000 | 0.000 | n/a |
| Heuristics Only(仅启发式) | 0.409 | 0.222 | 0.514 |
| Plugin Only(仅插件) | 0.455 | 0.194 | 0.563 |
| Plugin + Scanner | 0.545 | 0.139 | 0.658 |
| Full PRISM(完整部署) | 0.955 | 0.139 | 0.923 |
代理策略执行层(Proxy Policy)单独测试时在33个invoke-policy测试用例中取得100%正确率(33/33)。
运行时开销方面,启发式本地处理几乎无感知(Plugin Only的p95仅0.58ms),LLM辅助扫描路径引入了较大延迟(Full PRISM的p95约15.8s),但这主要是本地模型推理耗时,而非PRISM框架本身的开销。内存增量在全部配置下均低于1.4MiB。
✨ 核心亮点
- 零侵入集成:无需Fork OpenClaw源码,通过插件+Sidecar接入,随框架升级自然演进,运营负担极低
- 全生命周期防护:10个钩子跨越消息接入、Prompt构建、工具执行、工具结果持久化、出站消息和子Agent生成,单一边界防御无法比拟
- 可审计的运营平面:HMAC链式哈希的防篡改审计日志 + 热重载策略 + Dashboard放行工作流,让安全事件可回溯、策略可运营
- 分级风险响应:从注入上下文警告,到阻断高危工具,再到阻断子Agent生成,精准匹配不同风险级别,避免过度拦截
🔮 局限与展望
作者在论文中非常坦诚地列出了PRISM的边界:
- 检测覆盖不完整:启发式规则和LLM分类器均无法保证覆盖所有对抗变体;自适应的新型注入模式仍可能绕过两级扫描
- 策略需要持续维护:允许列表、阻断规则、域名分级和DLP模式都需要随业务演进定期审查,不能一劳永逸
- 路径保护有边界:当前路径规范化是字符串级别的,不解析符号链接——不应将其等同于完整的文件系统沙箱
- 框架特定性:零侵入策略依赖OpenClaw的钩子接口,移植到其他Agent框架需要重新映射生命周期阶段
- 不替代底层加固:PRISM是防御栈中的一层,不能替代OS沙箱、容器隔离、网络出口控制和密钥管理基础设施
未来方向包括:扩大间接注入和工具滥用基准集的覆盖范围;将PRISM的钩子与正式的安全工具使用规范结合;向其他Agent框架移植;以及基于审计日志驱动策略自动优化。
📝 总结
OpenClaw PRISM代表了一种务实的Agent安全观:安全不仅是检测问题,更是系统工程问题。通过将10个生命周期钩子、两级混合扫描、会话级风险积累、策略执行控制和防篡改审计面组合在一起,PRISM让Agent网关从"孤立的输入过滤"迈向了"可部署、可运营、可审计"的运行时安全层。
它不是完整的安全边界,也不是正式保证,但对于任何在生产环境中部署OpenClaw Agent网关的团队来说,这是目前最具工程深度、最接近实战落地的开源防御方案之一。
📌 论文原文 → arXiv 2603.11853
夜雨聆风