你的机密管理器在上下文窗口开始的地方终结
· 阅读需 13 分钟
你的 Vault 表现无可挑剔。秘密在静态存储时被加密,访问被记录,轮转是自动化的,没有任何明文会触碰磁盘。接着,你的 Agent 调用了一个调试工具,该工具将环境变量转储打印到标准输出(stdout),框架体贴地将标准输出送入模型的上下文——于是你的数据库凭据现在成了 Prompt 的一部分。从那一刻起,Vault 的保证就成了虚构。该凭据存在于你的可观测性平台捕获的 Trace(追踪)中,存在于你的提供商根据该前缀建立索引的 Prompt 缓存中,存在于你的 Agent 在会话之间写入的内存存储中,存在于某人从生产流量中快照得到的评测固件(eval fixture)中,以及提供商的保留日志中。五个持久化层,你的凭据管理器甚至不知道它们的存在。
这并非假设。一项针对超过 17,000 个已发布的 Agent 技能的大规模研究发现,通过日志导致的信息泄露占所有凭据安全问题的 73.5%——远超占比 18.2% 的硬编码密钥——这正是因为 Agent 框架会将控制台输出直接捕获到 LLM 上下文窗口中。旧的失败模式是开发者将密钥提交到 GitHub。新的失败模式是工具响应将密钥提交到上下文窗口,而上下文窗口没有 git revert。
