AI Agent MCP 工具调用如同”裸奔”?VellaVeto 用策略防火墙守住安全边界
MCP(Model Context Protocol)让 AI 编码 Agent 能够调用文件系统、数据库、API 等外部工具,极大扩展了 Agent 的能力边界。但这也带来了一个严峻的安全问题:Agent 的工具调用几乎没有任何访问控制。
一个被提示注入的 Agent 可以读取 ~/.aws/credentials、向攻击者服务器发送敏感数据、修改系统配置文件——而这一切,在标准的 MCP 架构中没有任何中间层来阻止。这不是假设性威胁,过去 15 个月 MCP 生态已积累数十个公开 CVE,包括命令注入、路径遍历、供应链投毒等真实攻击。
VellaVeto 正是为解决这个”裸奔”问题而生的——一个 Agent Interaction Firewall(Agent 交互防火墙),部署在 AI Agent 和 MCP 工具之间,对所有工具调用进行策略评估、威胁检测和审计记录。
三层保护,开箱即用
VellaVeto 的设计哲学是”开箱即保护”——无需编写复杂的配置文件,通过简单的命令行参数即可选择保护级别:
curl -fsSL https://raw.githubusercontent.com/paolovella/vellaveto/main/scripts/install.sh | sh vellaveto-proxy --protect shield -- npx @modelcontextprotocol/server-filesystem /tmp vellaveto-proxy --protect fortress -- python -m mcp_server vellaveto-proxy --protect vault -- ./my-server
三种保护级别的差异一目了然:
- Shield(默认允许):阻挡凭据泄露、SANDWORM 配置注入、数据外泄、系统文件保护、Git hooks 滥用、危险命令、提示注入和 DLP。适合大多数开发者日常使用。
- Fortress(默认允许):在 Shield 基础上增加包配置篡改检测、提权审批、内存投毒检测和影子 Agent 检测。适合对安全性有更高要求的团队。
- Vault(默认拒绝):只允许读取源码和 Git 操作,所有写操作需要审批。适合最高安全场景。
架构:不是一个工具,是一个策略网关
VellaVeto 不是单一的二进制文件,而是一个有清晰分层的多 crate 项目。核心组件包括:
- vellaveto-engine:策略引擎,支持 glob/regex/域名匹配、参数约束、时间窗口、调用限速、ABAC(属性基访问控制)和 Wasm 插件
- vellaveto-audit:篡改可证的审计日志,每条决策都包含结构化的 ACIS 决策信封
- vellaveto-approval:审批流引擎,不可逆操作需要绑定审批
- vellaveto-proxy / vellaveto-http-proxy:两种网关部署模式
架构的核心原则是所有工具调用经过同一个策略管道,无法绕过。策略评估的 P99 延迟小于 5ms,对正常使用几乎没有影响。
30+ 层威胁检测
VellaVeto 内置了 30+ 层威胁检测能力,覆盖了 OWASP Agentic Top 10 的绝大部分攻击面:
- 提示注入检测:基于 Aho-Corasick 多模式匹配 + NFKC 标准化 + 混淆解码,识别绕过式攻击
- 工具欺诈检测:检测同形异义字工具名、MCP 供应链投毒(如 SANDWORM 蠕虫)
- 数据外泄防护:分析工具调用输出中的敏感数据模式
- 会话通道隔离:对不受信的工具响应自动标记污染源,防止跨会话信息泄露
- 拒绝钱包攻击:检测可能导致大量 API 调用的级联失败模式
每种检测都有对应的可配置策略,你可以根据实际需求开启或关闭特定检测层。
部署模式与自定义策略
除了 stdio 代理模式(如上文的 Shell 管道),VellaVeto 还支持 HTTP 反向代理模式,适合部署在服务器上的 MCP Server:
VELLAVETO_API_KEY=$(openssl rand -hex 32) vellaveto-http-proxy \ --upstream http://localhost:8000/mcp \ --config policy.toml \ --listen 127.0.0.1:3001
对于需要精细控制的场景,可以使用 TOML 格式的策略文件:
[[policies]]
name = "Allow file reads"
tool_pattern = "file_system"
function_pattern = "read"
policy_type = "Allow"
priority = 10
[[policies]]
name = "Block credential access"
tool_pattern = "file_system"
function_pattern = "read_file"
priority = 200
[policies.policy_type.Conditional.conditions]
parameter_constraints = [
{ param = "path", op = "glob", pattern = "/home/*/.aws/**", on_match = "deny" },
]
[[policies]]
name = "Block dangerous commands"
tool_pattern = "bash"
function_pattern = "*"
policy_type = "Deny"
priority = 100
许可证说明
VellaVeto 采用三层许可证策略:核心库使用 MPL-2.0(OSI 批准的开源许可证),API/SDK 使用 Apache-2.0,企业级功能使用 BUSL-1.1(源码可用但商业使用有限制)。这意味着个人开发者和开源项目可以免费使用核心功能,对 AI Agent 工具调用的安全管理已经完全足够。
写在最后
MCP 生态正在快速成熟,但安全基础设施仍然滞后。VellaVeto 填补了一个关键空白——它不是检测 Agent “做错了什么”的监控工具,而是在 Agent “能做之前”就阻止危险操作的防护层。对于在生产环境中使用 MCP 工具的开发者和团队来说,这层保护不是锦上添花,而是必需品。
如果你正在用 Claude Code、Codex 或 Cursor 调用文件系统、API 或数据库工具,值得花 3 分钟给这些工具调用加上一道安全门。
相关链接: