GHSA-29vq-49wr-vm6x

Suggest an improvement
Source
https://github.com/advisories/GHSA-29vq-49wr-vm6x
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-29vq-49wr-vm6x/GHSA-29vq-49wr-vm6x.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-29vq-49wr-vm6x
Aliases
Downstream
Related
Published
2026-02-19T20:32:45Z
Modified
2026-02-23T23:43:27.690386Z
Severity
  • 6.3 (Medium) CVSS_V4 - 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 CVSS Calculator
Summary
Werkzeug safe_join() allows Windows special device names
Details

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.

Database specific
{
    "nvd_published_at": "2026-02-21T06:17:00Z",
    "github_reviewed_at": "2026-02-19T20:32:45Z",
    "github_reviewed": true,
    "severity": "MODERATE",
    "cwe_ids": [
        "CWE-67"
    ]
}
References

Affected packages

PyPI / werkzeug

Package

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
3.1.6

Affected versions

0.*
0.1
0.2
0.3
0.3.1
0.4
0.4.1
0.5
0.5.1
0.6
0.6.1
0.6.2
0.7
0.7.1
0.7.2
0.8
0.8.1
0.8.2
0.8.3
0.9
0.9.1
0.9.2
0.9.3
0.9.4
0.9.5
0.9.6
0.10
0.10.1
0.10.2
0.10.3
0.10.4
0.11
0.11.1
0.11.2
0.11.3
0.11.4
0.11.5
0.11.6
0.11.7
0.11.8
0.11.9
0.11.10
0.11.11
0.11.12
0.11.13
0.11.14
0.11.15
0.12
0.12.1
0.12.2
0.13
0.14
0.14.1
0.15.0
0.15.1
0.15.2
0.15.3
0.15.4
0.15.5
0.15.6
0.16.0
0.16.1
1.*
1.0.0rc1
1.0.0
1.0.1
2.*
2.0.0rc1
2.0.0rc2
2.0.0rc3
2.0.0rc4
2.0.0rc5
2.0.0
2.0.1
2.0.2
2.0.3
2.1.0
2.1.1
2.1.2
2.2.0a1
2.2.0
2.2.1
2.2.2
2.2.3
2.3.0
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
2.3.7
2.3.8
3.*
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4
3.0.5
3.0.6
3.1.0
3.1.1
3.1.2
3.1.3
3.1.4
3.1.5

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-29vq-49wr-vm6x/GHSA-29vq-49wr-vm6x.json"