{"id":"CVE-2026-40213","aliases":["DEBIAN-CVE-2026-40213","EUVD-2026-28455","GHSA-mm7j-mhhj-hj36","PYSEC-2026-2853","UBUNTU-CVE-2026-40213","USN-8413-1"],"status":"published","title":"OpenStack Cyborg uses rule:allow (check_str='@') as the default policy for multiple API endpoints","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","severity":{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00206,"percentile":0.10759,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-863"],"published":"2026-05-07T00:00:00Z","modified":"2026-10-26T11:47:33Z","fixes":[{"ecosystem":"PyPI","package":"openstack-cyborg","fixed_in":["16.0.1"],"sources":["ghsa","osv"]},{"ecosystem":"Debian:13","package":"cyborg","fixed_in":["14.0.0-3+deb13u1"],"sources":["osv"]},{"ecosystem":"Debian:14","package":"cyborg","fixed_in":["16.0.0+git+2026.04.26.b8edfa06f1-1"],"sources":["osv"]},{"ecosystem":"Ubuntu:25.10","package":"cyborg","fixed_in":["14.0.0-3+deb13u1build0.25.10.1"],"sources":["osv"]},{"ecosystem":"Ubuntu:26.04:LTS","package":"cyborg","fixed_in":["16.0.0-2ubuntu0.1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"openstack-cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"16.0.1"}]}]},{"source":"osv","ecosystem":"Debian:13","package":"cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"14.0.0-3+deb13u1"}]}],"versions":["14.0.0-3"]},{"source":"osv","ecosystem":"Debian:14","package":"cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"16.0.0+git+2026.04.26.b8edfa06f1-1"}]}],"versions":["14.0.0-3","15.0.0-1","15.0.0~rc1-1","15.0.0~rc1-2","15.0.0~rc1-3","16.0.0-1","16.0.0-2","16.0.0~rc1-1","16.0.0~rc1-2","16.0.0~rc2-1"]},{"source":"osv","ecosystem":"PyPI","package":"openstack-cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"16.0.1"}]}],"versions":["0.1.0","0.2.0","1.0.0","1.0.0.0b3","1.0.0.0rc1","10.0.0","10.0.0.0rc1","10.1.0","11.0.0","11.0.0.0rc1","12.0.0","12.0.0.0rc1","13.0.0","13.0.0.0rc1","14.0.0","14.0.0.0rc1","14.1.0","15.0.0","15.0.0.0rc1","15.0.1","16.0.0","16.0.0.0rc1","16.0.0.0rc2","2.0.0","2.0.0.0rc1","3.0.0","3.0.0.0rc1","3.0.1","4.0.0","4.0.0.0rc1","4.0.1","5.0.0","5.0.0.0rc1","5.0.0.0rc2","5.0.1","6.0.0","6.0.0.0rc1","6.0.0.0rc2","6.0.1","7.0.0","7.0.0.0rc1","7.0.1","8.0.0","8.0.0.0rc1","8.0.1","9.0.0","9.0.0.0rc1"]},{"source":"osv","ecosystem":"PyPI","package":"openstack-cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"16.0.1"}]}],"versions":["0.1.0","0.2.0","1.0.0","1.0.0.0b3","1.0.0.0rc1","10.0.0","10.0.0.0rc1","10.1.0","11.0.0","11.0.0.0rc1","12.0.0","12.0.0.0rc1","13.0.0","13.0.0.0rc1","14.0.0","14.0.0.0rc1","14.1.0","15.0.0","15.0.0.0rc1","15.0.1","16.0.0","16.0.0.0rc1","16.0.0.0rc2","2.0.0","2.0.0.0rc1","3.0.0","3.0.0.0rc1","3.0.1","4.0.0","4.0.0.0rc1","4.0.1","5.0.0","5.0.0.0rc1","5.0.0.0rc2","5.0.1","6.0.0","6.0.0.0rc1","6.0.0.0rc2","6.0.1","7.0.0","7.0.0.0rc1","7.0.1","8.0.0","8.0.0.0rc1","8.0.1","9.0.0","9.0.0.0rc1"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"14.0.0-3+deb13u1build0.25.10.1"}]}],"versions":["13.0.0-2","14.0.0-2","14.0.0-3"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"16.0.0-2ubuntu0.1"}]}],"versions":["14.0.0-3","15.0.0-1","16.0.0~rc1-2","16.0.0-2"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"14.0.0-3+deb13u1build0.25.10.1"}]}],"versions":["13.0.0-2","14.0.0-2","14.0.0-3"],"bundled":2},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"cyborg","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"16.0.0-2ubuntu0.1"}]}],"versions":["14.0.0-3","15.0.0-1","16.0.0~rc1-2","16.0.0-2"],"bundled":2}],"products":[{"vendor":"openstack","product":"cyborg"}],"references":[{"url":"https://bugs.launchpad.net/openstack-cyborg/+bug/2143263","tags":["web","report"]},{"url":"https://www.openwall.com/lists/oss-security/2026/05/07/6","tags":["web","report"]},{"url":"https://security.openstack.org/ossa/OSSA-2026-011.html","tags":["web","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-40213","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-mm7j-mhhj-hj36","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-40213","tags":["advisory"]},{"url":"https://github.com/openstack/cyborg","tags":["package"]},{"url":"https://pypi.org/project/openstack-cyborg","tags":["package"]},{"url":"https://ubuntu.com/security/CVE-2026-40213","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-40213","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-8413-1","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-40214","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-40213","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","status":"published","published":"2026-05-07T00:00:00Z","modified":"2026-05-08T15:47:07.733Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high","assessor":"cna"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T13:43:11.445168Z"}],"euvd":[{"id":"EUVD-2026-28455","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","status":"published","published":"2026-05-07T00:00:00Z","modified":"2026-05-08T15:47:07Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high"}],"updated_at":"2026-11-02T19:05:14.505765Z"}],"ghsa":[{"id":"GHSA-mm7j-mhhj-hj36","title":"OpenStack Cyborg uses rule:allow (check_str='@') as the default policy for multiple API endpoints","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","status":"published","published":"2026-05-08T00:31:33Z","modified":"2026-05-13T01:37:15Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T14:40:07.01746Z"}],"nvd":[{"id":"CVE-2026-40213","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","status":"published","published":"2026-05-07T22:16:34.91Z","modified":"2026-10-26T00:10:00.15Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high","assessor":"secondary"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T14:12:17.842772Z"}],"osv":[{"id":"DEBIAN-CVE-2026-40213","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","status":"published","published":"2026-05-07T22:16:34.91Z","modified":"2026-10-26T11:47:33.61222987Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high"}],"updated_at":"2026-11-02T15:45:54.892385Z"},{"id":"GHSA-mm7j-mhhj-hj36","title":"OpenStack Cyborg uses rule:allow (check_str='@') as the default policy for multiple API endpoints","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","status":"published","published":"2026-05-08T00:31:33Z","modified":"2026-07-13T16:42:28.690562309Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high"}],"cwes":["CWE-863"],"updated_at":"2026-11-02T15:46:52.170928Z"},{"id":"PYSEC-2026-2853","title":"OpenStack Cyborg uses rule:allow (check_str='@') as the default policy for multiple API endpoints","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","status":"published","published":"2026-07-13T15:15:41.370919Z","modified":"2026-07-13T16:32:33.851457199Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high"}],"updated_at":"2026-11-02T15:52:56.429374Z"},{"id":"UBUNTU-CVE-2026-40213","description":"OpenStack Cyborg before 16.0.1 uses rule:allow (check_str='@') as the default policy for multiple API endpoints. This unconditionally authorizes any request carrying a valid Keystone token regardless of roles, project membership, or scope. An authenticated user with zero role assignments can complete various actions such as reprogramming FPGA bitstreams on arbitrary compute nodes via agent RPC.","status":"published","published":"2026-05-07T22:16:00Z","modified":"2026-06-09T21:19:11.290788631Z","cvss":[{"version":"3.1","score":7.4,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:L","level":"high"}],"updated_at":"2026-11-02T16:56:16.686388Z"},{"id":"USN-8413-1","title":"cyborg vulnerabilities","description":"It was discovered that Cyborg did not properly enforce project ownership in\nthe Accelerator Request (ARQ) API. An authenticated user could possibly use\nthis issue to delete ARQs bound to other projects' instances, resulting in\na cross-tenant denial of service. (CVE-2026-40214)\n\nIt was discovered that Cyborg used a permissive default policy that\nauthorized any request carrying a valid authentication token, regardless of\nroles or scope, for multiple API endpoints. An authenticated user could\npossibly use this issue to perform unauthorized actions, such as\nreprogramming FPGA bitstreams on arbitrary compute nodes. (CVE-2026-40213)","status":"published","published":"2026-06-09T16:09:11Z","modified":"2026-06-09T21:29:23.859315177Z","updated_at":"2026-11-02T16:58:25.103481Z"}]}}
