
# CVE-2026-33017 के लिए प्रतिलिपि योग्य प्रयोगशाला, जो Langflow में एक अनप्रमाणित RCE है। इसमें एक Dockerized कमजोर सेवा और एक न्यूनतम-हानि PoC शामिल है जो सार्वजनिक build एंडपॉइंट के माध्यम से कोड निष्पादन प्रदर्शित करता है।
CVE-2026-33017 Langflow में एक बिना प्रमाणीकरण के रिमोट कोड निष्पादन (RCE) भेद्यता है, जहां एक सार्वजनिक बिल्ड एंडपॉइंट हमलावर-नियंत्रित फ्लो डेटा स्वीकार करता है, जिससे कस्टम कंपोनेंट कोड सर्वर पर निष्पादित हो सकता है।
इस लैब में, सत्यापन प्रवाह इस प्रकार है:
PUBLIC फ्लो बनाएंjob_id प्राप्त करेंप्रूफ सीधे Langflow API इवेंट्स तंत्र के माध्यम से प्राप्त किया जाता है, जिससे परिणाम सिस्टम इंटरफ़ेस के माध्यम से ही देखने योग्य होता है।
यह दस्तावेज़ एक केवल-भेद्यता लैब प्रस्तुत करता है।
वर्तमान में, docker compose में केवल एक सेवा है: vuln, क्योंकि यह प्रोजेक्ट दृष्टिकोण का पालन करता है और उन पैच किए गए वातावरणों से बचता है जो आधिकारिक फिक्स्ड आर्टिफैक्ट पर आधारित नहीं हैं।
इस लैब में निम्नलिखित व्यवहार सत्यापित किया गया है:
http://localhost:7861 पर चलता है1.8.1 लौटाता हैbuild_public_tmp एक job_id लौटाता हैउदाहरण प्रूफ ऑब्जेक्ट:
{
"canary": "lf33017-c14fc1c9",
"id_output": "uid=1000(user) gid=0(root) groups=0(root)",
"whoami": "user",
"hostname": "155aa3fd5e2a",
"cwd": "/app",
"python_version": "3.12.12"
}
मुख्य साक्ष्य हैं:
id_outputwhoamihostnamecwdpython_versionउपरोक्त जानकारी दर्शाती है कि हमलावर-नियंत्रित कोड वास्तव में सर्वर साइड पर निष्पादित किया गया था।
.
├── docker-compose.yml
├── vuln/
│ └── Dockerfile
├── poc/
│ └── poc.py
├── README.md
└── .gitignore
7861 -> 7860यह भेद्यता इसलिए मौजूद है क्योंकि Langflow का सार्वजनिक बिल्ड एंडपॉइंट उपयोगकर्ता-आपूर्ति किए गए फ्लो परिभाषाओं को स्वीकार करता है, भले ही एंडपॉइंट पहले से ही सार्वजनिक फ्लो के लिए डिज़ाइन किया गया हो। जब कोई हमलावर कस्टम कंपोनेंट कोड वाली नोड परिभाषा प्रस्तुत करता है, तो सिस्टम उस कोड को फ्लो बिल्ड पथ में पास कर देता है, जो अंततः सर्वर पर कोड निष्पादन का परिणाम देता है।
इस प्रोजेक्ट में PoC एक कस्टम कंपोनेंट का उपयोग करता है जो यह प्रदर्शित करने के लिए अपने आउटपुट में एक प्रूफ ऑब्जेक्ट लौटाता है कि हमलावर-नियंत्रित कोड वास्तव में निष्पादित होता है।
इस प्रोजेक्ट में PoC न्यूनतम-हानि के लिए डिज़ाइन किया गया है और API के माध्यम से स्पष्ट रूप से देखने योग्य प्रूफ पर केंद्रित है। इसका कार्यप्रवाह इस प्रकार है:
PUBLIC फ्लो बनाएंjob_id प्राप्त करेंयह PoC कवर नहीं करता:
docker compose up -d --build
curl -i http://localhost:7861/api/v1/version
python3 poc/poc.py --base-url http://localhost:7861 --artifact-dir ./artifacts/vuln
जब PoC सफल होता है, तो आउटपुट इस प्रकार दिखेगा:
[+] http://localhost:7861 ready (version=1.8.1)
=== TARGET: vuln ===
Base URL : http://localhost:7861
Version : 1.8.1
Flow ID : <uuid>
HTTP : 200
Job ID : <uuid>
Canary : lf33017-xxxxxxxx
Events : artifacts/vuln/events-<job_id>.ndjson
Polls : 2
[+] Proof observed through the Langflow API events endpoint:
{
"canary": "lf33017-xxxxxxxx",
"id_output": "uid=1000(user) gid=0(root) groups=0(root)",
"whoami": "user",
"hostname": "<container-hostname>",
"cwd": "/app",
"python_version": "3.12.x"
}
[+] Vulnerable behavior observed
फ़ाइल artifacts/vuln/events-<job_id>.ndjson अतिरिक्त डिबगिंग के लिए कच्चे इवेंट डेटा को संग्रहीत करती है।
यह PoC प्रदर्शित करता है कि:
यह PoC स्थिरता या उन्नत पोस्ट-एक्सप्लॉइटेशन प्रदर्शित करने के लिए नहीं है और भेद्यता को मान्य करने के लिए आवश्यक न्यूनतम स्तर पर प्रभाव रखता है।
इस लैब के आधार पर, प्रदर्शित प्रभाव है:
इस रिपॉजिटरी में डिज़ाइन द्वारा पैच की गई सेवा शामिल नहीं है।
इसका दायरा वास्तविक अपस्ट्रीम आर्टिफैक्ट पर भेद्य व्यवहार को पुन: उत्पन्न करने तक सीमित है। एक पैच की गई साइड केवल तभी जोड़ी जाती है जब विक्रेता या अपस्ट्रीम प्रोजेक्ट से स्पष्ट रूप से सत्यापन योग्य आधिकारिक फिक्स्ड आर्टिफैक्ट उपलब्ध हो।
इस कारण से, यह रिपॉजिटरी जानबूझकर इनसे बचती है:
यह लैब को संकीर्ण रूप से दायरे में और तकनीकी रूप से ईमानदार रखता है। एक कृत्रिम साइड-बाय-साइड सेटअप प्रस्तुत करने के बजाय, रिपॉजिटरी तीन चीजों पर केंद्रित है:
व्यवहार में, यह रिपॉजिटरी इनके लिए सबसे उपयुक्त बनाता है:
docker compose down -v
यह लैब केवल localhost पर परीक्षण के लिए डिज़ाइन किया गया है।
उपयोग आवश्यकताएँ: