AI Agent 的密钥遮蔽,为什么会被一段提示词关掉?Strands 漏洞解析
Strands Agents Tools 环境变量工具曾允许模型关闭密钥遮蔽。AWS 公告披露了触发条件、受影响版本和修复方法,升级后仍要检查工具权限与凭证。
先核对 strands-agents-tools 版本和环境变量工具是否加载;升级至修复版本,并按 AWS 建议轮换可能暴露的凭证。
相关信息
- 漏洞编号
- CVE-2026-115415 / GHSA-qjx4-hg6g-2f34
- 受影响范围
- strands-agents-tools 0.1.0 至 0.8.5,需关注加载 environment 工具的 Agent
- 修复版本
- 0.8.6;该版本起 environment 工具也被标记为弃用
- 披露时间
- AWS 和项目安全公告于 2026 年 10 月 28 日发布
一个工具参数,让模型碰到了遮蔽开关
AWS 10 月 28 日披露,Strands Agents Tools 中的 environment 工具曾允许模型通过工具参数关闭敏感值遮蔽。Agent 如果被一段恶意指令影响,就可能把运行进程里的环境变量原样读出来,其中可能包括云访问密钥、模型 API Key 或数据库连接信息。
这不是说安装 Strands 就会自动泄露。需要结合版本、Agent 是否加载了这个工具、进程环境里有什么,以及它是否会处理不可信内容来判断。AWS 的公告建议:升级工具包,并轮换加载过该工具的 Agent 进程环境中存在的凭证。
先看正常流程:模型为什么能读到环境变量
Strands Agents 是构建 AI Agent 的 SDK;strands-agents-tools 是一组可供 Agent 调用的工具。开发者把工具交给 Agent 后,模型并不直接执行 Python,而是根据工具给出的名称、说明和参数结构,决定调用哪个工具、传什么参数,再由程序执行并把结果返回给模型。
environment 工具用于查看或修改运行环境变量。旧版对名称看起来像密钥的变量默认做遮蔽:例如名称含有 KEY、TOKEN、SECRET 或 PASSWORD 时,返回结果不直接显示原值。这里的保护是按变量名识别的;即使开着,也不能证明所有敏感数据都一定会被识别。
项目公告说,读取操作 list 和 get 当时不需要操作者确认,只有 set 和 delete 会要求确认。换句话说,读操作能不能看到原值,很大程度上取决于遮蔽是否开启。
问题出在:模型也能决定是否遮蔽
问题就在工具参数里。旧版把控制遮蔽的 masked 参数放进了工具输入结构,模型可以在调用工具时改变它。默认值虽然是遮蔽,但如果模型传入 masked=false,工具就会按这个参数返回未遮蔽的环境变量;读取操作本身又不会弹出确认。
攻击者不一定要直接给 Agent 发命令。项目公告举出的入口包括 Agent 正在读取的网页、文件或前一个工具的输出:这些内容本来是待处理的数据,但其中夹带的指令可能让模型误以为应当调用 environment,并把遮蔽参数关掉。
拿到明文并不等于攻击者已经拿到了密钥。工具结果先返回给 Agent;如果 Agent 还有能发送消息、发起请求或写入外部位置的工具,且被诱导把结果传出去,才可能进一步造成外泄。单看漏洞编号或 CVSS,不能推断某个部署已被入侵;两份官方公告没有给出具体在野利用案例。
怎么判断自己的 Agent 是否需要处理
先找到实际运行 Agent 的 Python 环境,查看安装的是 strands-agents-tools 哪个版本。下面的命令只显示包信息,不读取环境变量;如果项目用容器、虚拟环境或多套 worker,要在对应的运行环境中核对,不能只看本机开发环境。
公告给出的受影响范围是 0.1.0 及以上、低于 0.8.6。接着查看 Agent 创建时的工具列表和封装代码:是否导入或注册了 environment,运行进程是否持有敏感变量,以及它是否接收外部网页、文档或其他不可信内容。只装了包但没有加载该工具,不等同于走到了公告所述的调用路径。
还要检查同一个 Agent 能否通过其他工具向外发送数据,以及日志、会话记录和工具调用记录中是否出现过可疑读取或输出。日志未记录完整参数时,不能仅凭没有看到异常就断言没有发生过。
python3 -m pip show strands-agents-tools升级修了什么,哪些事仍需要自己做
升级到 0.8.6 或后续适用版本后,遮蔽配置由操作者控制,模型不能再通过 environment 工具输入关闭它。environment 工具从该版本起也被标记为弃用;如果暂时无法升级,AWS 建议从 Agent 中移除这个工具。修改配置或依赖后,要按部署方式重建并重启实际运行的进程。
补丁处理的是这个具体的工具参数问题,不代表运行进程里的密钥从此不可读取。项目文档提醒,能在 Agent 进程中执行任意代码的工具,例如 shell 或 Python REPL,仍可能访问环境变量。因此不要为了替换一个环境变量工具,顺手给 Agent 更宽的命令执行权限。
AWS 建议轮换曾出现在加载该工具的 Agent 环境中的凭证。实际处理时先列出受影响工作负载使用了哪些身份和服务,再按各服务流程替换或撤销旧凭证,同时检查相关使用记录;不要把真实密钥复制到工单、聊天或排查日志中。减少长期凭证在进程环境中的驻留、收紧对外连接,也能缩小类似问题的影响范围。
资料来源
依据 AWS 与项目安全公告整理;未复现漏洞,也未检查任何具体 Agent 环境。。编辑与更正说明。
修订记录
2026-10-29:首次发布:解释 environment 工具的遮蔽参数、影响条件和修复边界。