2026年7月10日 1 分钟阅读

你的 AI Agent 在执行 `npm install` 时可能被注入——MVAR 用确定性执行防火墙拦截每一条通往系统工具的攻击路径

tinyash 0 条评论

当你的 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(默认)、strictpermissive。每次拦截决策都附带加密见证(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 中流动
执行ClawZeroAgent 能做什么
记忆ClawSealAgent 记住了什么

全栈安装:

pip install mvar-security    # 运行时执行边界
pip install clawzero          # OpenClaw 执行防火墙
pip install clawseal          # 加密记忆

适用场景

如果你的 Agent 能做以下任何一件事,MVAR 就能提供保护:

  • 执行 shell 命令(bashshzsh
  • 调用外部 API(curlwgetrequests
  • 读写文件系统(catecho >rm
  • 处理凭据和敏感数据

MVAR 不是一个操作系统沙箱,不与 Docker/seccomp 竞争;它是在 Agent 运行时内部增加一层确定性的执行边界,防止模型输出中的注入载荷抵达实际系统操作。

总结

MVAR 用一个简单的思想解决了 Agent 安全的一个核心难题:不要在输入侧猜,要在执行侧拦。确定性的策略执行比任何基于 LLM 的意图判断都更可靠——60 个攻击向量、100 个良性样本的验证数据说明了这一点。对于使用 Claude Code 的团队,MVAR 已经在生产就绪状态,可以在几行代码内为 Agent 增加一层确定性的执行防护。

相关链接:

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。