flawopen.com/Teardowns/cve-2026-105812-bedrock-agentcore-generated-code-injection
CVE-2026-105812: injeção de código no importador AgentCore
Até a versão 0.3.13 do Bedrock AgentCore Starter Toolkit, dados de configuração de um agente podiam ser inseridos no Python gerado sem codificação segura. Um segundo usuário que importasse e depois executasse ou implantasse o agente poderia rodar código com seus privilégios locais ou com o papel de execução do AgentCore Runtime. Atualizar o pacote não corrige artefatos já gerados.[1], [2], [3]
O importador funciona como uma impressora de etiquetas que transforma configurações do agente em instruções Python. Antes da correção, alguns valores eram colados entre aspas sem escape seguro. Uma aspa no dado podia encerrar o texto antes da hora e fazer o restante ser lido como sintaxe Python. A correção codifica o valor como literal de string, mantendo-o como dado.[2], [5]
Conceitos Centrais e Termos
Importação de agente- Fluxo do Starter Toolkit que lê a configuração de um agente Bedrock e gera um projeto Python local para frameworks como Strands ou LangChain.[2], [5]
Geração de código- Criação de código-fonte ao combinar modelos de programa com valores vindos de configuração ou de outras entradas.[2], [5]
Literal de string Python- Notação-fonte que representa texto como dado.
repr()retorna uma representação entre aspas com caracteres escapados para que não virem sintaxe Python.[5]
Mapeamentos de frameworks
- Referência CWE para a fraqueza descrita neste guia: CWE-94
Análise de Causa Raiz
O tradutor de importação vulnerável montava código Python com f-strings e texto de modelo que interpolava diretamente valores do agente Bedrock, incluindo prompts e outros campos de configuração. Valores com delimitadores de string Python podiam sair do contexto de texto pretendido. A correção 0.3.14 introduz python_string_literal() com repr(str(value)) e python_data_literal() para normalizar dados JSON, e passa strings geradas por esses codificadores. O aviso do mantenedor delimita a cadeia: um principal autenticado na mesma conta precisa poder alterar dados do agente; outro usuário importa o agente e depois executa ou implanta o projeto gerado. O código roda com os privilégios locais do importador ou com o papel de execução do AgentCore Runtime. A AWS diz que atualizar não basta para artefatos gerados por versões afetadas; importe novamente com 0.3.14 ou posterior e substitua as saídas locais e implantadas. A CVE-2026-106032 separada trata de referências OpenAPI externas durante a importação, não desta falha de geração de código.
Quando a falha de código gerado pode ser alcançada
| Limite | Condição documentada | Ação defensiva |
|---|---|---|
| Versão do toolkit | Versões até 0.3.13 inserem alguns valores no Python gerado sem codificação segura de literais. | Atualize para 0.3.14 ou posterior, ou migre para @aws/agentcore. |
| Quem pode alterar os dados | Um principal autenticado na mesma conta AWS pode modificar campos relevantes do Bedrock Agent. | Restrinja permissões de escrita dos dados do agente a principais confiáveis. |
| Importação por outro usuário | Um segundo usuário importa o agente modificado pelo fluxo afetado do Starter Toolkit. | Trate dados de agentes de outros principais como não confiáveis e revise a procedência antes da importação. |
| Gatilho de execução | O usuário que importa executa ou implanta o projeto gerado; o código roda com privilégios locais ou com a função do AgentCore Runtime. | Importe e teste com credenciais e funções de runtime isoladas e com privilégios mínimos. |
| Saída já gerada | Atualizar o pacote não corrige projetos criados anteriormente por versões afetadas. | Reimporte com a versão corrigida e substitua os artefatos locais e implantados. |
Fluxo de Ataque Passo a Paso
Um principal da mesma conta pode alterar os dados do agente
O pré-requisito é um principal autenticado na conta AWS com permissão para mudar campos relevantes do agente Bedrock, como esquemas de grupos de ação, instruções de colaboração ou substituições de prompt.[2]
Código-Fonte: Vulnerável vs. Seguro
Este trecho focado do diff upstream mostra que o tradutor vulnerável interpolava a configuração em uma string Python entre aspas triplas; a correção passa o texto completo por python_string_literal(), que usa repr() para escapá-lo como dado. A versão 0.3.14 aplica o mesmo princípio às outras strings geradas e aos dados compatíveis com JSON, além de incluir testes de regressão que analisam a saída e verificam que o texto marcador continua sendo uma constante de string. O trecho é uma análise do código-fonte, não um valor injetado nem uma exploração executável.[2], [5]
Trecho de origem: services/import_agent/scripts/base_bedrock_translate.py e services/import_agent/utils.py — trecho focado do prompt PRE_PROCESSING
# Antes da correção 0.3.14: o valor do modelo era inserido diretamente no código Python entre aspas triplas.
self.prompts_code += f"""
PRE_PROCESSING_TEMPLATE=\"""\n
{config["basePromptTemplate"]["system"]}
\"""
"""
# 0.3.14: codifique o valor completo como um literal de string 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 Verificação de Segurança para Engenharia
- ✓Inventarie estações de desenvolvimento e tarefas de CI que usam
bedrock-agentcore-starter-toolkit, incluindo forks e cópias locais vendorizadas, não apenas o manifesto de dependências.[1], [2] - ✓Atualize para a versão 0.3.14 ou posterior, ou migre para a CLI suportada
@aws/agentcore; o Starter Toolkit foi descontinuado.[1], [2] - ✓Importe novamente agentes produzidos por uma versão afetada e substitua os artefatos locais e implantados. Atualizar o pacote deixa o código-fonte antigo no lugar.[1], [2]
- ✓Restrinja
bedrock:CreateAgentActionGroup,bedrock:UpdateAgentActionGroupebedrock:AssociateAgentCollaboratora principais confiáveis, conforme recomenda o aviso do mantenedor.[2] - ✓Revise quais campos de dados do Bedrock Agent podem ser alterados por outros principais da conta antes de importá-los em um ambiente de desenvolvimento privilegiado.[2]
- ✓Adicione um teste de regressão que analise o Python gerado e confirme que marcadores controlados aparecem apenas em constantes de string, nunca como novas atribuições ou instruções executáveis.[5]
- ✓Execute agentes importados com credenciais locais e papéis de runtime de privilégio mínimo para limitar o impacto de futuras falhas no gerador.[1]
- ✓Mantenha a
CVE-2026-106032separada: ela é uma falha de SSRF e acesso a arquivos locais por referências OpenAPI durante a importação, com outra fronteira e correção no código-fonte.[6], [9]
Fontes
- 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)