{"schemaVersion":3,"id":"CVE-2026-33017","aliases":["GHSA-vwmf-pq79-vjvx","PYSEC-2026-379"],"status":"published","duplicateOf":null,"title":"Langflow Code Injection Vulnerability","description":"Langflow is a tool for building and deploying AI-powered agents and workflows. In versions prior to 1.9.0, the POST /api/v1/build_public_tmp/{flow_id}/flow endpoint allows building public flows without requiring authentication. When the optional data parameter is supplied, the endpoint uses attacker-controlled flow data (containing arbitrary Python code in node definitions) instead of the stored flow data from the database. This code is passed to exec() with zero sandboxing, resulting in unauthenticated remote code execution. This is distinct from CVE-2025-3248, which fixed /api/v1/validate/code by adding authentication. The build_public_tmp endpoint is designed to be unauthenticated (for public flows) but incorrectly accepts attacker-supplied flow data containing arbitrary executable code. This issue has been fixed in version 1.9.0.","dates":{"published":"2026-03-20T04:52:52.885Z","modified":"2026-05-21T19:54:41.184Z","reserved":null,"kevAdded":["2026-03-25T00:00:00.000Z"],"kevDue":["2026-04-08T00:00:00.000Z"]},"cvss":{"headline":{"score":9.8,"severity":"critical","version":"3.1","versionLabel":"v3.1","source":"NVD","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":9.3,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:L/SA:L","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"OSV · Pypi","score":9.3,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:L/SA:L/E:A","exploitability":null,"impact":null,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Pypi","score":9.8,"severity":"critical","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":10,"impact":9.8,"computed":true},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":9.3,"severity":"critical","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:L/SA:L/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":9.8,"severity":"critical","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.24755,"percentile":0.97887,"severity":"high","asOf":"2026-10-20T00:00:00.000Z","change":{"pp":-71.42200000000001,"baselineDate":"2026-09-20T00:00:00.000Z","baselineScore":0.96177},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.24755,"percentile":0.97887}],"last30":[{"date":"2026-09-20T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.96177,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.24755,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.24755,"percentile":0.97887}]},"kev":{"state":"listed","entries":[{"source":"cisa","sourceLabel":"CISA","dateAdded":"2026-03-25T00:00:00.000Z","dueDate":"2026-04-08T00:00:00.000Z","requiredAction":"Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.","name":"Langflow Code Injection Vulnerability","description":"Langflow contains a code injection vulnerability that could allow building public flows without requiring authentication.","notes":[{"type":"url","href":"https://github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx","label":"github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx"},{"type":"url","href":"https://nvd.nist.gov/vuln/detail/CVE-2026-33017","label":"nvd.nist.gov/vuln/detail/CVE-2026-33017"}],"vendor":"Langflow","product":"Langflow","ransomware":false,"ransomwareUse":"Unknown","exploitationType":null}],"listedCount":1,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":true,"entry":{"source":"cisa","sourceLabel":"CISA","dateAdded":"2026-03-25T00:00:00.000Z","dueDate":"2026-04-08T00:00:00.000Z","requiredAction":"Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.","name":"Langflow Code Injection Vulnerability","description":"Langflow contains a code injection vulnerability that could allow building public flows without requiring authentication.","notes":[{"type":"url","href":"https://github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx","label":"github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx"},{"type":"url","href":"https://nvd.nist.gov/vuln/detail/CVE-2026-33017","label":"nvd.nist.gov/vuln/detail/CVE-2026-33017"}],"vendor":"Langflow","product":"Langflow","ransomware":false,"ransomwareUse":"Unknown","exploitationType":null}},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[{"id":"REF_0A18BCAFD3A0EEF4","name":"Exploit Reference (medium.com)","source":"reference","url":"https://medium.com/@aviral23/cve-2026-33017-how-i-found-an-unauthenticated-rce-in-langflow-by-reading-the-code-they-already-dc96cdce5896","maturity":"unknown","reliabilityScore":0.2,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null},{"id":"GITHUB_LANGFLOW-AI_LANGFLOW","name":"Langflow","source":"github","url":"https://github.com/langflow-ai/langflow/issues/1973","maturity":"poc","reliabilityScore":0.3,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null},{"id":"52627","name":"Langflow 1.9.0 - RCE","source":"exploit-database","url":"https://www.exploit-db.com/exploits/52627","maturity":"poc","reliabilityScore":0.5,"verified":false,"type":null,"platforms":["multiple"],"requiresAuth":null,"exploitdb":{"verified":false,"type":"webapps","platform":"multiple","file":"exploits/multiple/webapps/52627.py","codes":["CVE-2026-33017"]},"metasploit":null},{"id":"MSF_EXPLOIT_MULTI_HTTP_LANGFLOW_UNAUTH_RCE_CVE_2026_33017","name":"Langflow Unauth RCE","source":"metasploit","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploit/multi/http/langflow_unauth_rce_cve_2026_33017.rb","maturity":"weaponized","reliabilityScore":1,"verified":true,"type":"remote","platforms":[],"requiresAuth":false,"exploitdb":null,"metasploit":{"fullname":"exploit/multi/http/langflow_unauth_rce_cve_2026_33017","rank":"600","rankName":"excellent","postAuth":false,"check":true,"stability":["crash-safe"],"sideEffects":["artifacts-on-disk","ioc-in-logs"],"reliability":["repeatable-session"]}}],"exploitCount":4,"weaknesses":[{"id":"CWE-94","name":"Improper Control of Generation of Code ('Code Injection')","description":"The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":"Medium","url":"https://cwe.mitre.org/data/definitions/94.html"},{"id":"CWE-95","name":"Improper Neutralization of Directives in Dynamically Evaluated Code ('Eval Injection')","description":"The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes code syntax before using the input in a dynamic evaluation call (e.g. \"eval\").","type":"weakness","status":"Incomplete","abstraction":"Variant","likelihoodOfExploit":"Medium","url":"https://cwe.mitre.org/data/definitions/95.html"},{"id":"CWE-306","name":"Missing Authentication for Critical Function","description":"The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/306.html"}],"affected":[{"vendor":"langflow-ai","product":"langflow","name":"langflow","label":"langflow","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.9.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.9.0","eol":null,"hubHref":"/vendor/langflow-ai/langflow"},{"vendor":"langflow","product":"langflow","name":"Langflow","label":"langflow","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 1.8.2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.8.2","eol":null,"hubHref":"/vendor/langflow/langflow"},{"vendor":"PyPI","product":"langflow","name":"langflow","label":"langflow","ecosystem":"PyPI","cpePart":null,"purl":"pkg:pypi/langflow","purlType":"pypi","versions":[{"text":"< 1.9.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 1.9.0","eol":null,"hubHref":null}],"affectedCount":3,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx","label":"github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Exploit","Mitigation","Vendor Advisory"]},{"url":"https://github.com/langflow-ai/langflow/commit/73b6612e3ef25fdae0a752d75b0fabd47328d4f0","label":"github.com/langflow-ai/langflow/commit/73b6612e3ef25fdae0a752d75b0fabd47328d4f0","hostname":"github.com","tags":["X Refsource MISC","WEB","Patch"]},{"url":"https://github.com/advisories/GHSA-rvqx-wpfh-mfx7","label":"github.com/advisories/GHSA-rvqx-wpfh-mfx7","hostname":"github.com","tags":["X Refsource MISC","Advisory","Third Party Advisory"]},{"url":"https://www.sysdig.com/blog/cve-2026-33017-how-attackers-compromised-langflow-ai-pipelines-in-20-hours","label":"www.sysdig.com/blog/cve-2026-33017-how-attackers-compromised-langflow-ai-pipelines-in-20-hours","hostname":"www.sysdig.com","tags":["Third Party Advisory","WEB","Press/Media Coverage"]},{"url":"https://medium.com/@aviral23/cve-2026-33017-how-i-found-an-unauthenticated-rce-in-langflow-by-reading-the-code-they-already-dc96cdce5896","label":"medium.com/@aviral23/…","hostname":"medium.com","tags":["Exploit","WEB","Third Party Advisory"]},{"url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-33017","label":"www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-33017","hostname":"www.cisa.gov","tags":["Government Resource","WEB","US Government Resource"]},{"url":"https://github.com/langflow-ai/langflow/releases/tag/1.8.2","label":"github.com/langflow-ai/langflow/releases/tag/1.8.2","hostname":"github.com","tags":["Patch","WEB","Release Notes"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-33017","label":"nvd.nist.gov/vuln/detail/CVE-2026-33017","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/langflow-ai/langflow/issues/12345","label":"github.com/langflow-ai/langflow/issues/12345","hostname":"github.com","tags":["WEB"]},{"url":"https://github.com/langflow-ai/langflow/pull/12160","label":"github.com/langflow-ai/langflow/pull/12160","hostname":"github.com","tags":["WEB"]},{"url":"https://github.com/langflow-ai/langflow","label":"github.com/langflow-ai/langflow","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2025-33017","label":"www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2025-33017","hostname":"www.cisa.gov","tags":["WEB"]},{"url":"https://pypi.org/project/langflow","label":"pypi.org/project/langflow","hostname":"pypi.org","tags":["PACKAGE"]},{"url":"https://github.com/advisories/GHSA-vwmf-pq79-vjvx","label":"github.com/advisories/GHSA-vwmf-pq79-vjvx","hostname":"github.com","tags":["Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":["CVE-2025-3248"]},"timeline":[{"kind":"published","date":"2026-03-20T04:52:52.885Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"kev-added","date":"2026-03-25T00:00:00.000Z","label":"Added to CISA KEV","detail":"Langflow Code Injection Vulnerability","source":"cisa"},{"kind":"kev-due","date":"2026-04-08T00:00:00.000Z","label":"CISA remediation due","detail":"Apply mitigations per vendor instructions.","source":"cisa"},{"kind":"modified","date":"2026-05-21T19:54:41.184Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":85,"level":"critical","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-21T09:04:54.096Z","stale":false,"partial":false}}