{"id":"CVE-2026-80183","aliases":["DEBIAN-CVE-2026-80183","EUVD-2026-66818","GHSA-xmh6-7768-658c","UBUNTU-CVE-2026-80183","USN-8854-1"],"status":"published","title":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project...","description":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project can list every project-scoped role assignment under any domain by passing a domain ID as scope.project.id with include_subtree to the GET /v3/role_assignments endpoint. The domain's project record has domain_id=null, causing the policy domain_id check to pass for any caller. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role involved. The literal \"default\" domain ID works against any deployment created with keystone-manage bootstrap. An attacker can harvest domain IDs from the response and repeat the query to map role assignments across the entire cloud. This is caused by misuse of \"None\" in \n\nlist_role_assignments_for_tree.","severity":{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00382,"percentile":0.32648,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-843"],"published":"2026-08-26T23:16:43Z","modified":"2026-10-01T03:03:42Z","fixes":[{"ecosystem":"Debian:12","package":"keystone","fixed_in":["2:22.0.2-0+deb12u4"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"keystone","fixed_in":["2:27.0.0-3+deb13u5"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"keystone","fixed_in":["2:29.0.2-2"],"sources":["osv"]},{"ecosystem":"Ubuntu:Pro:20.04:LTS","package":"keystone","fixed_in":["2:17.0.1-0ubuntu2+esm2"],"sources":["osv"]},{"ecosystem":"Ubuntu:22.04:LTS","package":"keystone","fixed_in":["2:21.0.1-0ubuntu2.6"],"sources":["osv"]},{"ecosystem":"Ubuntu:24.04:LTS","package":"keystone","fixed_in":["2:25.0.0-0ubuntu1.6"],"sources":["osv"]},{"ecosystem":"Ubuntu:26.04:LTS","package":"keystone","fixed_in":["2:29.0.0-0ubuntu1.4"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:12","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:22.0.2-0+deb12u4"}]}],"versions":["2:22.0.0-2","2:22.0.2-0+deb12u1","2:22.0.2-0+deb12u2","2:22.0.2-0+deb12u3"]},{"source":"osv","ecosystem":"Debian:13","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:27.0.0-3+deb13u5"}]}],"versions":["2:27.0.0-3","2:27.0.0-3+deb13u1","2:27.0.0-3+deb13u3","2:27.0.0-3+deb13u4"]},{"source":"osv","ecosystem":"Debian:14","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:29.0.2-2"}]}],"versions":["2:27.0.0-3","2:28.0.0-1","2:28.0.0-2","2:28.0.0-3","2:28.0.0-4","2:28.0.0-5","2:28.0.0-6","2:28.0.0~rc1-1","2:28.0.0~rc1-2","2:28.0.0~rc1-4","2:29.0.0-1","2:29.0.0-2","2:29.0.0-3","2:29.0.0~rc1-1","2:29.0.0~rc1-2","2:29.0.1-1","2:29.0.1-2","2:29.0.2-1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:17.0.1-0ubuntu2+esm2"}]}],"versions":["2:16.0.0-0ubuntu1","2:17.0.0~b1~git2019121613.db81fee63-0ubuntu1","2:17.0.0~b2~git2020020513.99733f172-0ubuntu1","2:17.0.0~b3~git2020032415.9f9040257-0ubuntu1","2:17.0.0~b3~git2020032415.9f9040257-0ubuntu2","2:17.0.0~b3~git2020041013.7bb6314e4-0ubuntu1","2:17.0.0-0ubuntu0.20.04.1","2:17.0.1-0ubuntu1","2:17.0.1-0ubuntu2","2:17.0.1-0ubuntu2+esm1"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:21.0.1-0ubuntu2.6"}]}],"versions":["2:20.0.0-0ubuntu1","2:20.0.0+git2021120815.2ddf8f321-0ubuntu1","2:20.0.0+git2022011217.771c943ad-0ubuntu1","2:20.0.0+git2022030313.a3fc9e7c3-0ubuntu1","2:21.0.0-0ubuntu1","2:21.0.1-0ubuntu1","2:21.0.1-0ubuntu2","2:21.0.1-0ubuntu2.1","2:21.0.1-0ubuntu2.2","2:21.0.1-0ubuntu2.4"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:25.0.0-0ubuntu1.6"}]}],"versions":["2:24.0.0-0ubuntu1","2:24.0.0+git2024011916.adfa92b4-0ubuntu1","2:25.0.0~rc1-0ubuntu1","2:25.0.0-0ubuntu1","2:25.0.0-0ubuntu1.1","2:25.0.0-0ubuntu1.2","2:25.0.0-0ubuntu1.4"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:29.0.0-0ubuntu1.4"}]}],"versions":["2:28.0.0-0ubuntu1","2:28.0.0-0ubuntu2","2:28.0.0+git20260119.61.8a42793e7-0ubuntu1","2:29.0.0~rc1-0ubuntu1","2:29.0.0-0ubuntu1","2:29.0.0-0ubuntu1.2"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:9.3.0-0ubuntu3.2+esm2"}]}],"versions":["2:8.0.0-0ubuntu1","2:9.0.0~b1-0ubuntu1","2:9.0.0~b2-0ubuntu1","2:9.0.0~b3-0ubuntu1","2:9.0.0~rc1-0ubuntu1","2:9.0.0-0ubuntu1","2:9.0.2-0ubuntu1","2:9.0.2-0ubuntu2","2:9.1.0-0ubuntu1","2:9.2.0-0ubuntu1","2:9.3.0-0ubuntu1","2:9.3.0-0ubuntu2","2:9.3.0-0ubuntu3","2:9.3.0-0ubuntu3.1","2:9.3.0-0ubuntu3.2"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:13.0.4-0ubuntu1+esm1"}]}],"versions":["2:12.0.0-0ubuntu1","2:13.0.0~b1-0ubuntu1","2:13.0.0~b2-0ubuntu1","2:13.0.0~b3-0ubuntu1","2:13.0.0~rc1-0ubuntu1","2:13.0.0~rc2-0ubuntu1","2:13.0.0-0ubuntu1","2:13.0.1-0ubuntu1","2:13.0.2-0ubuntu1","2:13.0.2-0ubuntu3","2:13.0.4-0ubuntu1"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:17.0.1-0ubuntu2+esm2"}]}],"versions":["2:16.0.0-0ubuntu1","2:17.0.0~b1~git2019121613.db81fee63-0ubuntu1","2:17.0.0~b2~git2020020513.99733f172-0ubuntu1","2:17.0.0~b3~git2020032415.9f9040257-0ubuntu1","2:17.0.0~b3~git2020032415.9f9040257-0ubuntu2","2:17.0.0~b3~git2020041013.7bb6314e4-0ubuntu1","2:17.0.0-0ubuntu0.20.04.1","2:17.0.1-0ubuntu1","2:17.0.1-0ubuntu2","2:17.0.1-0ubuntu2+esm1"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:21.0.1-0ubuntu2.6"}]}],"versions":["2:20.0.0-0ubuntu1","2:20.0.0+git2021120815.2ddf8f321-0ubuntu1","2:20.0.0+git2022011217.771c943ad-0ubuntu1","2:20.0.0+git2022030313.a3fc9e7c3-0ubuntu1","2:21.0.0-0ubuntu1","2:21.0.1-0ubuntu1","2:21.0.1-0ubuntu2","2:21.0.1-0ubuntu2.1","2:21.0.1-0ubuntu2.2","2:21.0.1-0ubuntu2.4"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:25.0.0-0ubuntu1.6"}]}],"versions":["2:24.0.0-0ubuntu1","2:24.0.0+git2024011916.adfa92b4-0ubuntu1","2:25.0.0~rc1-0ubuntu1","2:25.0.0-0ubuntu1","2:25.0.0-0ubuntu1.1","2:25.0.0-0ubuntu1.2","2:25.0.0-0ubuntu1.4"],"bundled":3},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:29.0.0-0ubuntu1.4"}]}],"versions":["2:28.0.0-0ubuntu1","2:28.0.0-0ubuntu2","2:28.0.0+git20260119.61.8a42793e7-0ubuntu1","2:29.0.0~rc1-0ubuntu1","2:29.0.0-0ubuntu1","2:29.0.0-0ubuntu1.2"],"bundled":3}],"products":[{"vendor":"openstack","product":"keystone"}],"references":[{"url":"https://launchpad.net/bugs/2154645","tags":["issue-tracking","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-80183"},{"url":"https://github.com/advisories/GHSA-xmh6-7768-658c"},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-80183","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-80183","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-80183","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-8854-1","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-80182","tags":["report"]},{"url":"https://ubuntu.com/security/CVE-2026-80184","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-80183","description":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project can list every project-scoped role assignment under any domain by passing a domain ID as scope.project.id with include_subtree to the GET /v3/role_assignments endpoint. The domain's project record has domain_id=null, causing the policy domain_id check to pass for any caller. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role involved. The literal \"default\" domain ID works against any deployment created with keystone-manage bootstrap. An attacker can harvest domain IDs from the response and repeat the query to map role assignments across the entire cloud. This is caused by misuse of \"None\" in \n\nlist_role_assignments_for_tree.","status":"published","published":"2026-08-26T23:16:43.059Z","modified":"2026-08-27T14:08:09.543Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N","level":"high","assessor":"cna"}],"cwes":["CWE-843"],"updated_at":"2026-11-02T13:45:36.695039Z"}],"euvd":[{"id":"EUVD-2026-66818","description":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project can list every project-scoped role assignment under any domain by passing a domain ID as scope.project.id with include_subtree to the GET /v3/role_assignments endpoint. The domain's project record has domain_id=null, causing the policy domain_id check to pass for any caller. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role involved. The literal \"default\" domain ID works against any deployment created with keystone-manage bootstrap. An attacker can harvest domain IDs from the response and repeat the query to map role assignments across the entire cloud. This is caused by misuse of \"None\" in \n\nlist_role_assignments_for_tree.","status":"published","published":"2026-08-26T23:16:43Z","modified":"2026-08-27T14:08:09Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N","level":"high"}],"updated_at":"2026-11-02T18:01:28.581047Z"}],"ghsa":[{"id":"GHSA-xmh6-7768-658c","title":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project...","description":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project can list every project-scoped role assignment under any domain by passing a domain ID as scope.project.id with include_subtree to the GET /v3/role_assignments endpoint. The domain's project record has domain_id=null, causing the policy domain_id check to pass for any caller. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role involved. The literal \"default\" domain ID works against any deployment created with keystone-manage bootstrap. An attacker can harvest domain IDs from the response and repeat the query to map role assignments across the entire cloud. This is caused by misuse of \"None\" in \n\nlist_role_assignments_for_tree.","status":"published","published":"2026-08-27T03:32:58Z","modified":"2026-08-27T03:34:23Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high"}],"cwes":["CWE-843"],"updated_at":"2026-11-02T15:11:02.000078Z"}],"nvd":[{"id":"CVE-2026-80183","description":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project can list every project-scoped role assignment under any domain by passing a domain ID as scope.project.id with include_subtree to the GET /v3/role_assignments endpoint. The domain's project record has domain_id=null, causing the policy domain_id check to pass for any caller. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role involved. The literal \"default\" domain ID works against any deployment created with keystone-manage bootstrap. An attacker can harvest domain IDs from the response and repeat the query to map role assignments across the entire cloud. This is caused by misuse of \"None\" in \n\nlist_role_assignments_for_tree.","status":"published","published":"2026-08-27T01:18:16.05Z","modified":"2026-09-09T16:03:22.897Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high","assessor":"secondary"}],"cwes":["CWE-843"],"updated_at":"2026-11-02T14:12:42.035353Z"}],"osv":[{"id":"DEBIAN-CVE-2026-80183","description":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project can list every project-scoped role assignment under any domain by passing a domain ID as scope.project.id with include_subtree to the GET /v3/role_assignments endpoint. The domain's project record has domain_id=null, causing the policy domain_id check to pass for any caller. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role involved. The literal \"default\" domain ID works against any deployment created with keystone-manage bootstrap. An attacker can harvest domain IDs from the response and repeat the query to map role assignments across the entire cloud. This is caused by misuse of \"None\" in   list_role_assignments_for_tree.","status":"published","published":"2026-08-27T01:18:16.05Z","modified":"2026-10-01T03:03:42.526590788Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","level":"high"}],"updated_at":"2026-11-02T15:46:04.001673Z"},{"id":"UBUNTU-CVE-2026-80183","description":"In OpenStack Keystone before 29.0.3, any authenticated user holding role:reader on any project can list every project-scoped role assignment under any domain by passing a domain ID as scope.project.id with include_subtree to the GET /v3/role_assignments endpoint. The domain's project record has domain_id=null, causing the policy domain_id check to pass for any caller. With include_names, the response discloses the names and home-domain IDs of every user, group, project, and role involved. The literal \"default\" domain ID works against any deployment created with keystone-manage bootstrap. An attacker can harvest domain IDs from the response and repeat the query to map role assignments across the entire cloud. This is caused by misuse of \"None\" in list_role_assignments_for_tree.","status":"published","published":"2026-08-27T01:18:00Z","modified":"2026-09-30T18:25:00.887888282Z","cvss":[{"version":"4.0","score":7.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:L/SI:N/SA:N","level":"high"}],"updated_at":"2026-11-02T16:57:18.015985Z"},{"id":"USN-8854-1","title":"keystone vulnerabilities","description":"Grzegorz Grasza discovered that OpenStack Keystone did not consistently\nenforce restrictions for delegated authentication tokens. An authenticated\nattacker could possibly use this issue to create credentials or delegations\n that outlasted the delegated token. (CVE-2026-80182)\n\nIt was discovered that OpenStack Keystone incorrectly handled role\nassignment queries under certain circumstances. An authenticated attacker\ncould possibly use this issue to obtain sensitive information. This\nissue only affected Ubuntu 20.04 LTS, Ubuntu 22.04 LTS, Ubuntu 24.04\nLTS, and Ubuntu 26.04 LTS. (CVE-2026-80183)\n\nTim Shephard discovered that OpenStack Keystone did not properly\nrestrict reauthentication using delegated tokens. An authenticated\nattacker could possibly use this issue to escape their intended\nproject scope and obtain unauthorized access. (CVE-2026-80184)","status":"published","published":"2026-09-30T13:07:45Z","modified":"2026-10-01T00:27:45.290366825Z","updated_at":"2026-11-02T16:58:26.907654Z"}]}}
