{"id":"CVE-2026-33017","published":"2026-03-20T05:16:15Z","modified":"2026-06-17T10:36:47Z","title":"Langflow Code Injection Vulnerability","vendor":"Langflow","product":"Langflow","tier":"core","eol":null,"description":{"text":"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.","provenance":"source","from":"NVD"},"summary":{"text":"Langflow, the tool for building and deploying AI-powered agents and workflows, contains a code injection flaw in its POST /api/v1/build_public_tmp/{flow_id}/flow endpoint. An unauthenticated remote attacker over the network can supply flow data containing arbitrary Python code in a node definition via the optional data parameter, which the endpoint passes to exec() without sandboxing, requiring no authentication or user interaction.","provenance":"ai","model":"claude-haiku-5-5","generatedAt":"2026-10-29T08:31:56Z"},"cvss":{"score":9.8,"severity":"CRITICAL","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","provenance":"source","from":"NVD"},"epss":{"score":0.96177,"percentile":0.99877,"date":"2026-10-30","provenance":"source"},"kev":{"dateAdded":"2026-03-25","dueDate":"2026-04-08","ransomware":false,"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.","notes":"https://github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx ; https://nvd.nist.gov/vuln/detail/CVE-2026-33017","provenance":"source"},"vulncheckKev":{"dateAdded":"2026-03-19","exploitedFirstSeen":"2026-03-19","ransomware":false,"evidence":[{"url":"https://www.sysdig.com/blog/cve-2026-33017-how-attackers-compromised-langflow-ai-pipelines-in-20-hours","date":"2026-03-19"},{"url":"https://www.acn.gov.it/portale/w/langflow-rilevata-0-day-per-la-cve-2026-33017","date":"2026-03-23"},{"url":"https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json","date":"2026-03-25"},{"url":"https://webflow.sysdig.com/blog/marimo-oss-python-notebook-rce-from-disclosure-to-exploitation-in-under-10-hours","date":"2026-04-09"},{"url":"https://www.recordedfuture.com/blog/march-2026-cve-landscape","date":"2026-04-13"},{"url":"https://cyble.com/blog/monthly-threat-landscape-march-2026/","date":"2026-04-20"},{"url":"https://thecyberexpress.com/march-2026-threat-landscape/","date":"2026-04-22"},{"url":"https://webflow.sysdig.com/blog/nats-as-c2-inside-a-new-technique-attackers-are-using-to-harvest-cloud-credentials-and-ai-api-keys","date":"2026-05-13"},{"url":"https://webflow.sysdig.com/blog/security-briefing-may-2026","date":"2026-06-02"},{"url":"https://www.trendmicro.com/en_us/research/26/f/from-langflow-to-monero-inside-cve-2026-33017-cryptominer.html","date":"2026-06-23"}],"evidenceTotal":17,"provenance":"source"},"exploited":true,"otx":{"pulseCount":50,"pulses":[{"name":"Actively_Exploited_Kev | Oct 31, 2026","url":"https://otx.alienvault.com/pulse/6ae4aefab0c2191cecd41862","created":"2026-10-30"},{"name":"Actively_Exploited_Kev | Oct 30, 2026","url":"https://otx.alienvault.com/pulse/6ae35d889ea92b4ce19c2680","created":"2026-10-29"},{"name":"Actively_Exploited_Kev | Oct 29, 2026","url":"https://otx.alienvault.com/pulse/6ae20c1db17e7057ae7d9ad1","created":"2026-10-28"},{"name":"Actively_Exploited_Kev | Oct 28, 2026","url":"https://otx.alienvault.com/pulse/6ae0ba7e0e2a97ff7b218819","created":"2026-10-27"},{"name":"Actively_Exploited_Kev | Oct 27, 2026","url":"https://otx.alienvault.com/pulse/6adf68b85c3e852f3c111d18","created":"2026-10-26"},{"name":"Actively_Exploited_Kev | Oct 24, 2026","url":"https://otx.alienvault.com/pulse/6adb740e397c3ad4799aa4cd","created":"2026-10-23"},{"name":"Actively_Exploited_Kev | Oct 23, 2026","url":"https://otx.alienvault.com/pulse/6ada236fcfba2dfa730ea482","created":"2026-10-22"},{"name":"Actively_Exploited_Kev | Oct 22, 2026","url":"https://otx.alienvault.com/pulse/6ad8d33a077cbb5cab524d80","created":"2026-10-21"},{"name":"Actively_Exploited_Kev | Oct 21, 2026","url":"https://otx.alienvault.com/pulse/6ad78130c4d1ac2be83a8b6d","created":"2026-10-20"},{"name":"Actively_Exploited_Kev | Oct 20, 2026","url":"https://otx.alienvault.com/pulse/6ad62f63c24a405a3423cc13","created":"2026-10-19"}],"provenance":"machine"},"cwes":[{"id":"CWE-94","name":"Improper Control of Generation of Code"},{"id":"CWE-95","name":"Improper Neutralization of Directives in Dynamically Evaluated Code"},{"id":"CWE-306","name":"Missing Authentication for Critical Functionality"}],"references":[{"url":"https://github.com/advisories/GHSA-rvqx-wpfh-mfx7","tags":["Third Party Advisory"]},{"url":"https://github.com/langflow-ai/langflow/commit/73b6612e3ef25fdae0a752d75b0fabd47328d4f0","tags":["Patch"]},{"url":"https://github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx","tags":["Exploit","Mitigation","Vendor Advisory"]},{"url":"https://github.com/langflow-ai/langflow/releases/tag/1.8.2","tags":["Release Notes"]},{"url":"https://medium.com/@aviral23/cve-2026-33017-how-i-found-an-unauthenticated-rce-in-langflow-by-reading-the-code-they-already-dc96cdce5896","tags":["Exploit","Third Party Advisory"]},{"url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog?field_cve=CVE-2026-33017","tags":["US Government Resource"]},{"url":"https://www.sysdig.com/blog/cve-2026-33017-how-attackers-compromised-langflow-ai-pipelines-in-20-hours","tags":["Press/Media Coverage"]}],"techniques":[{"id":"T1190","name":"Exploit Public-Facing Application","tactics":["initial-access"],"provenance":"ai","basis":"ai-mapping","bases":["ai-mapping"],"basisDetail":"claude-haiku-5-5: unauthenticated public-facing endpoint is the entry point","mappingType":"exploitation_technique","evidence":[{"from":"description","quote":"POST /api/v1/build_public_tmp/{flow_id}/flow endpoint allows building public flows without requiring authentication","start":111,"end":226}],"model":"claude-haiku-5-5","confidence":"medium","confidenceNote":"AI-mapped from the description (quote-validated, not expert-reviewed)"},{"id":"T1059","name":"Command and Scripting Interpreter","tactics":["execution"],"provenance":"ai","basis":"ai-mapping","bases":["ai-mapping"],"basisDetail":"claude-haiku-5-5: attacker-supplied Python executed via exec()","mappingType":"primary_impact","evidence":[{"from":"description","quote":"This code is passed to exec() with zero sandboxing, resulting in unauthenticated remote code execution","start":428,"end":530}],"model":"claude-haiku-5-5","confidence":"medium","confidenceNote":"AI-mapped from the description (quote-validated, not expert-reviewed)"}],"reports":[],"affected":[{"ecosystem":"PyPI","package":"langflow","vulnerableRanges":["<1.9.0"],"patched":["1.9.0"],"from":["GHSA-vwmf-pq79-vjvx","PYSEC-2026-379"],"provenance":"source"}],"advisories":[{"id":"GHSA-vwmf-pq79-vjvx","url":"https://github.com/advisories/GHSA-vwmf-pq79-vjvx","severity":"CRITICAL","ecosystem":"PyPI","package":"langflow","vulnerableRanges":["<1.9.0"],"patched":["1.9.0"],"provenance":"source","from":"GHSA"}],"euvd":{"id":"EUVD-2026-13556","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-13556","exploited":true,"exploitedSince":"2026-03-25","provenance":"source"},"exploits":[{"id":52627,"url":"https://www.exploit-db.com/exploits/52627","title":"Langflow 1.9.0 - RCE","type":"webapps","platform":"multiple","date":"2026-07-08","verified":false,"provenance":"source"}],"exploitSources":{"exploitdb":{"count":1,"earliest":"2026-07-08"},"pocGithub":{"count":25,"skipped":2,"earliest":"2026-03-21","earliestUrl":"https://github.com/MaxMnMl/langflow-CVE-2026-33017-poc","repos":[{"name":"EQSTLab/CVE-2026-33017","url":"https://github.com/EQSTLab/CVE-2026-33017","stars":12,"created":"2026-03-31"},{"name":"MaxMnMl/langflow-CVE-2026-33017-poc","url":"https://github.com/MaxMnMl/langflow-CVE-2026-33017-poc","stars":10,"created":"2026-03-21"},{"name":"z4yd3/PoC-CVE-2026-33017","url":"https://github.com/z4yd3/PoC-CVE-2026-33017","stars":5,"created":"2026-03-27"},{"name":"c0gnit00/CVE-2026-33017","url":"https://github.com/c0gnit00/CVE-2026-33017","stars":2,"created":"2026-07-02"},{"name":"CerberusMrXi/Langflow-cve-2026-33017-exploit","url":"https://github.com/CerberusMrXi/Langflow-cve-2026-33017-exploit","stars":2,"created":"2026-07-19"}]},"metasploit":[{"name":"Langflow Unauth RCE","module":"exploit/multi/http/langflow_unauth_rce_cve_2026_33017","type":"exploit","disclosureDate":"2026-03-20","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/langflow_unauth_rce_cve_2026_33017.rb"}],"nuclei":[{"id":"CVE-2026-33017","name":"Langflow < 1.9.0 - Remote Code Execution","severity":"critical","path":"http/cves/2026/CVE-2026-33017.yaml","url":"https://github.com/projectdiscovery/nuclei-templates/blob/main/http/cves/2026/CVE-2026-33017.yaml"}],"first":{"date":"2026-03-20","source":"Metasploit","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/langflow_unauth_rce_cve_2026_33017.rb"},"provenance":"source"},"exploitRefs":["https://github.com/langflow-ai/langflow/security/advisories/GHSA-vwmf-pq79-vjvx","https://medium.com/@aviral23/cve-2026-33017-how-i-found-an-unauthenticated-rce-in-langflow-by-reading-the-code-they-already-dc96cdce5896"],"flow":[{"stage":"exploitation","techniques":["T1190"],"provenance":"ai"},{"stage":"primary","techniques":["T1059"],"provenance":"ai"}],"timeline":[{"date":"2026-03-19","kind":"exploited-reported","label":"Exploitation first reported (VulnCheck KEV evidence)","url":"https://www.sysdig.com/blog/cve-2026-33017-how-attackers-compromised-langflow-ai-pipelines-in-20-hours","provenance":"source"},{"date":"2026-03-20","kind":"published","label":"Published (NVD)","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-33017","provenance":"source"},{"date":"2026-03-20","kind":"exploit-public","label":"First public exploit: Metasploit; later: PoC-in-GitHub 2026-03-21, Exploit-DB 2026-07-08","url":"https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/multi/http/langflow_unauth_rce_cve_2026_33017.rb","provenance":"source"},{"date":"2026-03-25","kind":"kev","label":"Added to CISA KEV","url":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog","provenance":"source"},{"date":"2026-03-25","kind":"euvd-exploited","label":"ENISA EUVD: exploited","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-13556","provenance":"source"}],"speed":{"daysToPublicExploit":0,"firstExploitFrom":"Metasploit","daysToKev":5},"priority":{"score":74.8,"factors":[{"name":"In a KEV catalog","points":35.0,"detail":"listed in CISA KEV and VulnCheck KEV"},{"name":"Recent KEV listing","points":5.0,"detail":"added 226 days ago"},{"name":"Known ransomware use","points":0.0,"detail":"not known"},{"name":"EPSS percentile","points":19.98,"detail":"percentile 0.9988"},{"name":"Named in threat reports","points":0.0,"detail":"0 reports"},{"name":"Public exploit code","points":5.0,"detail":"2 NVD references tagged Exploit; 1 Exploit-DB entry; 25 PoC-in-GitHub repos; 1 Metasploit module; 1 nuclei template"},{"name":"Mentioned in OTX pulses","points":3.0,"detail":"50 pulses"},{"name":"CVSS severity","points":6.86,"detail":"base score 9.8"},{"name":"End-of-life product","points":0.0,"detail":"supported or unknown"}]},"lineage":{"familyId":"fam-langflow-cve-2025-3248","parents":[{"from":"CVE-2025-3248","to":"CVE-2026-33017","relation":"related","confidence":"high","kind":"lineage","evidence":[{"kind":"osv-related","provenance":"source","id":"GHSA-rvqx-wpfh-mfx7","via":"related"},{"kind":"osv-related","provenance":"source","id":"GHSA-vwmf-pq79-vjvx","via":"reference","url":"https://github.com/advisories/GHSA-rvqx-wpfh-mfx7"},{"kind":"osv-related","provenance":"source","id":"PYSEC-2026-379","via":"reference","url":"https://github.com/advisories/GHSA-rvqx-wpfh-mfx7"}]}]}}