Client metadata path-traversal in python-tuf
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- High
- Impact type
- —
- Confidentiality · integrity · availability
- None · High · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · NVD. Fix status from CNA and GitHub.
Summary
python-tuf is a Python reference implementation of The Update Framework (TUF). In both clients (`tuf/client` and `tuf/ngclient`), there is a path traversal vulnerability that in the worst case can overwrite files ending in `.json` anywhere on the client system on a call to `get_one_valid_targetinfo()`. It occurs because the rolename is used to form the filename, and may contain path traversal characters (ie `../../name.json`). The impact is mitigated by a few facts: It only affects implementations that allow arbitrary rolename selection for delegated targets metadata, The attack requires the ability to A) insert new metadata for the path-traversing role and B) get the role delegated by an existing targets metadata, The written file content is heavily restricted since it needs to be a valid, signed targets file. The file extension is always .json. A fix is available in version 0.19 or newer. There are no workarounds that do not require code changes. Clients can restrict the allowed character set for rolenames, or they can store metadata in files named in a way that is not vulnerable: neither of these approaches is possible without modifying python-tuf.
Why it matters now
SSVC decision points
Not available: CISA has not published SSVC decision points for this record.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| theupdateframework | python-tuf | before 0.19.0 | 0.19.0 | Patch available | CNA |
| — | tuf (PyPI) | before 0.19.0 | 0.19.0 | Patch available | GHSA-wjw6-2cqr-j4qr |
- python-tuf Vendortheupdateframework Affected before 0.19.0 Fixed in 0.19.0 Patch available CNA
- tuf (PyPI) Vendor— Affected before 0.19.0 Fixed in 0.19.0 Patch available GHSA-wjw6-2cqr-j4qr
Remediation
- Fix · CNA python-tuf (theupdateframework) Fixed in 0.19.0
- Fix · GHSA-wjw6-2cqr-j4qr tuf (PyPI) Fixed in 0.19.0 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2021-41131
- 2026-10-03 Alias added: GHSA-wjw6-2cqr-j4qr
References
Patch 1
Advisory 3
More theupdateframework vulnerabilities
- TI-2026-19908 go-tuf Path Traversal in TAP 4 Multirepo Client Allows Arbitrary File Write via Malicious Repository Names CVSS 3.1MEDIUM 4.7
- TI-2024-31823 Incorrect delegation lookups can make go-tuf download the wrong artifact CVSS 4.0HIGH 8.2
- TI-2022-11717 No protection against rollback attacks in go-tuf CVSS 3.1HIGH 8.8
- TI-2020-11935 Invalid root may become trusted root in The Update Framework (TUF) CVSS 3.1HIGH 8.7
- TI-2026-19332 go-tuf affected by client DoS via malformed server response CVSS 3.1HIGH 7.5
- TI-2026-19333 go-tuf improperly validates the configured threshold for delegations CVSS 3.1HIGH 7.5
Sources
- CVE-2021-41131 · CVE Program
- CVE-2021-41131 · NVD
- FIRST EPSS
- GHSA-wjw6-2cqr-j4qr · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences