flawopen.com/Teardowns/cve-2026-105812-bedrock-agentcore-generated-code-injection
CVE-2026-105812: Code-Injection beim AgentCore-Import
Bis Version 0.3.13 des Bedrock AgentCore Starter Toolkit konnte Agentkonfiguration ohne sichere Kodierung in generierten Python-Code gelangen. Ein zweiter Nutzer, der den Agenten importierte und anschließend ausführte oder bereitstellte, konnte Code mit seinen lokalen Berechtigungen oder der AgentCore-Runtime-Ausführungsrolle starten. Ein Paket-Upgrade repariert bereits erzeugte Artefakte nicht.[1], [2], [3]
Der Importer ähnelt einem Etikettendrucker, der Agenteneinstellungen in Python-Anweisungen umwandelt. Vor der Korrektur wurden manche Werte ohne sicheres Escaping zwischen Anführungszeichen eingefügt. Ein Anführungszeichen im Wert konnte den Text vorzeitig beenden, sodass der Rest als Python-Syntax gelesen wurde. Die Korrektur kodiert den Wert als Python-Stringliteral und hält ihn damit als Daten fest.[2], [5]
Kernkonzepte & Begriffe
Agentenimport- Workflow des Starter Toolkit, der die Konfiguration eines Bedrock-Agenten liest und ein lokales Python-Projekt für ein Framework wie Strands oder LangChain erzeugt.[2], [5]
Codegenerierung- Erzeugung von Quellcode durch Kombination von Programmvorlagen mit Konfigurationswerten oder anderen Eingaben.[2], [5]
Python-Stringliteral- Quelltextnotation, die Text als Daten darstellt.
repr()liefert eine zitierte Darstellung mit maskierten Zeichen, damit sie keine Python-Syntax werden.[5]
Framework-Zuordnungen
- CWE-Referenz für die in diesem Leitfaden beschriebene Schwachstelle: CWE-94
Ursachenanalyse
Der verwundbare Import-Übersetzer erzeugte Python mit f-Strings und Vorlagen, in die Werte des Bedrock-Agenten direkt eingesetzt wurden, darunter Prompts und weitere Konfigurationsfelder. Werte mit Python-Stringbegrenzern konnten den vorgesehenen Textkontext verlassen. Der Patch 0.3.14 ergänzt python_string_literal() mit repr(str(value)) und python_data_literal() zur Normalisierung JSON-kompatibler Daten und leitet erzeugte Zeichenketten durch diese Encoder. Der Maintainer-Hinweis beschreibt die Kette: Ein authentifizierter Principal im selben Konto muss Agentendaten ändern können; ein anderer Nutzer importiert den Agenten und führt das erzeugte Projekt später aus oder stellt es bereit. Der Code läuft mit den lokalen Rechten des Importierenden oder der AgentCore-Runtime-Ausführungsrolle. AWS zufolge reicht ein Upgrade für Artefakte aus verwundbaren Versionen nicht; mit 0.3.14 oder neuer neu importieren und lokale sowie bereitgestellte Ausgaben ersetzen. CVE-2026-106032 betrifft separat externe OpenAPI-Referenzen beim Import und nicht diese Codegenerierungs-Schwachstelle.
Wann die Schwachstelle im generierten Code erreichbar ist
| Grenze | Dokumentierte Bedingung | Schutzmaßnahme |
|---|---|---|
| Toolkit-Version | Versionen bis einschließlich 0.3.13 fügen bestimmte Werte ohne sichere Literal-Kodierung in generierten Python-Code ein. | Auf Version 0.3.14 oder höher aktualisieren oder zu @aws/agentcore migrieren. |
| Wer die Daten ändern kann | Ein authentifizierter Principal desselben AWS-Kontos kann relevante Felder des Bedrock Agent ändern. | Schreibrechte für Agent-Daten auf vertrauenswürdige Principals beschränken. |
| Import durch eine zweite Person | Ein zweiter Benutzer importiert den geänderten Agent über den betroffenen Starter-Toolkit-Ablauf. | Agent-Daten anderer Principals als nicht vertrauenswürdig behandeln und vor dem Import ihre Herkunft prüfen. |
| Auslöser der Ausführung | Der importierende Benutzer führt das generierte Projekt aus oder stellt es bereit; der Code läuft mit lokalen Rechten oder der AgentCore-Runtime-Rolle. | Mit isolierten Zugangsdaten und Runtime-Rollen mit minimalen Rechten importieren und testen. |
| Bereits generierte Artefakte | Ein Paket-Upgrade repariert keine Projekte, die zuvor mit betroffenen Versionen generiert wurden. | Mit der korrigierten Version erneut importieren und lokale sowie bereitgestellte Artefakte ersetzen. |
Schritt-für-Schritt Angriffsablauf
Ein Principal desselben Kontos kann Agentendaten ändern
Voraussetzung ist ein authentifizierter Principal im AWS-Konto mit Berechtigungen zum Ändern relevanter Bedrock-Agent-Felder, etwa Aktionsgruppen-Schemas, Kollaborationsanweisungen oder Prompt-Overrides.[2]
Quellcode: Verwundbar vs. Sicher
Dieser gezielte Ausschnitt aus dem Upstream-Diff zeigt, dass der verwundbare Übersetzer Konfiguration in eine dreifach zitierte Python-Zeichenkette interpolierte. Die Korrektur übergibt den vollständigen Text an python_string_literal(), das ihn mit repr() als Daten maskiert. Version 0.3.14 wendet dasselbe Prinzip auf weitere erzeugte Zeichenketten und JSON-kompatible Daten an. Regressionstests parsen die Ausgabe und prüfen, dass Markierungstext eine Stringkonstante bleibt. Der Ausschnitt analysiert Quellcode und enthält weder einen injizierten Wert noch einen ausführbaren Exploit.[2], [5]
Quelltextauszug: services/import_agent/scripts/base_bedrock_translate.py und services/import_agent/utils.py — gezielter PRE_PROCESSING-Promptausschnitt
# Vor der Korrektur in 0.3.14: Der Vorlagenwert wurde direkt in Python-Quelltext mit dreifachen Anführungszeichen eingesetzt.
self.prompts_code += f"""
PRE_PROCESSING_TEMPLATE=\"""\n
{config["basePromptTemplate"]["system"]}
\"""
"""
# 0.3.14: Den vollständigen Wert als Python-Stringliteral kodieren
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))
Checkliste für Engineering & Systemsicherheit
- ✓Entwicklungsrechner und CI-Jobs mit
bedrock-agentcore-starter-toolkiterfassen, einschließlich Forks und vendorter Kopien, nicht nur das Abhängigkeitsmanifest.[1], [2] - ✓Auf Version 0.3.14 oder neuer aktualisieren oder zur unterstützten CLI
@aws/agentcoremigrieren; das Starter Toolkit ist eingestellt.[1], [2] - ✓Agenten, die mit einer betroffenen Version erzeugt wurden, neu importieren und lokale sowie bereitgestellte Artefakte ersetzen. Ein Paket-Upgrade lässt den alten generierten Quelltext bestehen.[1], [2]
- ✓
bedrock:CreateAgentActionGroup,bedrock:UpdateAgentActionGroupundbedrock:AssociateAgentCollaboratorauf vertrauenswürdige Principals beschränken, wie im Maintainer-Hinweis empfohlen.[2] - ✓Prüfen, welche Bedrock-Agent-Datenfelder andere Principals desselben Kontos ändern können, bevor sie in eine privilegierte Entwicklungsumgebung importiert werden.[2]
- ✓Einen Regressionstest ergänzen, der generiertes Python parst und bestätigt, dass kontrollierter Markierungstext nur in Stringkonstanten vorkommt, niemals als neue Zuweisung oder ausführbare Anweisung.[5]
- ✓Importierte Agenten mit lokalen Zugangsdaten und Runtime-Rollen geringster Berechtigung ausführen, damit eine künftige Generatorlücke begrenzte Folgen hat.[1]
- ✓
CVE-2026-106032getrennt behandeln: Sie betrifft SSRF und lokalen Dateizugriff über externe OpenAPI-Referenzen beim Import und hat eine andere fehlerhafte Grenze sowie Korrektur.[6], [9]
Quellen
- 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)