Apa yang terjadi
Komponen perekam/putar ulang AgentVCR menggabungkan nama cassette yang diberikan pemanggil dengan akhiran .json menggunakan path.join() dan segera membaca/menulis jalur tersebut tanpa memeriksa apakah hasilnya tetap berada di bawah cassettePath. Karena path.join Node menormalkan segmen '..' yang disematkan, nama traversal dapat melarikan diri dari direktori dasar. Primitif baca yang didemonstrasikan dan primitif tulis dibatasi pada file JSON yang dapat diakses proses, tetapi dalam penerapan pengujian/orkestrasi multi-agen, nama cassette sering berasal dari sumber yang tidak tepercaya, menjadikan status rekaman/tersimpan agen sebagai saluran baca/tulis JSON arbitrer.
Mengapa penting
Perekaman/putar ulang agen adalah cara umum untuk membuat perilaku agen deterministik dan dapat diperiksa; jika nama cassette tidak tepercaya, mekanisme yang sama menjadi primitif baca/tulis file JSON arbitrer di dalam konsol orkestrasi agen AI, memungkinkan manipulasi konfigurasi/kebijakan dan pengungkapan kredensial atau status dari dalam runtime agen itu sendiri.
Vektor serangan
AgentVCR membangun jalur file cassette melalui path.join(cassettePath, name + '.json') tanpa pemeriksaan normalisasi-dan-penahanan. Penyerang yang mengontrol argumen name menyediakan urutan traversal relatif (../../...) sehingga load() membaca file .json arbitrer dan mengembalikan isinya, dan save() menulis atau menimpa file .json arbitrer — cukup untuk memalsukan file kebijakan orkestrator itu sendiri (entri tingkat kepercayaan yang dibuat ditunjukkan untuk memberikan agen otorisasi yang ditempatkan operator di bawah ambang penolakan) dan untuk membatalkan token yang dipegang oleh agen yang sah.
Sistem yang terdampak
paket npm network-ai, AgentVCR (lib/agent-vcr.ts), 5.13.4 hingga 5.15.4; diperbaiki di 5.15.5
Mitigasi
Tingkatkan ke network-ai >= 5.15.5 (rentang perbaikan yang dikonfirmasi advisory adalah sebelum 5.15.5); berhenti menurunkan nama cassette dari input yang tidak tepercaya atau validasi/kendalikan di dalam direktori cassette yang dikonfigurasi.