flawopen.com/Teardowns/cve-2026-105812-bedrock-agentcore-generated-code-injection
CVE-2026-105812:AgentCore 导入器代码注入
在 Bedrock AgentCore Starter Toolkit 0.3.13 及更早版本中,智能体配置可能未经安全编码就写入生成的 Python。另一名用户导入智能体并随后运行或部署时,生成代码可能以该用户的本地权限或 AgentCore Runtime 执行角色运行。升级软件包不会修复此前生成的制品。[1], [2], [3]
导入器就像一台标签打印机,把智能体设置转换成 Python 指令。修复前,部分值未经安全转义就被粘贴到引号之间。数据中的引号可能提前结束字符串,让后续内容被解释为 Python 语法。修复会将值编码成 Python 字符串字面量,使其保持为数据。[2], [5]
核心概念与专有名词
Python 字符串字面量- 在源代码中将文本表示为数据的记法。
repr()会返回带引号且字符已转义的表示,避免字符成为 Python 语法。[5]
框架映射
- 本指南所述弱点的 CWE 参考: CWE-94
根本原因剖析 (Root Cause)
存在漏洞的导入转换器使用 f-string 和模板构造 Python 源码,并直接插入 Bedrock 智能体中的值,包括提示词和其他配置字段。包含 Python 字符串分隔符的值可能脱离预期的文本上下文。0.3.14 补丁加入基于 repr(str(value)) 的 python_string_literal(),以及用于规范化 JSON 兼容数据的 python_data_literal(),并让生成的字符串通过这些编码函数。维护者公告界定了攻击链:同一 AWS 账户内的已认证主体必须能够修改智能体数据;随后另一名用户导入智能体,再运行或部署生成的项目。代码以导入者的本地权限或 AgentCore Runtime 执行角色运行。AWS 表示,升级无法修复受影响版本生成的制品;应使用 0.3.14 或更高版本重新导入,并替换本地及已部署输出。CVE-2026-106032 是另一问题,涉及导入期间处理外部 OpenAPI 引用,并非此处的代码生成漏洞。
生成代码缺陷的可达条件
| 边界 | 已记录的条件 | 防御措施 |
|---|---|---|
| Toolkit 版本 | 0.3.13 及更早版本会在未安全编码字面量的情况下,将部分值写入生成的 Python。 | 升级到 0.3.14 或更高版本,或迁移到 @aws/agentcore。 |
| 谁能修改数据 | 同一 AWS 账户中的已认证主体可以修改 Bedrock Agent 的相关字段。 | 仅向可信主体授予代理数据写入权限。 |
| 另一用户导入 | 另一用户通过受影响的 Starter Toolkit 流程导入已修改的代理。 | 将其他主体提供的代理数据视为不可信,并在导入前检查其来源。 |
| 执行触发条件 | 导入者运行或部署生成的项目后,代码会以其本地权限或 AgentCore Runtime 角色运行。 | 使用隔离且遵循最小权限的凭证和运行时角色进行导入与测试。 |
| 已生成的产物 | 升级软件包不会修复先前由受影响版本生成的项目。 | 使用修复版本重新导入,并替换本地和已部署的产物。 |
攻击执行流程分解
同一账户中的主体能够修改智能体数据
前提是 AWS 账户内的已认证主体有权限更改相关 Bedrock Agent 字段,例如操作组 schema、协作指令或提示词覆盖值。[2]
源代码对比:漏洞与安全实现
这段上游补丁片段显示,存在漏洞的转换器会把配置直接插入三引号 Python 字符串。修复将完整文本传给 python_string_literal(),由 repr() 将其转义为数据。0.3.14 还把相同编码原则用于其他生成字符串和 JSON 兼容数据,并添加回归测试解析输出,确认标记文本仍是字符串常量。该片段用于分析源码,不包含注入值或可运行的利用代码。[2], [5]
源码摘录: services/import_agent/scripts/base_bedrock_translate.py 和 services/import_agent/utils.py:PRE_PROCESSING 提示词相关代码片段
# 0.3.14 修复前:模板值会直接插入使用三引号的 Python 源码。
self.prompts_code += f"""
PRE_PROCESSING_TEMPLATE=\"""\n
{config["basePromptTemplate"]["system"]}
\"""
"""
# 0.3.14:将完整值编码为 Python 字符串字面量
prompt = f"\n\n {config['basePromptTemplate']['system']}\n "
self.prompts_code += f"\n PRE_PROCESSING_TEMPLATE={python_string_literal(prompt)}\n"
# services/import_agent/utils.py
def python_string_literal(value: Any) -> str:
return repr(str(value))
工程与系统安全加固清单
- ✓盘点使用
bedrock-agentcore-starter-toolkit的开发设备和 CI 作业,包括 fork 与本地 vendored 副本,而不只是依赖清单。[1], [2] - ✓升级到 0.3.14 或更高版本,或迁移至受支持的
@aws/agentcoreCLI;Starter Toolkit 已弃用。[1], [2] - ✓重新导入由受影响版本生成的智能体,并替换本地及已部署制品。升级软件包不会改写旧生成源码。[1], [2]
- ✓按照维护者公告建议,将
bedrock:CreateAgentActionGroup、bedrock:UpdateAgentActionGroup和bedrock:AssociateAgentCollaborator限制给可信主体。[2] - ✓在将 Bedrock Agent 数据导入高权限开发环境前,确认账户内其他主体能够修改哪些数据字段。[2]
- ✓添加回归测试解析生成的 Python,并确认受控标记文本只出现在字符串常量中,而不会成为新的赋值或可执行语句。[5]
- ✓以最小权限本地凭证和 Runtime 角色运行导入的智能体,以限制未来生成器漏洞的影响。[1]
- ✓单独跟踪
CVE-2026-106032:它是在导入期间通过外部 OpenAPI 引用触发 SSRF 和本地文件访问,漏洞边界及修复方式均不同。[6], [9]
参考来源
- AWS Security Bulletin 2026-127-AWS
- Maintainer advisory GHSA-37r5-8xpw-vxp9
- CVE-2026-105812 record
- NVD record for CVE-2026-105812
- Upstream fix commit 38545b1
- Separate CVE-2026-106032 maintainer advisory
- Control Plane coverage, October 7, 2026 (attention signal)
- TechGeeks coverage, October 6, 2026 (attention signal)