flawopen.com/Teardowns/cve-2026-106032-bedrock-agentcore-openapi-reference-ssrf
CVE-2026-106032: SSRF im AgentCore-OpenAPI-Importer
Bis Version 0.3.13 löste das Starter Toolkit beim Agentenimport externe OpenAPI-Referenzen auf. Manipulierte Aktionsgruppendaten konnten dadurch ausgehende Anfragen oder lokale Dateizugriffe auslösen. Aktualisieren Sie auf 0.3.14 oder neuer, importieren Sie betroffene Agenten erneut und ersetzen Sie erzeugte Artefakte.[1], [2], [3]
Stellen Sie sich den Importer als Büroangestellten vor, der anhand der Verweise in einem Dokument einen Ordner zusammenstellt. Der verwundbare Angestellte folgte jedem Verweis, auch außerhalb des Ordners oder zu lokalen Dateien. Ein scheinbar vertrauenswürdiger Agent konnte den Rechner so während des Zusammenstellens Daten abrufen oder lesen lassen. Die Korrektur beschränkt Verweise auf Seiten im selben Dokument.[2], [7], [8]
Kernkonzepte & Begriffe
OpenAPI $ref- Verweis auf ein OpenAPI-Schema oder eine Definition. Ein Fragment verweist innerhalb des aktuellen Dokuments; ein externer Verweis kann eine andere Ressource bezeichnen.[1]
Prance ResolvingParser- Parser, den das Starter Toolkit beim Agentenimport zum Laden und Auflösen von OpenAPI-Verweisen verwendet.[2]
SSRF- Server-Side Request Forgery: Nicht vertrauenswürdige Eingaben veranlassen Software, Anfragen aus ihrer eigenen Netzwerkposition zu senden.[7], [8]
Framework-Zuordnungen
- CWE-Referenz für die in diesem Leitfaden beschriebene Schwachstelle: CWE-918
- OWASP Top 10:2025 — A01:2025 Broken Access Control
Ursachenanalyse
In Version 0.3.13 übergab get_agent_info() die OpenAPI-Daten einer Aktionsgruppe direkt an prance.ResolvingParser, ohne die Auflösungstypen einzuschränken. Version 0.3.14 ruft zuerst assert_local_references_only() auf. Diese rekursive Prüfung weist Stringwerte in $ref zurück, die nicht mit dem internen Fragmentpräfix #/ beginnen, und setzt anschließend resolve_types=RESOLVE_INTERNAL. Dadurch ruft der Parser über diesen Importpfad keine externen OpenAPI-Referenzen mehr ab. Die Maintainer-Tests prüfen die Zurückweisung vor dem Parseraufruf und decken HTTP-, file-, absolute und Netzwerkpfade ab; interne Fragmente bleiben zulässig. Übertragen Sie diesen Befund nicht auf andere Importpfade und behaupten Sie nicht, der Prozess sei damit gegen jeden Netzwerk- oder Dateizugriff geschützt. Die unterstützte Korrektur ist das Upgrade; der Codevergleich zeigt die Upstream-Grenze und ist keine Exploit-Anleitung. Das GitHub-Advisory nennt @seankohjs als meldende Person; AWS dankt Koh Jun Sheng für die Mitwirkung an der koordinierten Offenlegung der Schwachstelle.[2], [7], [8], [1]
Schritt-für-Schritt Angriffsablauf
Ein Principal desselben Kontos ändert Agentendaten
Ein authentifizierter Principal im selben AWS-Konto muss das OpenAPI-Schema der Aktionsgruppe des Bedrock Agent ändern können, um dort einen präparierten externen Referenzwert einzufügen. Dies ist kein nicht authentifizierter Angriff aus dem Internet.[2]
Aktualisieren, erneut importieren und Artefakte ersetzen
Aktualisieren Sie auf 0.3.14 oder neuer, importieren Sie mit betroffenen Versionen importierte Agenten erneut und ersetzen Sie lokale sowie bereitgestellte Artefakte. Migrieren Sie nach Möglichkeit vom veralteten Starter Toolkit zu @aws/agentcore.[1], [8]
Quellcode: Verwundbar vs. Sicher
Diese Ausschnitte stammen aus den offiziellen Quelldistributionen 0.3.13 und 0.3.14. Die Korrektur weist externe $ref-Verweise vor dem Aufruf von Prance zurück und beschränkt den Resolver auf interne Verweise. Upstream-Tests prüfen die Zurückweisung vor dem Parser und erlauben interne Fragmente. Das ist ein gezielter Quellcodevergleich, kein Anfragebeispiel; aktualisieren Sie das Paket, statt die Ausschnitte zu kopieren.[7], [8], [2]
Quelltextauszug: Ausschnitte des AgentCore-Importers, Versionen 0.3.13 und 0.3.14
# 0.3.13: Der Parser löst Verweise aus dem OpenAPI-Dokument auf.
parser = ResolvingParser(
spec_string=json.dumps(action_group["apiSchema"]["payload"])
)
action_group["apiSchema"]["payload"] = parser.specification
# 0.3.14: Externe Verweise vor dem Parsen ablehnen.
assert_local_references_only(action_group["apiSchema"]["payload"])
parser = ResolvingParser(
spec_string=json.dumps(action_group["apiSchema"]["payload"]),
resolve_types=RESOLVE_INTERNAL,
)
def assert_local_references_only(node, path: str = "$") -> None:
if isinstance(node, dict):
reference = node.get("$ref")
if isinstance(reference, str) and not reference.startswith("#/"):
raise ValueError(
f"External OpenAPI references are not supported: {reference!r} at {path}."
)
for key, child in node.items():
assert_local_references_only(child, f"{path}.{key}")
elif isinstance(node, list):
for index, child in enumerate(node):
assert_local_references_only(child, f"{path}[{index}]")
Checkliste für Engineering & Systemsicherheit
- ✓Ermitteln Sie Umgebungen mit bedrock-agentcore-starter-toolkit; betroffen sind Versionen 0.1.4 bis 0.3.13.[2]
- ✓Aktualisieren Sie auf 0.3.14 oder neuer oder migrieren Sie zum von AWS empfohlenen @aws/agentcore-CLI; das Starter Toolkit ist veraltet.[1], [2]
- ✓Importieren Sie mit betroffenen Versionen eingelesene Agenten erneut und ersetzen Sie lokale sowie bereitgestellte Artefakte; ein Paketupgrade repariert alte Ausgaben nicht.[1]
- ✓Beschränken Sie bedrock:CreateAgentActionGroup, bedrock:UpdateAgentActionGroup und bedrock:AssociateAgentCollaborator während der Migration auf vertrauenswürdige Principals.[2]
- ✓Importieren Sie keine Agenten, deren OpenAPI-Schema oder relevante Felder ein nicht vertrauenswürdiger Principal desselben Kontos geändert haben könnte.[2]
- ✓Weisen Sie in eigenen Importern externe OpenAPI-Verweise vor dem Resolver zurück und testen Sie, dass dies vor dem Parseraufruf geschieht.[8]
- ✓Trennen Sie diese CVE von
CVE-2026-105812: Hier geht es um Referenzauflösung beim Import, dort um unsicher erzeugten Python-Code.[6], [2]
Quellen
- AWS-Sicherheitsbulletin 2026-127
- Maintainer-Hinweis GHSA-5xmr-2rcp-3j75
- CVE-2026-106032-Eintrag
- NVD-Eintrag zu CVE-2026-106032
- MITRE CWE-918
- PyPI source distribution 0.3.13 (SHA-256: 6dc3df3719ce64f7e996fca63baedd15c922066271ce18f7a66cd7c24599bf8c)
- PyPI source distribution 0.3.14 (SHA-256: 2632c456926596061c3f4079b85d39be1b0aec95b2882048501517e5c3695c85)
- MITRE CWE-73: Externe Kontrolle von Dateiname oder Pfad