ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Agent Vault是如何注入凭据的?MITM代理架构原理深度剖析

Agent Vault是如何注入凭据的?MITM代理架构原理深度剖析 Agent Vault是如何注入凭据的MITM代理架构原理深度剖析【免费下载链接】agent-vaultA HTTP credential proxy and vault for AI agents like Claude Code, OpenClaw, Hermes, custom agents harnesses, and more.项目地址: https://gitcode.com/gh_mirrors/ag/agent-vaultAgent Vault 是一个面向 AI Agent 的 HTTP 凭据代理与保险库credential proxy and vault它把ANTHROPIC_API_KEY、GITHUB_PAT等密钥加密保存在服务端Agent 本身只持有假值所有出站请求经 MITM 代理转发时由 Agent Vault 自动匹配服务规则并注入真实凭据。本文结合源码完整剖析这套 MITM 代理架构从 CONNECT 隧道劫持、动态证书签发到凭据注入的五步工作流程帮助你彻底理解 Agent Vault 凭据注入的原理。为什么不能直接把密钥交给 AI Agent传统密钥管理的思路是把密钥发给应用自己保管。但 AI Agent 可以被提示注入prompt injection诱导把内存中的 API 密钥泄露到外部——这就是**凭据外泄credential exfiltration**问题。Agent Vault 的解法很直接Agent 永远不持有真实凭据。密钥只存放在 Agent Vault 的加密存储中Agent 的每个 HTTP 请求都被强制路由经过代理代理在出站前偷偷补上真实的 Authorization 头。这样即使 Agent 被攻击攻击者拿到的也只是一个毫无价值的假占位符。总体架构一个二进制两个端口Agent Vault 是单二进制部署同时扮演保险库和MITM 代理两个角色端口用途说明14321管理 API / Web UI创建 vault、存凭据、配服务规则14322MITM 代理监听器凭据注入发生在这一侧同一监听器同时处理两种请求形态见 internal/mitm/proxy.go 的dispatchCONNECT host:portHTTPS 上游。代理劫持hijack连接用动态 CA 即时签发的叶子证书终结客户端 TLS绝对形式转发请求如POST http://host/path纯 HTTP 上游无需劫持直接转发。最佳实践是把 Agent Vault 部署在与 Agent 不同的机器上——这样即使 Agent 主机被攻陷也摸不到存放密钥的代理进程。MITM 凭据注入五步工作流第一步一条命令配好代理环境运行agent-vault run -- claude后CLI 会在子进程环境中设置好一切Agent 代码零改动环境变量作用HTTPS_PROXY/HTTP_PROXY指向http://{token}:{vault}host:14322token 直接内嵌SSL_CERT_FILE、NODE_EXTRA_CA_CERTS、REQUESTS_CA_BUNDLE等让curl、Nodefetch、requests、gh等库信任 Agent Vault 根 CANO_PROXYlocalhost,127.0.0.1避免 Agent 回连 vault 管理口时被代理协议细节参考官方文档 docs/agents/protocol.mdxAgent 可自动获取的技能文件在 cmd/skill_cli.md。第二步CONNECT 劫持 动态签发证书 这是整个 MITM 架构最核心的一步实现在 internal/mitm/connect.go代理收到CONNECT api.anthropic.com:443先解析Proxy-Authorization中的 token解析出该 Agent 对应的 vault 作用域scope回复HTTP/1.1 200 Connection Established把连接劫持出来执行 TLS 握手客户端发来 SNI如api.anthropic.comGetCertificate回调触发p.ca.MintLeaf(sni)——为这个域名即时签发一张新证书握手成功后在这条 TLS 连接上以普通 HTTP 服务器身份服务此时代理已能明文看到隧道里的每个请求。动态 CASoftCA见 internal/ca/soft.go的关键设计根 CA 是 ECDSA P-256 自签名证书私钥用主密码派生的 AES-256-GCM 加密后落盘叶子证书按需签发TTL 24 小时按 SNI 做 LRU 缓存重复握手直接命中缓存对 SNI 做严格校验长度、字符集防止证书注入类攻击。第三步令牌认证与 vault 解析每条 CONNECT 都必须携带 Agent 的 bearer token代理据此解析出你是谁Agent 或用户、你能用哪个 vault。认证失败会写入按 IP 计的失败预算多次失败直接拒绝回环地址豁免避免本地vault run的 Agent 被误伤。第四步服务匹配 凭据注入核心中的核心请求落到forwardRequest后internal/mitm/forward.go凭据注入逻辑在 internal/brokercore/credential.go 的Inject中完成匹配服务用(host, port, path)三元组去匹配 vault 里配置的 broker services支持精确主机、通配域名*.github.com、路径作用域slack.com/api/*按精确度打分选择最优匹配匹配不到怎么办默认 passthrough 策略下按普通代理流量转发把 vault 设为严格模式unmatched_host_policydeny则直接返回 403 拒绝——出站白名单就此落地解密凭据命中服务后按服务引用的 key 名从存储取出密文用内存中的 AES-256-GCM 密钥解密OAuth 类型凭据若临近过期会自动静默刷新写入请求头ApplyInjectioninternal/brokercore/brokercore.go先剥掉客户端自带的同名 Authorization 头注入值永远获胜再剥掉Proxy-Authorization、hop-by-hop 头等不该穿越到上游的头最后Set真实凭据占位符替换如果服务配置了 substitutions代理会在 URL path、query、header 甚至 body 中把假值如__anthropic_api_key__替换为真实值替换逻辑见 internal/brokercore/substitution.go——body 替换还感知 Content-TypeJSON / form 分别做对应转义header 替换带 CRLF 注入防护。第五步转发上游 响应清理出站请求经全新的 TLS 连接发到真实上游证书严格校验响应回传时代理会剥掉Set-Cookie和 hop-by-hop 头防止上游向 Agent 的 cookie jar 里种 Cookie。若上游返回 401 且凭据是 OAuth 类型GET/HEAD 请求还会触发一次强制刷新后自动重试。实战在界面上配置凭据与服务规则理解了原理实际配置只有三步存凭据 → 定义服务 → 连接 Agent。 在 vault 中创建凭据值加密存储界面永不回显明文 定义服务规则声明主机如api.anthropic.com 认证方式bearer / basic / api-key / passthrough 占位符替换 创建 Agent 并拿到 token随后在 Agent 环境设置AGENT_VAULT_TOKEN与假凭据如ANTHROPIC_API_KEY__anthropic_api_key__用agent-vault run -- 你的agent启动即可这套架构的安全设计亮点 ✅凭据只在代理进程内存中短暂存在解密发生在上游转发前的最后一刻注入头从不进日志失败关闭fail-closed服务配置读取失败、凭据缺失都直接拒绝转发绝不让数据库抖动变成绕过管控目标锁定CONNECT 的目标 host 在隧道建立时就闭包捕获隧道内改 Host 头也无法劫持转发方向出站白名单deny 模式下未匹配服务的主机一律 403等于给 Agent 做了网络出口过滤限流与审计按 Agent/vault 维度限流每次请求的认证方式、匹配服务、结果都写入请求日志可在 UI 中回放 Agent 行为。关键源码地图模块职责internal/mitm/MITM 代理入口CONNECT 隧道、绝对形式转发、WebSocketinternal/ca/soft.go动态 CA根 CA 加密持久化、SNI 按需签发叶子证书internal/brokercore/credential.go服务匹配、凭据解密、OAuth 自动刷新internal/brokercore/substitution.go占位符替换path/query/header/bodyinternal/crypto/AES-256-GCM 加解密与 KDFdocs/learn/security.mdx安全模型文档一句话总结Agent Vault 用可信代理终结 TLS 动态 CA 伪造合法证书 出站时补真头三板斧让 Agent 用假钥匙开门、由代理在背后换成真钥匙——凭据从头到尾不经过 Agent 之手。【免费下载链接】agent-vaultA HTTP credential proxy and vault for AI agents like Claude Code, OpenClaw, Hermes, custom agents harnesses, and more.项目地址: https://gitcode.com/gh_mirrors/ag/agent-vault创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表