{"id":"GHSA-wjw6-2cqr-j4qr","summary":"Client metadata path-traversal","details":"### Impact\nIn 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`).\n\nThe impact is mitigated by a few facts:\n* It only affects implementations that allow arbitrary rolename selection for delegated targets metadata\n* 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\n* The written file content is heavily restricted since it needs to be a valid, signed targets file. The file extension is always .json.\n\n### Patches\nA fix is available in version 0.19 or newer.\n\n### Workarounds\nNone 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.\n\n### References\n- [The issue where this was discovered](https://github.com/theupdateframework/python-tuf/issues/1527)\n- [Proof of Concept demonstrating the flaw](https://github.com/jku/path-traversal-poc)\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Open an issue in [python-tuf](https://github.com/theupdateframework/python-tuf/issues)\n* Contact the maintainers by email or Slack\n","aliases":["CVE-2021-41131","PYSEC-2021-376"],"modified":"2026-05-13T12:14:12.500925430Z","published":"2021-10-19T20:14:36Z","related":["CVE-2021-41150"],"database_specific":{"cwe_ids":["CWE-22"],"severity":"MODERATE","github_reviewed":true,"github_reviewed_at":"2021-10-19T16:09:34Z","nvd_published_at":"2021-10-19T18:15:00Z"},"references":[{"type":"WEB","url":"https://github.com/theupdateframework/python-tuf/security/advisories/GHSA-wjw6-2cqr-j4qr"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2021-41131"},{"type":"WEB","url":"https://github.com/theupdateframework/python-tuf/issues/1527"},{"type":"WEB","url":"https://github.com/theupdateframework/python-tuf/commit/4ad7ae48fda594b640139c3b7eae21ed5155a102"},{"type":"WEB","url":"https://github.com/pypa/advisory-database/tree/main/vulns/tuf/PYSEC-2021-376.yaml"},{"type":"PACKAGE","url":"https://github.com/theupdateframework/python-tuf"}],"affected":[{"package":{"name":"tuf","ecosystem":"PyPI","purl":"pkg:pypi/tuf"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.19.0"}]}],"versions":["0.10.0","0.10.1","0.10.2","0.11.0","0.11.1","0.11.2.dev1","0.11.2.dev2","0.11.2.dev3","0.11.dev0","0.12.0","0.12.1","0.12.2","0.12.dev0","0.12.dev1","0.12.dev2","0.13.0","0.14.0","0.15.0","0.16.0","0.17.0","0.18.0","0.18.1","0.7.5","0.9.8","0.9.9"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2021/10/GHSA-wjw6-2cqr-j4qr/GHSA-wjw6-2cqr-j4qr.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N"},{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:H/SA:N"}]}