你的 AI Agent 在执行 `npm install` 时可能被注入——MVAR 用确定性执行防火墙拦截每一条通往系统工具的攻击路径
当你的 AI 编码 Agent(Claude Code、Codex、Cursor)在调试代码时执行 curl | bash、读取 /etc/shadow 或向生产 API 发送请求——它信任的每一个工具调用都可能成为 prompt injection 的跳板。传统检测方法试图「识别恶意提示」,但一旦模型输出抵达有特权的执行端点,拦截就已经太迟了。
MVAR(MIRRA Verified Agent Runtime) 是一个确定性的 Agent 执行防火墙。它不检测恶意提示,而是假设 prompt injection 一定会发生,在工具调用到达系统执行端点之前强制执行策略。Apache-2.0 开源,Python 库,pip install mvar-security 即可使用。
问题:Prompt Injection 不是提示问题,是执行问题
大多数 AI Agent 安全方案的做法是:在 LLM 输入侧加过滤层,检测输入是否包含注入意图。但这个思路有一个根本问题——当攻击载荷已经通过模型推理并转化为工具调用参数时,输入侧的任何检测都无法阻止已在执行路径上的命令。
MVAR 的核心论断是:Prompt injection 不是提示工程问题,是执行权限问题。只要 Agent 能执行 shell 命令、调用 API、读写文件或访问凭据,注入攻击就可以升级为真实的系统执行。与其在输入侧猜「这是不是恶意提示」,不如在执行侧问「这个未经验证的输入是否应该抵达这个特权端点」。
MVAR:确定性参考监视器
MVAR 不做 LLM 判官(不用第二个模型判断意图),不做提示过滤器(不检测提示内容的恶意性),而是作为确定性的执行参考监视器,在 Agent 的工具调用抵达特权端点前做策略裁决。
架构很简单:
LLM 推理 → 工具请求 → MVAR 执行边界 → 策略/来源/权限检查 → 特权执行端点(shell/API/文件系统/凭据)
MVAR 的 protect() 函数包装了一个工具函数,在每次调用时执行策略决定:
from mvar import protect, ExecutionBlocked
safe_tool = protect(my_bash_tool) # 默认使用 balanced 配置
try:
safe_tool("cat /etc/shadow")
except ExecutionBlocked as e:
print(e.decision["outcome"]) # BLOCK
print(e.decision["reason"])
支持三种配置:balanced(默认)、strict、permissive。每次拦截决策都附带加密见证(cryptographic witness),可以离线验证签名链:
mvar-verify-witness data/mvar_decisions.jsonl --require-chain
30 秒验证:注入攻击被拦截
git clone https://github.com/mvar-security/mvar.git cd mvar bash scripts/install.sh bash scripts/run-agent-testbed.sh --scenario rag_injection
预期输出显示基线(无保护)和 MVAR 保护下的对比:
Baseline: ALLOW -> executing bash command MVAR: BLOCK -> UNTRUSTED input reaching CRITICAL sink
Claude Code 生产就绪,更多框架在路上
MVAR 目前对 Claude Code 已是生产就绪。通过 mvar init --framework claude-code 一键集成:
| 框架 | 状态 | 安装命令 |
|---|---|---|
| Claude Code | ✅ 生产就绪 | mvar init --framework claude-code |
| LangChain | 🚧 计划中(1.5.5) | 即将推出 |
| OpenAI Agents SDK | 📋 计划中(1.6.x) | 即将推出 |
| MCP | 📋 计划中(1.6.x) | 即将推出 |
同时也适配 LangChain、OpenAI tool calling、AutoGen、CrewAI、OpenClaw 等运行时。
验证数据:60 个攻击向量,0 假阳性
MVAR 的 CI 门控在每次提交时运行完整的对抗验证套件:
- 60 个 prompt injection 攻击向量(6 类 × 10 个:数据泄露、破坏操作、权限提升、横向移动、凭据窃取、远程代码执行)
- 100 个良性向量 —— 零假阳性拦截
- 0.19% 语义绕过率(1 个残留,持续修复中)
每次验证生成可复现的证据包,含校验和和摘要 JSON:artifacts/repro/。
验证覆盖的攻击场景包括:编码/混淆恶意载荷、多步骤组合攻击、通过缓存/日志/临时文件进行的污点清洗等高级注入方式。
三层安全栈
MVAR 是 mvar-security 三层 AI 安全基础设施的运行时层:
| 层 | 工具 | 保护范围 |
|---|---|---|
| 运行时 | MVAR(本库) | 信息流如何在 Agent 中流动 |
| 执行 | ClawZero | Agent 能做什么 |
| 记忆 | ClawSeal | Agent 记住了什么 |
全栈安装:
pip install mvar-security # 运行时执行边界 pip install clawzero # OpenClaw 执行防火墙 pip install clawseal # 加密记忆
适用场景
如果你的 Agent 能做以下任何一件事,MVAR 就能提供保护:
- 执行 shell 命令(
bash、sh、zsh) - 调用外部 API(
curl、wget、requests) - 读写文件系统(
cat、echo >、rm) - 处理凭据和敏感数据
MVAR 不是一个操作系统沙箱,不与 Docker/seccomp 竞争;它是在 Agent 运行时内部增加一层确定性的执行边界,防止模型输出中的注入载荷抵达实际系统操作。
总结
MVAR 用一个简单的思想解决了 Agent 安全的一个核心难题:不要在输入侧猜,要在执行侧拦。确定性的策略执行比任何基于 LLM 的意图判断都更可靠——60 个攻击向量、100 个良性样本的验证数据说明了这一点。对于使用 Claude Code 的团队,MVAR 已经在生产就绪状态,可以在几行代码内为 Agent 增加一层确定性的执行防护。
相关链接: