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
NGINX Plus and NGINX Open Source have a vulnerability in the ngx_http_rewrite_module module. This vulnerability exists when the rewrite directive is followed by a rewrite, if, or set directive and an ...
WordPress MStore API 2.0.6 contains an arbitrary file upload vulnerability that allows unauthenticated attackers to upload malicious files by sending POST requests to the REST API endpoint. Attackers ...
OpenCATS 0.9.4 contains a remote code execution vulnerability that allows unauthenticated attackers to execute arbitrary commands by uploading malicious PHP files disguised as resume attachments. Atta...
In PHP versions 8.2.* before 8.2.31, 8.3.* before 8.3.31, 8.4.* before 8.4.21, and 8.5.* before 8.5.6, the SOAP extension's object deduplication mechanism stores pointers to PHP objects in a global ma...