diff --git a/advisories/github-reviewed/2024/02/GHSA-77hh-43cm-v8j6/GHSA-77hh-43cm-v8j6.json b/advisories/github-reviewed/2024/02/GHSA-77hh-43cm-v8j6/GHSA-77hh-43cm-v8j6.json new file mode 100644 index 00000000000..b6b4d12b3aa --- /dev/null +++ b/advisories/github-reviewed/2024/02/GHSA-77hh-43cm-v8j6/GHSA-77hh-43cm-v8j6.json @@ -0,0 +1,66 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-77hh-43cm-v8j6", + "modified": "2024-02-16T23:35:39Z", + "published": "2024-02-16T23:35:39Z", + "aliases": [ + + ], + "summary": "tuf's Metadata API: Targets.get_delegated_role() is missing input validation", + "details": "The security of both a TUF client and repository implementations depend on the concept of trusted Metadata objects verifying the signatures over other Metadata that it delegates to. This verification process uses `Targets.get_delegated_role(delegated_role: str)` to find the delegation information.\n\n`tuf.api.metadata.Targets.get_delegated_role()` should ensure that the given `delegated_rolename` is actually a name of a role that is delegated by that Targets, but in the case of \"succinct delegation\" this does not happen.\n\n`tuf.ngclient` users are **not** impacted but direct users of `tuf.api.metadata` could be impacted.\n\n### Impact\n\nIf an attacker can make a Metadata API user run `Targets.get_delegated_role()` so that \n1. the `Targets` uses succinct delegation\n1. the `delegated_role` argument is not actually delegated by the `Targets`\n\nthe result will be incorrect.\n\nThis also means that if an attacker can make a Metadata API user run `Targets.verify_delegate()` or `Targets.get_verification_result()` so that\n1. the delegating `Targets` uses a succinct delegation\n1. the `delegated_role` argument is the name of some unrelated Metadata\n1. that other Metadata is correctly signed by the keys defined in the succinct delegation\n\nthe result would be a successful verification even though the `Targets` in question does not actually delegate to `delegated_role`.\n\nThe impact is estimated to be low for following reasons:\n\n* This cannot impact a TUF client that implements the client workflow as specified since the delegated role name is not an input but is collected from the (trusted) delegating Targets itself\n* Actual signature verification is not bypassed: The verified metadata _must_ still be correctly signed by the keys specified in the delegating role.\n* The described situations are somewhat hypothetical: there does not seem to be any reason for a python-tuf user (whether client or a repository) to use `tuf.api.metadata` in this way.\n\nAll users of `tuf.ngclient` are specifically **not** impacted. Users of `tuf.api.metadata` could be impacted if they use succinct delegations in a way described above.\n\n### Patches\n\nA fix is available in python-tuf 3.1.1 as commit 77cb66bc and in later releases as commit eb4834d9._\n\n### Workarounds\n\n`tuf.api.metadata` users should only call `Targets.get_delegated_role()`, `Targets.verify_delegate()` or `Targets.get_verification_result()` with `delegated_role` argument that is known to be delegated by the `Targets` in question.\n", + "severity": [ + + ], + "affected": [ + { + "package": { + "ecosystem": "PyPI", + "name": "tuf" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "2.0.0" + }, + { + "fixed": "3.1.1" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/theupdateframework/python-tuf/security/advisories/GHSA-77hh-43cm-v8j6" + }, + { + "type": "WEB", + "url": "https://github.com/theupdateframework/python-tuf/commit/77cb66bc879d108c449ba4c46dfb0e3a9e57a785" + }, + { + "type": "WEB", + "url": "https://github.com/theupdateframework/python-tuf/commit/eb4834d9205d07ae164bc6c5b97787585c0acfdc" + }, + { + "type": "PACKAGE", + "url": "https://github.com/theupdateframework/python-tuf" + }, + { + "type": "WEB", + "url": "https://github.com/theupdateframework/python-tuf/releases/tag/v3.1.1" + } + ], + "database_specific": { + "cwe_ids": [ + + ], + "severity": "LOW", + "github_reviewed": true, + "github_reviewed_at": "2024-02-16T23:35:39Z", + "nvd_published_at": null + } +} \ No newline at end of file