Add vulnerability detection module for CVE-2026-33017 (Langflow unaut… - #1639
Closed
NSK-394 wants to merge 1 commit into
Closed
Add vulnerability detection module for CVE-2026-33017 (Langflow unaut…#1639NSK-394 wants to merge 1 commit into
NSK-394 wants to merge 1 commit into
Conversation
…henticated RCE)
- Detects the unauthenticated flow-data injection flaw in Langflow's
/api/v1/build_public_tmp/{flow_id}/flow endpoint (CVSS 9.8, CISA KEV)
- Chains 3 requests: unauthenticated token via auto_login, flow creation,
and malicious CustomComponent submission, then polls the job event
stream for a distinctively-named injected node
Detection scope: confirms the endpoint processes attacker-controlled flow
node data on vulnerable versions (<=1.8.2) versus discarding it on patched
versions (>=1.9.0), tested against both live containers. Does not
independently verify code execution -- the underlying exec() call could
not be confirmed to fire in testing, so the module is scoped as detecting
the input-validation flaw that is the CVE's root cause, not confirmed RCE.
|
PR validation failed: No linked issue and no valid closing issue reference in PR description |
Contributor
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
Summary by CodeRabbit
WalkthroughChangesLangflow RCE Detection
Estimated code review effort: 3 (Moderate) | ~20 minutes Suggested labels: Suggested reviewers: ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed change
New vulnerability detection module for CVE-2026-33017 (CVSS 9.8, added to CISA's
Known Exploited Vulnerabilities catalog) — an unauthenticated flow-data injection
flaw in Langflow's
/api/v1/build_public_tmp/{flow_id}/flowendpoint.The endpoint is designed to allow unauthenticated building of public flows, but
prior to 1.9.0 it incorrectly accepted an optional attacker-controlled
dataparameter instead of using only the flow's stored data, allowing arbitrary
CustomComponent node definitions (including embedded Python code) to reach the
graph builder.
This module chains 3 HTTP requests:
GET /api/v1/auto_login— Langflow's defaultAUTO_LOGIN=trueconfig issuesan unauthenticated bearer token to any caller
POST /api/v1/flows/— creates an empty public flow using that token, capturingthe resulting
flow_idPOST /api/v1/build_public_tmp/{flow_id}/flow— submits a maliciousCustomComponent node with a distinctive, uniquely-named node id
A 4th step then polls the job's build-event stream and checks whether that
distinctive node id appears — vulnerable instances process and reference the
injected node; patched instances discard it before processing entirely (empty
vertex list).
Detection scope — important, please read before reviewing: this module
confirms the endpoint processes attacker-controlled flow node data on vulnerable
versions (<=1.8.2) versus discarding it entirely on patched versions (>=1.9.0).
This was verified via manual
curltesting and live Nettacker scans against botha vulnerable (1.8.2) and patched (1.9.0) Docker container, with consistent,
repeatable results across the runs performed.
It does not independently confirm code execution. I was not able to get a
reliable execution-only signal (e.g. a file write or command output reflected
back) to fire in testing — the error observed during processing on the vulnerable
version appears to occur during graph/vertex construction, before the point where
the embedded code would actually be reached by
exec(). Rather than overclaim"RCE confirmed," the module and its description are scoped to what was actually
verified: detection of the input-validation flaw that is this CVE's root cause.
The module is non-destructive and safe to run against production targets.
Happy to iterate further on getting a genuine execution-proof signal if that's
important for merging — wanted to be upfront about the current scope rather than
overstate what's been confirmed.
Type of change
Checklist
make pre-commitand confirm it didn't generate any warnings/changes (ran ruff/isort directly and confirmed the module loads cleanly through the real TemplateLoader with zero errors —makeunavailable on Windows)make testand I confirm all tests passed locally (ran the existing test suite; this is a new YAML module with no dedicated unit test, consistent with other CVE modules innettacker/modules/vuln/)docs/folder (N/A — new CVE modules aren't individually documented indocs/, consistent with existing modules in this directory)