medium6.3
CVE-2026-27199
Werkzeug safe_join() allows Windows special device names
Impact
Werkzeug's `safe_join` function allows Windows device names as filenames if when preceded by other path segments. This was previously reported as https://github.com/pallets/werkzeug/security/advisories/GHSA-hgf8-39gv-g3f2, but the added filtering failed to account for the fact that `safe_join` accepts paths with multiple segments, such as `example/NUL`. `send_from_directory` uses `safe_join` to safely serve files at user-specified paths under a directory. If the application is running on Windows, and the requested path ends with a special device name, the file will be opened successfully, but reading will hang indefinitely.
Affected packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| pip | werkzeug | < 3.1.6 | 3.1.6 |
Affected products
| Vendor | Product | Affected versions |
|---|---|---|
| Palletsprojects | Werkzeug | before 3.1.6 |
Weakness classification
References
- NVD record
- CVE.org record
- GitHub advisory
- https://github.com/pallets/werkzeug/commit/f407712fdc60a09c2b3f4fe7db557703e5d9338d
- https://github.com/pallets/werkzeug/releases/tag/3.1.6
- https://github.com/pallets/werkzeug/security/advisories/GHSA-29vq-49wr-vm6x
- https://github.com/advisories/GHSA-29vq-49wr-vm6x
- https://nvd.nist.gov/vuln/detail/CVE-2026-27199