flawopen.com/AI Security/langroid-neo4j-cypher-injection-cve-2026-55615
Langroid CVE-2026-55615: prompt-to-Cypher इंजेक्शन
Langroid ने मॉडल से बने Cypher को बिना जाँच Neo4j भेजा। 0.65.5 में अपडेट करें; डेटाबेस अनुमतियाँ ही सुरक्षा सीमा हैं।[1], [2], [4]
एक पुस्तकालयाध्यक्ष सामान्य भाषा का सवाल लेकर उससे बने डेटाबेस निर्देश सीधे अधिक अधिकार वाले कर्मचारी को देता है। कोई दुर्भावनापूर्ण नोट सवाल बदल दे, तब भी कर्मचारी निर्देश चलाता है। CVE-2026-55615 में अविश्वसनीय सामग्री Langroid द्वारा Neo4j को भेजे गए Cypher को प्रभावित कर सकती थी।[1]
इस पेज के मुख्य शब्द
Cypher- Neo4j की ग्राफ डेटा पढ़ने और बदलने की query भाषा। अन्य procedures सर्वर सेटिंग और खाते के अधिकारों पर निर्भर करते हैं।[1]
Neo4jChatAgent- Langroid agent जो सामान्य भाषा के काम को Cypher में बदलकर पढ़ने या बनाने वाले tools से Neo4j भेजता है।[1], [3]
Prompt injection- अविश्वसनीय input मॉडल का व्यवहार बदलता है। मॉडल से बनी queries को अविश्वसनीय input मानना चाहिए।[1]
फ्रेमवर्क मैपिंग
- इस गाइड में बताई गई कमजोरी के लिए CWE संदर्भ: CWE-74
हमले का चरण-दर-चरण प्रवाह
डेटाबेस अधिकार तत्काल प्रभाव तय करते हैं
पढ़ने वाला tool जुड़े खाते को उपलब्ध graph data उजागर कर सकता है; बनाने वाला tool उसी खाते के अधिकार में data बदल या मिटा सकता है। Advisory LOAD CSV से remote fetch भी बताती है। Host file या command access enabled procedures और DB grants पर निर्भर है।[1]
0.65.5 tool सीमा पर जाँच जोड़ता है
Maintainer के अनुसार 0.65.5 allow_dangerous_operations को default बंद रखता, पढ़ने को read-only बनाता और tool handlers में कुछ खतरनाक operations जाँचता है। ये जाँच defense-in-depth हैं, authorization नहीं। Maintainer का समाधान और Langroid की SQL-agent मार्गदर्शिका न्यूनतम-अधिकार वाले database roles को सुरक्षा सीमा बताते हैं।[1], [3], [4], [5]
सोर्स कोड: कमज़ोर बनाम सुरक्षित कार्यान्वयन
कमजोर code अंश advisory के call path का अनुसरण करता है। सुरक्षित उदाहरण 0.65.5 का व्यवहार संक्षेप में दिखाता है, शब्दशः patch नहीं। सुधार tool सीमा पर जाँचता, read को सीमित करता और खतरनाक संचालन नियंत्रित करता है। Query जाँच को defense-in-depth मानें, authorization नहीं। Maintainer का समाधान और Langroid की SQL-agent मार्गदर्शिका न्यूनतम-अधिकार वाले Neo4j roles को सुरक्षा सीमा बताते हैं; agent process को भी अलग रखें। Langroid दस्तावेज़ के अनुसार, कीवर्ड और पैटर्न जाँच को बायपास किया जा सकता है; नियंत्रण सीमा Neo4j अनुमतियों को ही रखें।[1], [3], [4], [6]
# Neo4jChatAgent का vulnerable path (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)
# 0.65.5 का व्यवहार: LLM-facing tool boundary पर validation करें।
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)
इंजीनियरिंग और सिस्टम सुरक्षा चेकलिस्ट
- ✓Langroid deployments और lockfiles खोजें; प्रभावित वातावरण 0.65.5 या नए संस्करण में अपडेट कर images फिर बनाएँ।[1], [4]
- ✓समीक्षित और दर्ज अपवाद न हो तो
allow_dangerous_operations=Falseरखें।[1], [4] - ✓हर agent के लिए अलग Neo4j role बनाएँ और केवल जरूरी data, labels, operations और procedures दें।[1], [5]
- ✓अनावश्यक APOC, dbms.security, LOAD CSV तथा file/network/OS क्षमताएँ बंद कर प्रभावी grants जाँचें।[1]
- ✓Read tools को read-only रखें और महत्वपूर्ण writes के लिए अलग अनुमति लें।[1], [4]
- ✓सामान्य read सफल हो और harmless policy-test query driver call से पहले अस्वीकृत हो, यह जाँचें।[3], [4]
- ✓Agent host के file, secret और network access सीमित करें।[1]
- ✓कमजोर deployment अवधि के database logs और agent traces देखें; संभवतः उजागर credentials बदलें।