CVE-2026-9205: Langflow: Weak Fernet Key via random.seed()
Langflow uses Python’s random module (Mersenne Twister, a non-cryptographic PRNG) seeded with the SECRET_KEY to derive the Fernet encryption key for all stored user credentials (API keys, LLM provider secrets, database passwords). When the SECRET_KEY is shorter than 32 characters — a common scenario for self-hosted deployments using simple/memorable secrets — the derived encryption key is fully deterministic and reproducible by anyone who knows the seed value. An attacker who obtains the SECRET_KEY (e.g., via the MCP path traversal in this repo) can reconstruct the exact Fernet key offline and decrypt every credential stored in the database with no brute force required.
Even when SECRET_KEY is 32+ characters (the “safe” branch), the raw key material is used directly as the Fernet key — meaning exfiltrating the secret_key file is sufficient to decrypt all credentials without any additional computation.
Severity: Critical — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N (9.1) CWE-338: Weak PRNG | CWE-321: Hard-coded Cryptographic Key | CWE-311: Missing Encryption of Sensitive Data
References
- github.com/advisories/GHSA-jxw3-mjmx-3pqm
- github.com/langflow-ai/langflow/commit/094694d3f20c1da499f4d8dbac15c510609e3026
- github.com/langflow-ai/langflow/pull/13704
- github.com/langflow-ai/langflow/security/advisories/GHSA-jxw3-mjmx-3pqm
- nvd.nist.gov/vuln/detail/CVE-2026-9205
- www.ibm.com/support/pages/node/7282648
Code Behaviors & Features
Detect and mitigate CVE-2026-9205 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →