Apa yang terjadi
MongoDBChatMessageHistory tidak memberlakukan tipe string yang didokumentasikan untuk pengenal sesi terstruktur yang tidak tepercaya saat runtime (CWE-943). Ketika riwayat beberapa pengguna berbagi koleksi MongoDB, pengenal tersebut diinterpretasikan sebagai kondisi kueri MongoDB alih-alih nilai literal, sehingga penyerang yang dapat memanggil operasi riwayat-chat dapat membaca, mengubah, atau menghapus percakapan tersimpan pengguna lain. Diperbaiki di @langchain/mongodb 1.3.1.
Mengapa penting
Memori chat MongoDB LangChain adalah blok bangunan default untuk aplikasi percakapan/RAG LLM persisten. Cacat ini memungkinkan satu pengguna menjangkau riwayat chat pengguna lain (prompt, konteks, kemungkinan pertukaran sensitif) dan mengganggunya — meracuni memori data persis yang aplikasi berikan kembali ke LLM.
Vektor serangan
Berikan objek operator MongoDB (mis. kondisi $ne) alih-alih string sesi biasa dalam operasi riwayat-chat sambil berbagi koleksi dengan pengguna lain.
Sistem yang terdampak
@langchain/mongodb < 1.3.1; langchainjs < 1.5.14
Mitigasi
Tingkatkan ke @langchain/mongodb 1.3.1 / langchainjs 1.5.14; pastikan pengenal sesi adalah string yang dikontrol server.