乐于分享
好东西不私藏

OpenClaw PRISM:为LLM Agent打造的零侵入运行时深度防御安全层

OpenClaw PRISM:为LLM Agent打造的零侵入运行时深度防御安全层

当AI Agent能够访问网页、执行Shell命令、调用外部工具时,一道"输入过滤"已经远远不够用了。来自UNSW Sydney的研究者提出了 OpenClaw PRISM——一个无需修改(Fork)任何底层代码、却能在运行时全生命周期守护LLM Agent网关的深度防御层。它把安全控制分布在10个生命周期钩子上,将检测、拦截、审计与运营工作流融为一体,让Agent网关真正变得可控、可观测、可防御。

🔍 研究背景:单一边界防御已然失效

现代LLM Agent不再只是一个"问答机器"——它会浏览网页、执行代码、读写本地文件、调用外部API,甚至生成并发送外部消息。这一能力扩展带来了全新的攻击面:

  • 间接提示注入(Indirect Prompt Injection):恶意指令藏在网页内容或工具返回结果中,绕过了最初的用户输入过滤
  • 工具滥用(Tool Abuse):通过Shell蹦床命令(如 bash -ccurl | sh)执行危险操作
  • 凭证泄露(Credential Leakage):Agent在生成回复时不经意间将API密钥等敏感信息外传
  • 控制文件篡改(Control File Tampering):攻击者修改网关的策略文件或安全配置,从根本上削弱防御
  • 渐进式升级(Long-horizon Escalation):单条消息看似无害,但多轮积累后风险阈值被悄悄突破

已有的防御方案——无论是LlamaFirewall、NeMo Guardrails,还是各类输入/输出分类器——大多只在"一到两个检查点"上做文章,根本上与工具型Agent的执行模型不匹配。PRISM的出发点就是:安全控制必须分布在整个运行时生命周期,而不是集中于某个单一边界。

▲ 图1:PRISM整体架构。插件在OpenClaw网关内部执行安全决策;可选的数据面Sidecar扩展扫描和工具治理能力;运营Sidecar提供策略管理和文件完整性监控;审计平面将运行时决策与后续验证和恢复绑定在一起。

💡 核心设计:10个钩子 × 5层防护

🏗️ 零侵入架构(Zero-Fork)

PRISM最大的工程亮点是无需Fork上游代码。它以一个进程内插件(in-process plugin)为核心,注册到OpenClaw网关的生命周期钩子上,同时可以挂载4个可选的Sidecar服务:

  • Scanner:对可疑工具返回内容进行远程LLM辅助分类
  • Invoke-Guard Proxy:策略驱动的工具调用治理代理
  • Dashboard:审计浏览、策略配置和异常放行的运营界面
  • Monitor:对选定本地控制文件进行完整性监控

插件可以独立运行,Sidecar服务按需启用,完全模块化——运营者可以从轻量保护起步,随着安全需求增长逐步接入更多组件。

⚡ 生命周期全覆盖:5个阶段 × 10个钩子

 
▲ 图2:PRISM的生命周期全覆盖执行。安全控制分布在5个运行时阶段,系统可以从观察和警告逐步升级到硬性策略执行、内容清洗和有状态恢复。

这10个钩子组成5个防护阶段:

  1. 接入阶段message_received + before_prompt_build):扫描入站消息,如果会话风险积累已够高,在Prompt构建前注入安全警告上下文
  2. 执行前阶段before_tool_call):拦截危险工具调用——Shell元字符、蹦床命令、私有网络目标、受保护文件路径一律受策略管控
  3. 执行后阶段after_tool_call + tool_result_persist):对工具返回内容进行两级扫描;持久化前对可疑内容进行清洗,防止恶意文本污染后续Prompt上下文
  4. 出站阶段before_message_write + message_sending):最后一道防线——DLP检查凭证泄露,高风险会话的消息发送直接阻断
  5. 生命周期维护(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.0000.000n/a
Heuristics Only(仅启发式)0.4090.2220.514
Plugin Only(仅插件)0.4550.1940.563
Plugin + Scanner0.5450.1390.658
Full PRISM(完整部署)0.9550.1390.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