flawopen.com/AI Security/langroid-neo4j-cypher-injection-cve-2026-55615
Langroid CVE-2026-55615: injeksi prompt-ke-Cypher
Langroid meneruskan Cypher buatan model ke Neo4j tanpa validasi. Perbarui ke 0.65.5; izin database tetap menjadi batas keamanan.[1], [2], [4]
Pustakawan menerima pertanyaan biasa lalu memberikan instruksi database yang dihasilkan langsung kepada petugas berhak tinggi. Jika catatan jahat mengubah pertanyaan, petugas tetap menjalankan instruksinya. CVE-2026-55615 memungkinkan konten tak tepercaya memengaruhi Cypher yang dikirim Langroid ke Neo4j.[1]
Konsep Kunci & Istilah
Cypher- Bahasa kueri Neo4j untuk membaca dan mengubah data graf. Prosedur tambahan bergantung pada konfigurasi server dan hak akun.[1]
Neo4jChatAgent- Agen Langroid yang mengubah tugas bahasa alami menjadi Cypher dan mengirimkannya ke Neo4j lewat tool baca atau pembuatan.[1], [3]
Prompt injection- Input tak tepercaya mengubah perilaku model. Kueri buatan model harus dianggap sebagai input tak tepercaya.[1]
Pemetaan kerangka kerja
- Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-74
Alur Serangan Langkah demi Langkah
Konten memengaruhi Cypher yang diteruskan
Pada jalur rentan, cypher_retrieval_tool meneruskan msg.cypher_query ke read_query dan cypher_creation_tool mengirim kueri ke write_query. Advisory menelusuri nilai itu ke session.run(query, parameters) dan tx.run(query, parameters) tanpa validasi perantara.[1], [3]
Hak database menentukan dampak langsung
Tool baca dapat mengungkap data yang dapat diakses akun; tool pembuatan dapat mengubah atau menghapus data sesuai hak akun. Advisory juga menyebut pengambilan jarak jauh melalui LOAD CSV. Akses file atau perintah host bergantung pada prosedur aktif dan hak database.[1]
Versi 0.65.5 menambah pemeriksaan di tool
Resolusi maintainer menyatakan 0.65.5 menambahkan allow_dangerous_operations yang default-nya mati, membatasi pembacaan dan memeriksa operasi berbahaya tertentu di handler tool. Ini pertahanan tambahan, bukan otorisasi. Resolusi maintainer dan panduan SQL-agent Langroid menunjuk role database dengan hak minimum sebagai batas keamanan.[1], [3], [4], [5]
Kode Sumber: Rentan vs Aman
Cuplikan rentan mengikuti jalur dalam advisory; contoh perbaikan merangkum perilaku 0.65.5, bukan patch persis. Perbaikan memvalidasi di batas tool, membatasi pembacaan, dan mengatur operasi berbahaya. Perlakukan pemeriksaan kueri sebagai pertahanan tambahan, bukan otorisasi. Resolusi maintainer dan panduan SQL-agent Langroid menunjuk role Neo4j dengan hak minimum sebagai batas keamanan; isolasi juga proses agen. Dokumentasi Langroid menyebut pemeriksaan kata kunci dan pola dapat dilewati; hak Neo4j tetap menjadi batas penegakan.[1], [3], [4], [6]
# Jalur rentan Neo4jChatAgent (Langroid <= 0.65.4).
def cypher_retrieval_tool(self, msg: CypherRetrievalTool):
query = msg.cypher_query
return self.read_query(query)
def read_query(self, query: str):
with self.driver.session() as session:
return session.run(query, parameters=None)
# Perilaku versi 0.65.5: validasi di batas tool yang dihadapi LLM.
def cypher_retrieval_tool(self, msg: CypherRetrievalTool):
query = msg.cypher_query
rejection = validate_cypher_query(
query, is_write=False,
allow_dangerous=self.config.allow_dangerous_operations,
)
if rejection is not None:
return rejection
return self.read_query(query)
Daftar Periksa Penguatan Sistem Rekayasa
- ✓Inventarisasi instalasi Langroid dan lockfile; perbarui lingkungan terdampak ke 0.65.5 atau lebih baru lalu bangun ulang image.[1], [4]
- ✓Biarkan
allow_dangerous_operations=Falsekecuali ada pengecualian yang ditinjau dan didokumentasikan.[1], [4] - ✓Buat role Neo4j khusus per agen dan berikan hanya data, label, operasi, dan prosedur yang dibutuhkan.[1], [5]
- ✓Nonaktifkan APOC, dbms.security, LOAD CSV serta kemampuan file, jaringan, atau OS yang tidak perlu; periksa hak efektif.[1]
- ✓Pertahankan tool retrieval sebagai read-only dan minta otorisasi terpisah untuk perubahan penting.[1], [4]
- ✓Uji pembacaan normal berhasil dan kueri uji kebijakan yang tidak berbahaya ditolak sebelum driver dipanggil.[3], [4]
- ✓Batasi akses file, rahasia, dan jaringan dari host agen.[1]
- ✓Tinjau log database dan trace agen pada periode rentan; ganti kredensial yang mungkin terekspos.