Description
Werkzeug is a comprehensive WSGI web application library. Prior to 3.1.9, the safe_join function used by send_from_directory can allow a NUL: special-device path because safe_join checks the Windows device name without first removing an empty NTFS ADS marker. The trigger is that an application runs on Windows with NTFS and serves a user-specified path ending in a special device name such as NUL:. The attack mechanism is that a requested path ends in a Windows special device name with an empty ADS marker. The impact is that the special device opens successfully and the file read hangs indefinitely. This issue is fixed in version 3.1.9.
Published: 2026-09-29
Score: 6.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Denial of Service
Action: Patch Update
AI Analysis

Impact

Werkzeug’s safe_join function, used by the send_from_directory helper, can accept a user‑supplied path that ends with a Windows special device name such as NUL:. When the path contains an empty NTFS alternate data stream marker, safe_join fails to strip the marker before checking the device name, allowing the function to resolve the path to the special device. Accessing the device causes a file read operation to hang indefinitely, which results in a denial of service for the application.

Affected Systems

The issue affects versions of Werkzeug older than 3.1.9, including 3.1.8 and earlier. Any instance of Werkzeug on Windows running the send_from_directory routine that accepts user controlled paths is vulnerable.

Risk and Exploitability

The CVSS score of 6.3 indicates moderate severity. No EPSS score is available, and the vulnerability is not listed in CISA KEV. The trigger occurs when an application runs on a Windows system with NTFS and serves a request containing a path that ends with a Windows special device name. Although the description does not explicitly state the attack vector, it is inferred that a remote user could exploit the vulnerability by issuing an HTTP request to the web application. The lack of binary exploitation or local privilege escalation means the main impact is a service interruption, and the exploit does not require high privileges beyond the application’s normal execution context.

Generated by OpenCVE AI on September 30, 2026 at 08:45 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Werkzeug to version 3.1.9 or later.
  • Modify the application logic to reject or sanitize any user‑supplied path that ends with a Windows special device name such as nul: before it reaches safe_join.
  • Apply additional path validation or canonicalization so that empty NTFS alternate data stream markers are removed before passing the path to safe_join.

Generated by OpenCVE AI on September 30, 2026 at 08:45 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-g6x2-hccm-hh4m Werkzeug safe_join() allows Windows special device names
History

Wed, 30 Sep 2026 20:45:00 +0000

Type Values Removed Values Added
First Time appeared Palletsprojects
Palletsprojects werkzeug
Vendors & Products Palletsprojects
Palletsprojects werkzeug

Wed, 30 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-66
References
Metrics threat_severity

None

cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L'}

threat_severity

Moderate


Tue, 29 Sep 2026 17:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 29 Sep 2026 15:30:00 +0000

Type Values Removed Values Added
Description Werkzeug is a comprehensive WSGI web application library. Prior to 3.1.9, the safe_join function used by send_from_directory can allow a NUL: special-device path because safe_join checks the Windows device name without first removing an empty NTFS ADS marker. The trigger is that an application runs on Windows with NTFS and serves a user-specified path ending in a special device name such as NUL:. The attack mechanism is that a requested path ends in a Windows special device name with an empty ADS marker. The impact is that the special device opens successfully and the file read hangs indefinitely. This issue is fixed in version 3.1.9.
Title Werkzeug safe_join() allows Windows special device names
Weaknesses CWE-67
References
Metrics cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N'}


Subscriptions

Palletsprojects Werkzeug
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-29T15:44:10.657Z

Reserved: 2026-09-29T14:18:02.920Z

Link: CVE-2026-102598

cve-icon Vulnrichment

Updated: 2026-09-29T15:44:06.719Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-29T16:17:06.010

Modified: 2026-09-30T19:38:27.293

Link: CVE-2026-102598

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-29T15:16:28Z

Links: CVE-2026-102598 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-30T20:30:18Z

Weaknesses
  • CWE-66

    Improper Handling of File Names that Identify Virtual Resources

  • CWE-67

    Improper Handling of Windows Device Names