flawopen.com/Teardowns/cve-2026-106032-bedrock-agentcore-openapi-reference-ssrf
CVE-2026-106032: SSRF pada importir OpenAPI AgentCore
Starter Toolkit hingga versi 0.3.13 menyelesaikan referensi OpenAPI eksternal saat mengimpor agen. Data grup tindakan yang dimanipulasi dapat memicu permintaan keluar atau pembacaan berkas lokal. Tingkatkan ke versi 0.3.14 atau lebih baru, impor ulang agen terdampak, dan ganti artefak yang dihasilkan.[1], [2], [3]
Bayangkan importir sebagai petugas yang menyusun map dengan mengikuti referensi dalam dokumen. Petugas yang rentan mengikuti semua referensi, termasuk yang menuju ke luar map atau ke berkas lokal. Agen yang tampak tepercaya dapat membuat komputer mengambil atau membaca data saat proses penyusunan. Perbaikannya hanya mengizinkan referensi di dalam dokumen yang sama.[2], [7], [8]
Konsep Kunci & Istilah
OpenAPI $ref- Rujukan ke skema atau definisi OpenAPI. Fragmen menunjuk ke dalam dokumen saat ini; referensi eksternal dapat menunjuk ke sumber lain.[1]
Prance ResolvingParser- Parser yang digunakan Starter Toolkit untuk memuat dan menyelesaikan referensi OpenAPI saat impor agen.[2]
SSRF- Server-side request forgery: input tak tepercaya membuat perangkat lunak mengirim permintaan dari posisi jaringannya sendiri.[7], [8]
Pemetaan kerangka kerja
- Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-918
- OWASP Top 10:2025 — A01:2025 Broken Access Control
Analisis Akar Masalah (Root Cause)
Pada 0.3.13, get_agent_info() meneruskan payload OpenAPI grup tindakan langsung ke prance.ResolvingParser tanpa membatasi jenis resolusi. Pada 0.3.14, importir terlebih dahulu memanggil assert_local_references_only(), yang secara rekursif menolak nilai string $ref yang tidak diawali prefiks fragmen internal #/, lalu mengatur resolve_types=RESOLVE_INTERNAL. Dengan demikian parser tidak mengambil referensi OpenAPI eksternal melalui jalur impor ini. Pengujian maintainer memastikan penolakan terjadi sebelum parser dipanggil dan mencakup referensi HTTP, file, jalur absolut, dan jalur jaringan, sementara fragmen internal tetap diizinkan. Jangan memperluas temuan ini ke jalur importir lain atau mengklaim semua akses jaringan dan berkas proses terblokir. Perbaikan yang didukung adalah peningkatan versi; perbandingan kode menunjukkan batas upstream, bukan resep eksploitasi. Advisory GitHub mencantumkan @seankohjs sebagai pelapor; AWS berterima kasih kepada Koh Jun Sheng atas kolaborasinya dalam pengungkapan kerentanan yang terkoordinasi.[2], [7], [8], [1]
Alur Serangan Langkah demi Langkah
Principal dalam akun yang sama mengubah data agen
Principal terautentikasi dalam akun AWS yang sama harus dapat mengubah skema OpenAPI grup tindakan Bedrock Agent untuk menempatkan nilai referensi eksternal yang dirancang khusus di sana. Ini bukan serangan internet tanpa autentikasi.[2]
Tingkatkan versi, impor ulang, dan ganti artefak
Tingkatkan ke 0.3.14 atau lebih baru, impor ulang agen yang sebelumnya diimpor dengan versi terdampak, lalu ganti artefak lokal dan yang sudah diterapkan. Jika memungkinkan, migrasikan dari Starter Toolkit yang tidak lagi didukung ke @aws/agentcore.[1], [8]
Kode Sumber: Rentan vs Aman
Cuplikan ini berasal dari distribusi sumber resmi 0.3.13 dan 0.3.14. Perbaikan menolak $ref eksternal sebelum Prance berjalan dan membatasi resolver pada referensi internal. Pengujian upstream memeriksa penolakan sebelum parser dan penerimaan fragmen internal. Ini perbandingan kode sumber yang terfokus, bukan contoh permintaan; tingkatkan paket alih-alih menyalin cuplikan.[7], [8], [2]
Cuplikan sumber: Cuplikan importir AgentCore versi 0.3.13 dan 0.3.14
# 0.3.13: parser menyelesaikan referensi dari dokumen OpenAPI.
parser = ResolvingParser(
spec_string=json.dumps(action_group["apiSchema"]["payload"])
)
action_group["apiSchema"]["payload"] = parser.specification
# 0.3.14: tolak referensi eksternal sebelum penguraian.
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}]")
Daftar Periksa Penguatan Sistem Rekayasa
- ✓Inventarisasi lingkungan yang memasang bedrock-agentcore-starter-toolkit; versi 0.1.4 sampai 0.3.13 terdampak.[2]
- ✓Tingkatkan ke 0.3.14 atau lebih baru atau migrasikan ke CLI @aws/agentcore yang direkomendasikan AWS; Starter Toolkit sudah usang.[1], [2]
- ✓Impor ulang agen yang diimpor dengan versi terdampak dan ganti artefak lokal serta yang telah diterapkan; peningkatan paket tidak memperbaiki keluaran lama.[1]
- ✓Batasi izin bedrock:CreateAgentActionGroup, bedrock:UpdateAgentActionGroup, dan bedrock:AssociateAgentCollaborator kepada principal tepercaya selama migrasi.[2]
- ✓Jangan impor agen jika skema OpenAPI atau kolom terkait mungkin diubah oleh principal tak tepercaya dalam akun yang sama.[2]
- ✓Pada importir yang Anda pelihara, tolak referensi OpenAPI eksternal sebelum memanggil resolver dan uji bahwa penolakan terjadi sebelum parser berjalan.[8]
- ✓Pisahkan
CVE-2026-106032dariCVE-2026-105812: yang ini membahas penyelesaian referensi saat impor, sedangkan yang lain membahas pembuatan kode Python yang tidak aman.[6], [2]
Sumber
- Buletin Keamanan AWS 2026-127
- Advisori maintainer GHSA-5xmr-2rcp-3j75
- Catatan CVE-2026-106032
- NVD 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: Kontrol Eksternal atas Nama atau Jalur Berkas