# CVE-2026-33017: Langflow Code Injection Vulnerability - Exploited (CISA KEV): yes, added 2026-03-25 - Published: 2026-03-20 - CVSS: 9.3 CRITICAL (v4.0) - EPSS: 96.2% (100th percentile) - CWE: CWE-94, CWE-95, CWE-306 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. ## Edge WAF coverage (claimed by vendors, not measured) | Vendor | Status | First rule | Days after publication | |---|---|---|---| | Cloudflare | No public claim | — | — | | AWS | No public claim | — | — | | Microsoft Azure | No public claim | — | — | | Google Cloud | No public claim | — | — | | Fastly | Before feed history | — | — | | F5 | Rule published | 2026-07-07 | 109 | | Akamai | No public source | — | — | | OWASP CRS | No public claim | — | — | ### F5 - 2026-07-07 · new · rule 200204067 > Added: signature 200204067 "Langflow Code Injection (2)" (Server Side Code Injection, risk High), systems: Other Web Server. References: CVE-2026-33017. Source: https://docs.cloud.f5.com/docs-v2/platform/changelogs/security-details-changelog ## Our test (measured) - OWASP Core Rule Set 4.25.0, paranoia level 1, anomaly threshold 5, default CRS settings: partial (1 of 3 requests blocked), template CVE-2026-33017, 2026-11-02 - OWASP Core Rule Set 4.25.0, paranoia level 2, anomaly threshold 5, default CRS settings: partial (1 of 3 requests blocked), template CVE-2026-33017, 2026-11-02 "No public claim" means no vendor statement names this CVE; "Before feed history" means the CVE is older than the vendor feed. In both cases generic rules may still block it. HTML: https://cve.vigilbase.com/cve/CVE-2026-33017 · JSON: https://cve.vigilbase.com/api/v1/cves/CVE-2026-33017