{"id":"CVE-2026-102895","published":"2026-11-04T22:17:44.613","lastModified":"2026-11-04T22:17:44.613","description":"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_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.","cvssScore":9.8,"cvssSeverity":"CRITICAL","cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","cwes":["CWE-287","CWE-290","CWE-346"],"vendors":[],"products":[],"references":[{"url":"https://github.com/gpustack/gpustack/commit/53f42a6a553542974396d16a4ff6b12bcbedb48d","tags":[]},{"url":"https://github.com/gpustack/gpustack/pull/5346","tags":[]},{"url":"https://github.com/gpustack/gpustack/releases/tag/v2.2.0","tags":[]},{"url":"https://github.com/gpustack/gpustack/security/advisories/GHSA-gj9m-f8ph-pmhr","tags":[]}],"exploitRefs":[{"url":"https://github.com/gpustack/gpustack/commit/53f42a6a553542974396d16a4ff6b12bcbedb48d","tags":[]},{"url":"https://github.com/gpustack/gpustack/pull/5346","tags":[]},{"url":"https://github.com/gpustack/gpustack/releases/tag/v2.2.0","tags":[]},{"url":"https://github.com/gpustack/gpustack/security/advisories/GHSA-gj9m-f8ph-pmhr","tags":[]}],"hasPoc":true,"ai":{"summary":"GPUStack versions prior to 2.2.0 allowed unauthenticated administrative access due to improper validation of request source IP in the get_current_user function, where a remote attacker could spoof the loopback address (127.0.0.1) via reverse proxy misconfiguration or a forged X-GPUStack-Real-IP header, bypassing authentication entirely.","exploitability":"Exploitation is straightforward for remote attackers with network access to the API endpoint, requiring only manipulation of the X-GPUStack-Real-IP header or exploitation of a same-host reverse proxy configuration.","blast_radius":"Successful exploitation grants full administrative control, enabling creation of persistent credentials, theft of worker and cloud secrets, and remote code execution via the /v2/inference-backends/from-yaml endpoint.","remediation":"Upgrade to GPUStack version 2.2.0 or later, which fixes the IP validation flaw in get_current_user.","detection":"Look for requests with X-GPUStack-Real-IP set to 127.0.0.1 or ::1 from non-loopback source IPs, especially when combined with administrative API calls (e.g., POST /v2/inference-backends/from-yaml, user/model creation endpoints) and absence of valid authentication tokens in the Authorization header.","tags":["auth-bypass","rce","api-abuse","secret-exposure","web"],"model":"garnet-coder","analyzedAt":"2026-11-05T09:46:24.248Z"}}