flawopen.com/Teardowns/cve-2026-105812-bedrock-agentcore-generated-code-injection
CVE-2026-105812: injeksi kode pada importir AgentCore
Sampai Bedrock AgentCore Starter Toolkit versi 0.3.13, konfigurasi agen dapat dimasukkan ke Python yang dihasilkan tanpa pengodean aman. Pengguna kedua yang mengimpor lalu menjalankan atau menerapkan agen dapat menjalankan kode dengan hak lokalnya atau peran eksekusi AgentCore Runtime. Memperbarui paket tidak memperbaiki artefak yang sudah dihasilkan.[1], [2], [3]
Importir ini seperti printer label yang mengubah pengaturan agen menjadi instruksi Python. Sebelum perbaikan, beberapa nilai ditempelkan di antara tanda kutip tanpa escape yang aman. Tanda kutip di dalam nilai dapat menutup teks terlalu cepat sehingga bagian berikutnya dibaca sebagai sintaks Python. Perbaikan mengodekan nilai sebagai literal string Python agar tetap menjadi data.[2], [5]
Konsep Kunci & Istilah
Impor agen- Alur Starter Toolkit yang membaca konfigurasi agen Bedrock dan membuat proyek Python lokal untuk framework seperti Strands atau LangChain.[2], [5]
Pembuatan kode- Menyusun kode sumber dengan menggabungkan templat program dan nilai konfigurasi atau masukan lain.[2], [5]
Literal string Python- Notasi sumber yang mewakili teks sebagai data.
repr()mengembalikan representasi bertanda kutip dengan karakter yang di-escape agar tidak menjadi sintaks Python.[5]
Pemetaan kerangka kerja
- Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-94
Analisis Akar Masalah (Root Cause)
Penerjemah impor yang rentan membangun sumber Python dengan f-string dan templat yang menyisipkan langsung nilai dari agen Bedrock, termasuk prompt dan kolom konfigurasi lain. Nilai yang memuat pembatas string Python dapat keluar dari konteks teks yang dimaksud. Perbaikan 0.3.14 menambahkan python_string_literal() memakai repr(str(value)) dan python_data_literal() untuk menormalkan data yang kompatibel dengan JSON, lalu meneruskan string yang dihasilkan melalui encoder tersebut. Peringatan pemelihara menjelaskan rantainya: prinsipal terautentikasi dalam akun AWS yang sama harus dapat mengubah data agen; pengguna lain kemudian mengimpor agen dan menjalankan atau menerapkan proyek hasilnya. Kode berjalan dengan hak lokal pengguna pengimpor atau peran eksekusi AgentCore Runtime. AWS menyatakan pembaruan tidak cukup untuk artefak dari versi terdampak: impor ulang dengan 0.3.14 atau lebih baru dan ganti keluaran lokal serta terpasang. CVE-2026-106032 adalah masalah terpisah tentang referensi OpenAPI eksternal saat impor, bukan cacat pembuatan kode ini.
Kondisi keterjangkauan celah kode yang dihasilkan
| Batas | Kondisi yang terdokumentasi | Tindakan defensif |
|---|---|---|
| Versi toolkit | Versi hingga 0.3.13 menyisipkan sejumlah nilai ke Python yang dihasilkan tanpa pengodean literal yang aman. | Tingkatkan ke versi 0.3.14 atau lebih baru, atau migrasikan ke @aws/agentcore. |
| Pihak yang dapat mengubah data | Principal terautentikasi di akun AWS yang sama dapat mengubah kolom Bedrock Agent terkait. | Batasi izin tulis data agen kepada principal tepercaya. |
| Impor oleh pengguna kedua | Pengguna lain mengimpor agen yang telah diubah melalui alur Starter Toolkit yang terdampak. | Anggap data agen dari principal lain tidak tepercaya; tinjau asalnya sebelum mengimpor. |
| Pemicu eksekusi | Pengguna yang mengimpor menjalankan atau menerapkan proyek hasil impor; kode berjalan dengan hak lokal atau peran AgentCore Runtime. | Impor dan uji menggunakan kredensial serta peran runtime terisolasi dengan hak minimum. |
| Artefak yang sudah dihasilkan | Peningkatan paket tidak memperbaiki proyek yang sudah dihasilkan oleh versi terdampak. | Impor ulang dengan versi yang telah diperbaiki dan ganti artefak lokal serta yang diterapkan. |
Alur Serangan Langkah demi Langkah
Prinsipal satu akun dapat mengubah data agen
Prasyaratnya adalah prinsipal terautentikasi di akun AWS memiliki izin mengubah kolom Bedrock Agent yang relevan, misalnya skema grup tindakan, instruksi kolaborasi, atau penggantian prompt.[2]
Kode Sumber: Rentan vs Aman
Cuplikan diff upstream ini menunjukkan bahwa penerjemah yang rentan menyisipkan konfigurasi langsung ke string Python bertanda kutip tiga. Perbaikan meneruskan teks lengkap ke python_string_literal(), yang memakai repr() untuk meng-escape nilai sebagai data. Versi 0.3.14 menerapkan prinsip yang sama pada string hasil generasi lain dan data yang kompatibel dengan JSON, serta menambahkan uji regresi yang mem-parsing keluaran untuk memastikan teks penanda tetap menjadi konstanta string. Cuplikan ini adalah analisis kode sumber, bukan nilai injeksi atau eksploit yang dapat dijalankan.[2], [5]
Cuplikan sumber: services/import_agent/scripts/base_bedrock_translate.py dan services/import_agent/utils.py — cuplikan khusus prompt PRE_PROCESSING
# Sebelum perbaikan 0.3.14: nilai templat langsung dimasukkan ke sumber Python bertanda kutip tiga.
self.prompts_code += f"""
PRE_PROCESSING_TEMPLATE=\"""\n
{config["basePromptTemplate"]["system"]}
\"""
"""
# 0.3.14: enkode seluruh nilai sebagai literal 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))
Daftar Periksa Penguatan Sistem Rekayasa
- ✓Inventarisasi workstation pengembang dan tugas CI yang memakai
bedrock-agentcore-starter-toolkit, termasuk fork dan salinan vendored lokal, bukan hanya manifes dependensi.[1], [2] - ✓Perbarui ke versi 0.3.14 atau lebih baru, atau migrasikan ke CLI yang didukung
@aws/agentcore; Starter Toolkit sudah usang.[1], [2] - ✓Impor ulang agen yang dibuat dengan versi terdampak dan ganti artefak lokal maupun terpasang. Pembaruan paket membiarkan kode sumber lama tetap ada.[1], [2]
- ✓Batasi
bedrock:CreateAgentActionGroup,bedrock:UpdateAgentActionGroup, danbedrock:AssociateAgentCollaboratorkepada prinsipal tepercaya sesuai saran peringatan pemelihara.[2] - ✓Periksa kolom data Bedrock Agent apa yang dapat diubah prinsipal lain dalam akun sebelum mengimpornya ke lingkungan pengembangan berhak tinggi.[2]
- ✓Tambahkan uji regresi yang mem-parsing Python hasil generasi dan memastikan teks penanda terkendali hanya muncul sebagai konstanta string, bukan assignment atau pernyataan yang dapat dijalankan.[5]
- ✓Jalankan agen impor dengan kredensial lokal dan peran Runtime berhak minimum untuk membatasi dampak cacat generator di masa depan.[1]
- ✓Pisahkan
CVE-2026-106032: masalah itu adalah SSRF dan akses file lokal melalui referensi OpenAPI eksternal saat impor, dengan batas rentan dan perbaikan berbeda.[6], [9]
Sumber
- 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)