{"id":"CVE-2026-102895","title":"GPUStack: Authentication bypass via trusted loopback source (reverse-proxy TCP peer or X-GPUStack-Real-IP header) grants unauthenticated admin","summary":"GPUStack is an open-source GPU cluster manager for AI model serving and GPU instance provisioning. Prior to 2.2.0, get_current_user in gpustack/api/auth.py treated a loopback request source as the built-in administrator when force_auth_l…","severity":"critical","cvss":9.8,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","cvssSource":"cna","cwe":["CWE-287","CWE-290","CWE-346"],"vendor":"gpustack","product":"gpustack","affected":["gpustack < 2.2.0"],"ssvc":{"exploitation":"none","automatable":"yes","technicalImpact":"total","timestamp":"2026-11-05T19:06:06.486167Z"},"published":"2026-11-04","updated":"2026-11-06","sourceUpdated":"2026-11-06T04:56:39.998Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-102895","references":[{"url":"https://github.com/gpustack/gpustack/security/advisories/GHSA-gj9m-f8ph-pmhr","label":"https://github.com/gpustack/gpustack/security/advisories/GHSA-gj9m-f8ph-pmhr"},{"url":"https://github.com/gpustack/gpustack/pull/5346","label":"https://github.com/gpustack/gpustack/pull/5346"},{"url":"https://github.com/gpustack/gpustack/commit/53f42a6a553542974396d16a4ff6b12bcbedb48d","label":"https://github.com/gpustack/gpustack/commit/53f42a6a553542974396d16a4ff6b12bcbedb48d"},{"url":"https://github.com/gpustack/gpustack/releases/tag/v2.2.0","label":"https://github.com/gpustack/gpustack/releases/tag/v2.2.0"}],"tags":["cve.org"],"epss":0.00331,"epssPercentile":0.26401,"ingestedAt":"2026-11-05T22:38:31.548Z","slug":"CVE-2026-102895","body":"## Overview\n\nGPUStack is an open-source GPU cluster manager for AI model serving and GPU instance provisioning. Prior to 2.2.0, get_current_user in gpustack/api/auth.py treated a loopback request source as the built-in administrator when force_auth_localhost was false, which was the default. A remote request could appear to originate from 127.0.0.1 because client_ip_getter accepted a same-host reverse proxy peer or a client-supplied X-GPUStack-Real-IP loopback value. The bypass allowed unauthenticated administrative access, including user and model changes, persistent administrator API-key creation, disclosure of worker and cloud-provider secrets, and code execution through POST /v2/inference-backends/from-yaml. Exploitation was observed in the wild against a 2.1.1 deployment. This issue is fixed in version 2.2.0.\n\n## Affected\n\n- `gpustack < 2.2.0`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"midnight","depthScore":54,"depthScoreParts":{"impact":53.9,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}