flawopen.com/Teardowns/cve-2026-105812-bedrock-agentcore-generated-code-injection
CVE-2026-105812: inyección en importador AgentCore
Hasta la versión 0.3.13 de Bedrock AgentCore Starter Toolkit, la configuración de un agente podía incorporarse al Python generado sin codificación segura. Un segundo usuario que importara y después ejecutara o desplegara el agente podía ejecutar código con sus privilegios locales o con el rol de ejecución de AgentCore Runtime. Actualizar el paquete no corrige los artefactos ya generados.[1], [2], [3]
El importador se parece a una etiquetadora que convierte la configuración del agente en instrucciones Python. Antes del arreglo, algunos valores se pegaban entre comillas sin escaparse de forma segura. Una comilla en el dato podía cerrar el texto antes de tiempo y hacer que lo siguiente se interpretara como sintaxis Python. El arreglo codifica el valor como literal de cadena para conservarlo como dato.[2], [5]
Conceptos Clave y Términos
Importación de agentes- Flujo de Starter Toolkit que lee la configuración de un agente Bedrock y genera un proyecto Python local para frameworks como Strands o LangChain.[2], [5]
Generación de código- Creación de código fuente al combinar plantillas de programa con valores de configuración u otras entradas.[2], [5]
Literal de cadena Python- Notación fuente que representa texto como dato.
repr()devuelve una representación entrecomillada con caracteres escapados para que no se conviertan en sintaxis Python.[5]
Mapeos de marcos
- Referencia CWE para la debilidad descrita en esta guía: CWE-94
Análisis de Causa Raíz
El traductor vulnerable construía código Python con f-strings y plantillas que interpolaban directamente valores del agente Bedrock, incluidos prompts y otros campos de configuración. Los valores con delimitadores de cadenas Python podían salir del contexto de texto previsto. El parche 0.3.14 añade python_string_literal() mediante repr(str(value)) y python_data_literal() para normalizar datos JSON, y pasa las cadenas generadas por estos codificadores. El aviso del mantenedor acota la cadena: un principal autenticado de la misma cuenta debe poder modificar datos del agente; otro usuario importa el agente y luego ejecuta o despliega el proyecto generado. El código resultante se ejecuta con los privilegios locales del importador o el rol de ejecución de AgentCore Runtime. AWS indica que actualizar no basta para los artefactos creados con versiones afectadas: vuelva a importar con 0.3.14 o posterior y sustituya las salidas locales y desplegadas. La CVE-2026-106032 es distinta: trata de referencias OpenAPI externas durante la importación, no de esta generación de código.
Cuándo se puede alcanzar el fallo de código generado
| Límite | Condición documentada | Medida defensiva |
|---|---|---|
| Versión del toolkit | Las versiones hasta la 0.3.13 insertan algunos valores en Python generado sin codificación segura de literales. | Actualiza a 0.3.14 o posterior, o migra a @aws/agentcore. |
| Quién puede modificar los datos | Un principal autenticado de la misma cuenta de AWS puede modificar campos pertinentes de Bedrock Agent. | Limita los permisos de escritura de datos del agente a principales de confianza. |
| Importación por otra persona | Un segundo usuario importa el agente modificado mediante el flujo afectado de Starter Toolkit. | Trata como no confiables los datos de agentes de otros principales y revisa su procedencia antes de importarlos. |
| Activación de la ejecución | El usuario que importa ejecuta o despliega el proyecto generado; el código se ejecuta con privilegios locales o con el rol de AgentCore Runtime. | Importa y prueba con credenciales y roles de ejecución aislados y con privilegios mínimos. |
| Artefactos ya generados | Actualizar el paquete no corrige proyectos generados anteriormente con versiones afectadas. | Vuelve a importar con la versión corregida y reemplaza los artefactos locales y desplegados. |
Flujo de Ataque Paso a Paso
Un principal de la cuenta puede modificar los datos del agente
El requisito previo es un principal autenticado en la cuenta de AWS con permisos para cambiar campos relevantes de Bedrock Agent, como esquemas de grupos de acciones, instrucciones de colaboración o sustituciones de prompts.[2]
Código Fuente: Vulnerable vs. Seguro
Este fragmento del diff ascendente muestra que el traductor vulnerable interpolaba la configuración en una cadena Python entre comillas triples; la corrección pasa el texto completo por python_string_literal(), que usa repr() para escaparlo como dato. La versión 0.3.14 aplica el mismo principio a otras cadenas generadas y a datos compatibles con JSON, e incluye pruebas de regresión que analizan la salida y comprueban que el texto marcador sigue siendo una constante de cadena. El fragmento analiza el código fuente; no contiene un valor inyectado ni una explotación ejecutable.[2], [5]
Fragmento de origen: services/import_agent/scripts/base_bedrock_translate.py y services/import_agent/utils.py — fragmento específico del prompt PRE_PROCESSING
# Antes de la corrección 0.3.14: el valor de la plantilla se insertaba directamente en código Python entre comillas triples.
self.prompts_code += f"""
PRE_PROCESSING_TEMPLATE=\"""\n
{config["basePromptTemplate"]["system"]}
\"""
"""
# 0.3.14: codifica el valor completo como un literal de cadena de 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))
Lista de Verificación de Seguridad para Ingeniería
- ✓Inventaríe estaciones de desarrollo y trabajos de CI que usen
bedrock-agentcore-starter-toolkit, incluidos forks y copias vendorizadas, no solo el manifiesto de dependencias.[1], [2] - ✓Actualice a la versión 0.3.14 o posterior, o migre a la CLI compatible
@aws/agentcore; Starter Toolkit está obsoleto.[1], [2] - ✓Vuelva a importar los agentes generados con una versión afectada y sustituya los artefactos locales y desplegados. Actualizar el paquete deja intacto el código antiguo.[1], [2]
- ✓Restrinja
bedrock:CreateAgentActionGroup,bedrock:UpdateAgentActionGroupybedrock:AssociateAgentCollaboratora principales de confianza, como recomienda el aviso del mantenedor.[2] - ✓Revise qué campos de Bedrock Agent pueden modificar otros principales de la cuenta antes de importarlos en un entorno de desarrollo privilegiado.[2]
- ✓Añada una prueba de regresión que analice el Python generado y compruebe que el texto marcador controlado solo aparece en constantes de cadena, no como asignación o instrucción ejecutable.[5]
- ✓Ejecute los agentes importados con credenciales locales y roles de runtime de mínimo privilegio para acotar el impacto de otro fallo del generador.[1]
- ✓Mantenga separada la
CVE-2026-106032: es un problema de SSRF y lectura de archivos locales mediante referencias OpenAPI durante la importación, con otro límite vulnerable y otro arreglo.[6], [9]
Fuentes
- 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)