Cyber Resilience

CVE-2026-40035

Ryandfir Unfurl ≤ 2025.08

Public PoC
Published
08 April 2026
Modified
24 July 2026
Patch / advisory
CVSS Score v4 9.3
Click a component to see what it means
Raw vectorCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
EPSS Score 0.0056 44th percentile
Risk Priority 46 floored blend · peak EPSS

Summary

CVE-2026-40035 is a critical-severity Active Debug Code (CWE-489) vulnerability in Ryandfir Unfurl. Its CVSS base score is 9.3 (Critical).

Operationally, exploitation aligns with the MITRE ATT&CK technique Exploit Public-Facing Application (T1190); ranked at the 44th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog; a public proof-of-concept is referenced.

The strongest mitigations our analysis identified map to CM-2 (Baseline Configuration) and CM-7 (Least Functionality) — see the control section below for these in your framework.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

CVE-2026-40035 is an improper input validation vulnerability (CWE-489) in the config parsing of Unfurl, an open-source tool from Obsidian Forensics used in digital forensics and incident response. Versions of Unfurl through 2025.08 are affected. The issue arises because the debug configuration value is read as a string and passed directly to Flask's app.run() method, causing any non-empty string to evaluate as truthy and enable debug mode by default. This exposes the Werkzeug debugger in the Flask application.

Remote attackers require no privileges or user interaction (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N, score 9.1) to exploit the vulnerability over the network. By triggering the debug mode through crafted configuration inputs, attackers can access the Werkzeug debugger console, enabling them to disclose sensitive information from the application's environment or achieve remote code execution.

Advisories providing mitigation guidance include the GitHub security advisory at https://github.com/obsidianforensics/unfurl/security/advisories/GHSA-vg9h-jx4v-cwx2 and the VulnCheck analysis at https://www.vulncheck.com/advisories/dfir-unfurl-werkzeug-debugger-exposure-via-string-config-parsing. Security practitioners should review these for patching instructions and configuration workarounds.

OWASP Top 10 for Web (2025)

EU & UK References

Vulnerability Data

Unfurl through 2025.08 contains an improper input validation vulnerability in config parsing that enables Flask debug mode by default. The debug configuration value is read as a string and passed directly to app.run(), causing any non-empty string to evaluate truthy,…

more

allowing attackers to access the Werkzeug debugger and disclose sensitive information or achieve remote code execution.

CWE(s)

Related Threats

MITRE ATT&CK Enterprise Techniques

T1190 Exploit Public-Facing Application Initial Access
Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2026-40036Same product: Ryandfir Unfurl
CVE-2026-49188Shared CWE-489
CVE-2024-53648Shared CWE-489
CVE-2024-28008Shared CWE-489
CVE-2025-54660Shared CWE-489
CVE-2024-46873Shared CWE-489
CVE-2023-32645Shared CWE-489
CVE-2025-42872Shared CWE-489
CVE-2024-31406Shared CWE-489
CVE-2026-54799Shared CWE-489

Affected Assets

ryandfir
unfurl
≤ 2025.08

Mitigating Controls

Mitigating Controls (NIST 800-53 r5) AI

Baseline configuration defines the approved production state that must exclude active debug code.

Least functionality explicitly prohibits enabling unnecessary debug or diagnostic features in production builds.

Documented development standards and tools can require removal of debug code before release.

Security-integrated SDLC processes ensure debug artifacts are stripped prior to deployment.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.PS-06 mostly match
prevents

Secure SDLC practices directly require removal of debug code before release, covering most of this weakness while the control addresses many other development issues.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

finds

Security testing in development and acceptance catches active debug code before deployment.

prevents

Configuration management can disable or remove debug features through hardened baselines.

prevents

Secure development life cycle mandates removal of debug code before release.

prevents

Secure coding standards explicitly prohibit leaving debug code active in production.

prevents

Separation of environments reduces risk of debug code reaching production but does not directly address its removal.

prevents

Change management can enforce removal of debug code as part of release gates.

References