Unfurl Flask Debug RCE (CVE-2026-40035)
CVE-2026-40035
Unfurl RCE via exposed Werkzeug debugger due to Flask debug mode misconfig. CVE-2026-40035 (CVSS 9.1) allows unauthenticated command execution. Upgrade to version after 2025.08.
Patch now - CVE-2026-40035 is a critical remote code execution vulnerability in Unfurl through 2025.08 that grants unauthenticated attackers a Python shell on the server via an exposed Werkzeug debugger. Upgrade immediately to a post-2025.08 version.
Overview
A critical vulnerability in the Unfurl tool, tracked as CVE-2026-40035, stems from improper input validation in its configuration parser. This flaw causes the application to run in Flask debug mode by default, regardless of the intended configuration setting. Versions through 2025.08 are affected.
Technical Details
In affected versions, the configuration value controlling Flask’s debug mode is read as a string and passed directly to the app.run() function. In Python, a non-empty string evaluates to True. Consequently, any non-empty value for this setting, including common placeholder text or accidental entries, will unintentionally activate debug mode. This exposes the interactive Werkzeug debugger on the application’s network interface.
Impact and Risks
The impact of this vulnerability is severe. With debug mode enabled, an attacker can access the Werkzeug debugger, which provides an interactive Python shell. This allows for:
- Sensitive Information Disclosure: Full stack traces, source code, and environment variables are exposed.
- Remote Code Execution (RCE): Attackers can execute arbitrary commands on the underlying server with the privileges of the Unfurl process.
Exploitation is straightforward. Attackers require no privileges and no user interaction, needing only network access to the vulnerable instance. This makes unpatched systems highly susceptible to complete compromise. For context on how such breaches unfold, recent incidents are detailed in our breach reports.
Remediation and Mitigation
The primary action is to upgrade Unfurl to a version released after 2025.08. The vendor has released a patch that properly validates the debug configuration value.
Immediate Mitigation Steps:
- Upgrade Immediately: Apply the latest security update from the official Unfurl repository.
- Configuration Audit: Verify that no deployed instances are running with
FLASK_DEBUGor similar environment variables set toTrueor a non-empty string. - Network Controls: As a temporary measure, restrict network access to Unfurl instances using firewalls. However, this does not eliminate the vulnerability and upgrading is essential.
Stay informed on emerging threats by following our security news.
Security Insight
This vulnerability highlights a persistent class of flaws in DevOps tooling: insecure default configurations that “fail open.” Similar to past incidents with exposed Elasticsearch or Redis instances, it underscores that tools designed for developer convenience can become critical security liabilities when deployed without a production-hardening phase. It serves as a reminder that configuration parsing logic, often treated as mundane, requires the same rigorous validation as other user inputs.
Further Reading
Never miss a critical vulnerability
Get real-time security alerts delivered to your preferred platform.
Related Advisories
GPUStack is an open-source GPU cluster manager for AI model serving and GPU instance provisioning. Prior to 2.2.0, get_current_user in gpustack/api/auth.py treated a loopback request source as the bui...
PHP uses longjmp() for out-of-memory (OOM) errors to exit the current context and abort handling of the request. Some contexts may not properly account for this scenario and leave request memory in an...
PHP has various global state that temporarily points into request memory. In some scenarios, global state may not be correctly reset, or may be repopulated after being reset. The global state may then...
Deserialization of Untrusted Data vulnerability in Apache Camel. This issue affects Apache Camel: from 4.0.0 before 4.18.5, from 4.19.0 before 4.22.1. The camel-hazelcast component applies a def...