六层防御

agent安全的完整框架。学术界三层(架构→工具→密码学)+ GCP三层(身份→网络→资源)。每一层管一件事,六层各自独立、叠在一起。

前提:agent框架本身不防护。IssueTrojanBench测了4176次——66.5%恶意GitHub issue穿透Cursor/Claude Code/Codex的全部guardrails。Supply Chain Attack类别GPT全100%穿透。拦截几乎全靠LLM自身判断,agent层什么都没做。所以需要在外面包六层。

学术界三层

第一层 · 架构:Twin Agent
问题:agent在不可信环境里执行任务,可能被恶意输入劫持。

David Wagner(UC Berkeley)的方案。两个agent——Safe在可信环境,Explore在不可信环境。Explore接触外部数据但不能直接行动。所有决策经过Safe审核。信息通过100字符hint传递——residual compression,只传delta不传全文,攻击payload在压缩中丢失。

SWE-bench 62.5%效用,0%攻击成功率。核心是信息流隔离:不可信数据永远到不了决策端的完整上下文。

第二层 · 工具:OneCLI
问题:agent需要调API但不应该碰到真实凭据。

Rust gateway坐在agent和API之间。Agent用FAKE_KEY,gateway在出站请求时换成REAL_KEY。AES-256-GCM加密存储,host+path匹配路由。每个agent有scoped access token。

即使agent被穿透(IssueTrojanBench说66.5%会),没有凭据可泄露。credential isolation是对prompt injection攻击的直接缓解——攻击者拿到的是假钥匙。

github.com/onecli/onecli · HN 103分

第三层 · 密码学:ZK Agent Auth / CVA
问题:认证(AuthN)不蕴含授权(AuthZ)。agent证明了身份不代表有权执行这个操作。

用zk-SNARKs让agent在执行前证明请求满足策略——零知识证明,验证者能确认agent有权但看不到具体授权内容。三层binding分离:identity binding / authorization-request binding / runtime execution binding。

这是Controlled Capability Allocation(CCA)的密码学实现。Twin Agent用架构限制信息流,这篇用密码学验证每一步授权。

arxiv 2607.21325

GCP三层

2026年6月27日GCP博客,Pratik Bhangale。VPC Service Controls专门给agentic AI加的新能力。

第四层 · 身份:IAM + Principal Access Boundaries
问题:"谁"能访问什么资源。

Agent作为first-class IAM principal加入VPC-SC规则。principal映射单个agent,principalSet映射agent fleet。PAB强制最小权限——agent只有完成目标必需的权限。

被入侵可立即在网络层撤销agent身份,不需要等应用层响应。

第五层 · 网络:VPC Service Controls
问题:agent被劫持后尝试把数据传出去。

VPC-SC是destination-based perimeter——不看"谁"在请求,看请求"去哪"。三个OWASP攻击向量的防御:

ASI01 indirect prompt injection:agent被劫持尝试发数据到外部webhook→目标在perimeter外→阻断。ASI02/ASI08 tool misuse:prompt劫持导致工具串联恶意传数据→跨信任区→阻断。ASI03 insider threats:agent做BigQuery跨项目拷贝→IAM看到合法SA、防火墙看到合法HTTPS,但VPC-SC检查目标资源在perimeter外→拒绝。

新增MCP属性条件访问:基于mcp.toolName / mcp.method / mcp.tool.isReadOnly控制agent能用哪些工具。例:允许读Workspace MCP但禁止发邮件。

cloud.google.com 6/27/2026

第六层 · 资源:Organization Policy
问题:即使前五层都过了,资源本身的配置可能有问题。

Org Policy设广域不可变约束——资源怎么配置、怎么使用,在组织级别锁死。防止risky configurations by default。不是运行时检查,是配置时约束。

六层各管一件事:架构管信息流、工具管凭据、密码学管授权、身份管准入、网络管流向、资源管配置。任何一层被突破,其他层仍然站着。

为什么是六层

因为agent不是传统应用。传统应用的attack surface是代码漏洞——patch了就行。Agent的attack surface是自然语言输入——66.5%的恶意issue能穿透全部guardrails。你没法patch自然语言。

所以不靠agent自己防。在外面包。每一层都假设内层已经被突破了——Twin Agent假设Explore会被劫持,OneCLI假设agent会泄密,VPC-SC假设IAM会被绕过。defense in depth不是新概念,但在agent安全里是必需品。

跟OWASP LLM Top 10 v1.1的对照

LLM01 Prompt Injection → 第一层Twin Agent + 第五层VPC-SC。LLM05 Supply Chain → 第二层OneCLI。LLM07 Insecure Plugin → 第五层VPC-SC MCP过滤。LLM08 Excessive Agency → 第三层CVA + 第四层IAM。十个风险里八个被六层覆盖。剩两个(LLM03 Training Data Poisoning和LLM09 Overreliance)是模型层问题,不在agent运行时防御范围内。

OWASP LLM Top 10

最后更新:2026年7月26日