{"id":"CVE-2026-40214","aliases":["DEBIAN-CVE-2026-40214","EUVD-2026-28456","GHSA-mmpc-xjxr-5hf8","PYSEC-2026-2854","UBUNTU-CVE-2026-40214","USN-8413-1"],"status":"published","title":"OpenStack Cyborg's Accelerator Request (ARQ) API does not enforce project ownership at any layer","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","severity":{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.00206,"percentile":0.10791,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-282"],"published":"2026-05-07T00:00:00Z","modified":"2026-10-27T09:47:38Z","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/2144056","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-40214","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-mmpc-xjxr-5hf8","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-40214","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-40214","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-40214","tags":["report"]},{"url":"https://ubuntu.com/security/notices/USN-8413-1","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-40213","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-40214","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","status":"published","published":"2026-05-07T00:00:00Z","modified":"2026-05-08T15:47:39.031Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium","assessor":"cna"}],"cwes":["CWE-282"],"updated_at":"2026-11-02T13:43:11.445168Z"}],"euvd":[{"id":"EUVD-2026-28456","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","status":"published","published":"2026-05-07T00:00:00Z","modified":"2026-05-08T15:47:39Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium"}],"updated_at":"2026-11-02T19:05:14.505765Z"}],"ghsa":[{"id":"GHSA-mmpc-xjxr-5hf8","title":"OpenStack Cyborg's Accelerator Request (ARQ) API does not enforce project ownership at any layer","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","status":"published","published":"2026-05-08T00:31:34Z","modified":"2026-05-13T01:37:26Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium"}],"cwes":["CWE-282"],"updated_at":"2026-11-02T14:40:07.01746Z"}],"nvd":[{"id":"CVE-2026-40214","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","status":"published","published":"2026-05-07T22:16:35.047Z","modified":"2026-10-26T20:10:00.16Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium","assessor":"secondary"}],"cwes":["CWE-282"],"updated_at":"2026-11-02T14:12:17.842772Z"}],"osv":[{"id":"DEBIAN-CVE-2026-40214","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","status":"published","published":"2026-05-07T22:16:35.047Z","modified":"2026-10-27T09:47:38.683567157Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium"}],"updated_at":"2026-11-02T15:45:54.892385Z"},{"id":"GHSA-mmpc-xjxr-5hf8","title":"OpenStack Cyborg's Accelerator Request (ARQ) API does not enforce project ownership at any layer","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","status":"published","published":"2026-05-08T00:31:34Z","modified":"2026-07-13T16:43:00.625217437Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium"}],"cwes":["CWE-282"],"updated_at":"2026-11-02T15:46:52.170928Z"},{"id":"PYSEC-2026-2854","title":"OpenStack Cyborg's Accelerator Request (ARQ) API does not enforce project ownership at any layer","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","status":"published","published":"2026-07-13T15:15:41.429295Z","modified":"2026-07-13T16:32:33.835126459Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium"}],"updated_at":"2026-11-02T15:52:56.429374Z"},{"id":"UBUNTU-CVE-2026-40214","description":"In OpenStack Cyborg before 16.0.1, the Accelerator Request (ARQ) API does not enforce project ownership at any layer. The project_id column in the database is never populated (NULL for every ARQ), database queries have no project filtering, and policy checks are self-referential (the authorize_wsgi decorator compares the caller's project_id with itself rather than the target resource). Any authenticated non-admin user can complete various actions such as deleting ARQs bound to other projects' instances, aka cross-tenant denial of service.","status":"published","published":"2026-05-07T22:16:00Z","modified":"2026-06-09T21:19:11.278166667Z","cvss":[{"version":"3.1","score":6.3,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L","level":"medium"}],"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"}]}}
