{"id":"CVE-2026-44394","aliases":["DEBIAN-CVE-2026-44394","EUVD-2026-33243","GHSA-whqr-fgm5-x77q","PYSEC-2026-603","UBUNTU-CVE-2026-44394"],"status":"published","title":"OpenStack Keystone's federated token rescoping mechanism doesn't propagate the original token's expiry to the newly issued token","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","severity":{"version":"3.1","score":6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00249,"percentile":0.16383,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-863"],"published":"2026-05-28T00:00:00Z","modified":"2026-10-28T02:30:49Z","fixes":[{"ecosystem":"PyPI","package":"keystone","fixed_in":["27.0.2","28.0.2","29.0.2"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:12","package":"keystone","fixed_in":["2:22.0.2-0+deb12u3"],"sources":["osv"]},{"ecosystem":"Debian:13","package":"keystone","fixed_in":["2:27.0.0-3+deb13u4"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"keystone","fixed_in":["2:29.0.1-2"],"sources":["osv"]},{"ecosystem":"Ubuntu:22.04:LTS","package":"keystone","fixed_in":["2:21.0.1-0ubuntu2.4"],"sources":["osv"]},{"ecosystem":"Ubuntu:24.04:LTS","package":"keystone","fixed_in":["2:25.0.0-0ubuntu1.4"],"sources":["osv"]},{"ecosystem":"Ubuntu:25.10","package":"keystone","fixed_in":["2:28.0.0-0ubuntu1.3"],"sources":["osv"]},{"ecosystem":"Ubuntu:26.04:LTS","package":"keystone","fixed_in":["2:29.0.0-0ubuntu1.2"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"14.0.0"},{"fixed":"27.0.2"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"28.0.0"},{"fixed":"28.0.2"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"29.0.0"},{"fixed":"29.0.2"}]}]},{"source":"osv","ecosystem":"Debian:12","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:22.0.2-0+deb12u3"}]}],"versions":["2:22.0.0-2","2:22.0.2-0+deb12u1","2:22.0.2-0+deb12u2"]},{"source":"osv","ecosystem":"Debian:13","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:27.0.0-3+deb13u4"}]}],"versions":["2:27.0.0-3","2:27.0.0-3+deb13u1","2:27.0.0-3+deb13u3"]},{"source":"osv","ecosystem":"Debian:14","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:29.0.1-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"]},{"source":"osv","ecosystem":"PyPI","package":"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"]},{"source":"osv","ecosystem":"PyPI","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"28.0.0"},{"fixed":"28.0.2"}]}],"versions":["28.0.0","28.0.1"]},{"source":"osv","ecosystem":"PyPI","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"29.0.0"},{"fixed":"29.0.2"}]}],"versions":["29.0.0","29.0.1"]},{"source":"osv","ecosystem":"PyPI","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"14.0.0"},{"fixed":"27.0.2"},{"introduced":"28.0.0"},{"fixed":"28.0.2"},{"introduced":"29.0.0"},{"fixed":"29.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","28.0.0","28.0.1","29.0.0","29.0.1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:16.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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","2:9.3.0-0ubuntu3.2+esm2"]},{"source":"osv","ecosystem":"Ubuntu:Pro:18.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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","2:13.0.4-0ubuntu1+esm1"]},{"source":"osv","ecosystem":"Ubuntu:Pro:20.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"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","2:17.0.1-0ubuntu2+esm2"]},{"source":"osv","ecosystem":"Ubuntu:22.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:21.0.1-0ubuntu2.4"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:25.0.0-0ubuntu1.4"}]}],"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"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:28.0.0-0ubuntu1.3"}]}],"versions":["2:27.0.0-0ubuntu1","2:27.0.0+git2025080113.e066e18ab-0ubuntu1","2:28.0.0~rc1-0ubuntu1","2:28.0.0-0ubuntu1","2:28.0.0-0ubuntu1.1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"keystone","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2:29.0.0-0ubuntu1.2"}]}],"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"]}],"products":[{"vendor":"openstack","product":"keystone"}],"references":[{"url":"https://bugs.launchpad.net/keystone/+bug/2150379","tags":["Exploit","Issue Tracking","Patch","Third Party Advisory","web","fix","report"]},{"url":"https://security.openstack.org/ossa/OSSA-2026-015.html","tags":["Patch","Vendor Advisory","web","fix","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-44394","tags":["advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/keystone/PYSEC-2026-603.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-whqr-fgm5-x77q","tags":["advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/44xxx/CVE-2026-44394.json","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-44394","tags":["advisory"]},{"url":"https://github.com/openstack/keystone","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-44394","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-44394","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-8433-1","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-44394","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T00:00:00Z","modified":"2026-05-28T19:43:05.616Z","cvss":[{"version":"3.1","score":6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"medium","assessor":"cna"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T13:43:00.288193Z"}],"euvd":[{"id":"EUVD-2026-33243","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T00:00:00Z","modified":"2026-05-28T19:43:05Z","cvss":[{"version":"3.1","score":6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"medium"}],"updated_at":"2026-11-02T18:21:01.680356Z"}],"ghsa":[{"id":"GHSA-whqr-fgm5-x77q","title":"OpenStack Keystone's federated token rescoping mechanism doesn't propagate the original token's expiry to the newly issued token","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T21:32:02Z","modified":"2026-07-02T17:44:31Z","cvss":[{"version":"3.1","score":6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"medium"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T14:40:37.437888Z"}],"nvd":[{"id":"CVE-2026-44394","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T19:16:38.223Z","modified":"2026-10-26T13:10:00.14Z","cvss":[{"version":"3.1","score":6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"medium","assessor":"secondary"},{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high","assessor":"primary"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T14:12:21.244426Z"}],"osv":[{"id":"CVE-2026-44394","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T00:00:00Z","modified":"2026-10-28T02:30:49.290365031Z","cvss":[{"version":"3.1","score":6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"medium"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T15:45:04.820169Z"},{"id":"DEBIAN-CVE-2026-44394","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T19:16:38.223Z","modified":"2026-10-27T09:47:37.345510223Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:45:55.669088Z"},{"id":"GHSA-whqr-fgm5-x77q","title":"OpenStack Keystone's federated token rescoping mechanism doesn't propagate the original token's expiry to the newly issued token","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T21:32:02Z","modified":"2026-09-10T03:50:47.930367522Z","cvss":[{"version":"3.1","score":6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"medium"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T15:46:58.767335Z"},{"id":"PYSEC-2026-603","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T19:16:38.223Z","modified":"2026-07-13T16:45:08.026088467Z","cvss":[{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T15:52:57.671918Z"},{"id":"UBUNTU-CVE-2026-44394","description":"An issue was discovered in OpenStack Keystone before 29.0.2. The Keystone federated token rescoping mechanism does not propagate the original token's expiry to the newly issued token. When a federated user rescopes a token via POST /v3/auth/tokens, the handle_scoped_token() function in the mapped authentication plugin returns response data without an expires_at value. The token provider falls back to issuing a token with a fresh default TTL. By rescoping repeatedly before each token expires, a user can maintain access indefinitely, bypassing operator-configured token lifetime policies. This is a variant of CVE-2012-3426. Only deployments using federated identity (SAML2, OpenID Connect) are affected.","status":"published","published":"2026-05-28T19:16:00Z","modified":"2026-09-30T18:23:58.712446326Z","cvss":[{"version":"3.1","score":6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"medium"},{"version":"3.1","score":8.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N","level":"high"}],"updated_at":"2026-11-02T16:56:22.075798Z"}]}}
