{"id":"GHSA-2r23-2g6v-2m5f","summary":"OpenStack Keystone has an Authorization Bypass","details":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone RBAC policy enforcer in enforce_call unconditionally merges the raw JSON request body into the policy enforcement dictionary via policy_dict.update(json_input.copy()), overwriting trusted target data that was previously set from database lookups. Because flask.request.get_json is called with force=True, this works regardless of Content-Type or HTTP method. Any authenticated user can inject arbitrary policy target attributes (e.g., user_id, project_id) into the request body to bypass RBAC checks and perform unauthorized operations on resources belonging to other users or projects. This was introduced in commit 5ea59f52 (Rocky/14.0.0).","aliases":["CVE-2026-42999","PYSEC-2026-600"],"modified":"2026-07-17T21:06:42.595865615Z","published":"2026-05-28T21:32:02Z","database_specific":{"nvd_published_at":"2026-05-28T19:16:37Z","cwe_ids":["CWE-639","CWE-863"],"severity":"MODERATE","github_reviewed":true,"github_reviewed_at":"2026-07-02T17:44:03Z"},"references":[{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-42999"},{"type":"WEB","url":"https://access.redhat.com/security/cve/CVE-2026-42999"},{"type":"WEB","url":"https://bugs.launchpad.net/keystone/+bug/2148398"},{"type":"WEB","url":"https://bugzilla.redhat.com/show_bug.cgi?id=2482840"},{"type":"PACKAGE","url":"https://github.com/openstack/keystone"},{"type":"WEB","url":"https://github.com/pypa/advisory-database/tree/main/vulns/keystone/PYSEC-2026-600.yaml"},{"type":"WEB","url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-42999.json"},{"type":"WEB","url":"https://security.openstack.org/ossa/OSSA-2026-015.html"}],"affected":[{"package":{"name":"keystone","ecosystem":"PyPI","purl":"pkg:pypi/keystone"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"14.0.0"},{"fixed":"27.0.2"}]}],"versions":["14.0.0","14.0.1","14.1.0","14.2.0","15.0.0","15.0.0.0rc1","15.0.0.0rc2","15.0.1","16.0.0","16.0.0.0rc1","16.0.0.0rc2","16.0.1","16.0.2","17.0.0","17.0.0.0rc1","17.0.0.0rc2","17.0.1","18.0.0","18.0.0.0rc1","18.1.0","19.0.0","19.0.0.0rc1","19.0.0.0rc2","19.0.1","20.0.0","20.0.0.0rc1","20.0.1","21.0.0","21.0.0.0rc1","21.0.1","22.0.0","22.0.0.0rc1","22.0.1","22.0.2","23.0.0","23.0.0.0rc1","23.0.1","23.0.2","24.0.0","24.0.0.0rc1","24.1.0","25.0.0","25.0.0.0rc1","26.0.0","26.0.0.0rc1","26.1.0","26.1.1","27.0.0","27.0.0.0rc1","27.0.1"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-2r23-2g6v-2m5f/GHSA-2r23-2g6v-2m5f.json"}},{"package":{"name":"keystone","ecosystem":"PyPI","purl":"pkg:pypi/keystone"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"28.0.0"},{"fixed":"28.0.2"}]}],"versions":["28.0.0","28.0.1"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-2r23-2g6v-2m5f/GHSA-2r23-2g6v-2m5f.json"}},{"package":{"name":"keystone","ecosystem":"PyPI","purl":"pkg:pypi/keystone"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"29.0.0"},{"fixed":"29.0.2"}]}],"versions":["29.0.0","29.0.1"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/05/GHSA-2r23-2g6v-2m5f/GHSA-2r23-2g6v-2m5f.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L"}]}