{"uuid": "41dc0573-d722-4eb6-aaeb-df13529bc92b", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "GHSA-g6x2-hccm-hh4m", "type": "seen", "source": "https://gist.github.com/alon710/dd727aeefbf8e03d9753ad1590f5bf38", "content": "# CVE-2026-102598: CVE-2026-102598: Remote Denial of Service via NTFS Alternate Data Stream Bypass in Werkzeug safe_join\n\n&gt; **CVSS Score:** 6.3\n&gt; **Published:** 2026-10-05\n&gt; **Full Report:** https://cvereports.com/reports/CVE-2026-102598\n\n## Summary\nCVE-2026-102598 is a security bypass and Denial of Service (DoS) vulnerability in the Werkzeug WSGI web application library. In versions prior to 3.1.9, the library's safe_join function fails to sanitize Windows reserved device names containing an empty NTFS Alternate Data Stream (ADS) marker (such as NUL:). This allows remote, unauthenticated attackers to trigger indefinite thread-blocking operations on Windows hosts, resulting in application-wide resource exhaustion.\n\n## TL;DR\nA validation bypass in Werkzeug's safe_join utility on Windows systems allows attackers to bypass reserved device checks using empty NTFS Alternate Data Stream markers, causing server worker threads to block indefinitely and triggering a Denial of Service.\n\n## Exploit Status: POC\n\n## Technical Details\n\n- **CWE ID**: CWE-67\n- **Attack Vector**: Network (AV:N)\n- **CVSS v4.0**: 6.3 (Medium)\n- **EPSS Score**: 0.00368 (28.41% Percentile)\n- **Impact**: Denial of Service (DoS) via thread exhaustion\n- **Exploit Status**: PoC / Public details available\n- **CISA KEV Status**: Not listed\n\n## Affected Systems\n\n- Werkzeug WSGI web application library running on Microsoft Windows with NTFS filesystem\n- **Werkzeug**: &lt; 3.1.9 (Fixed in: `3.1.9`)\n\n## Mitigation\n\n- Upgrade Werkzeug to version 3.1.9 or later to natively block special device names with Alternate Data Streams.\n- Deploy Web Application Firewall (WAF) rules to block request paths containing colons (:) in user input parameters.\n- Implement custom input validation at the application level to reject DOS device names and alternate data stream syntaxes.\n- Migrate Python deployments from Windows servers to Linux/Unix based containers to avoid Windows-specific path issues.\n\n**Remediation Steps:**\n1. Inspect requirements.txt or Pipfile for Werkzeug version specifications.\n2. Execute: pip install --upgrade werkzeug&gt;=3.1.9\n3. Verify all testing suites pass, especially custom file-serving routes.\n4. Redeploy the application to the production Windows environment.\n\n## References\n\n- [GHSA-g6x2-hccm-hh4m: Security Advisory](https://github.com/pallets/werkzeug/security/advisories/GHSA-g6x2-hccm-hh4m)\n- [Werkzeug 3.1.9 Release Notes](https://github.com/pallets/werkzeug/releases/tag/3.1.9)\n- [NVD - CVE-2026-102598](https://nvd.nist.gov/vuln/detail/CVE-2026-102598)\n- [CVE.org - CVE-2026-102598](https://www.cve.org/CVERecord?id=CVE-2026-102598)\n\n\n---\n*Generated by [CVEReports](https://cvereports.com/reports/CVE-2026-102598) - Automated Vulnerability Intelligence*", "creation_timestamp": "2026-10-06T00:30:32.000000Z"}