Threat feed

CVE-2026-102895 — GPUStack lets unauthenticated attackers act as administrator: explainer and fix (CVSS 9.8, fixed in 2.2.0, exploited)

CVE-2026-102895 lets an unauthenticated attacker act as administrator in GPUStack before 2.2.0 (CVSS 9.8). Exploited in the wild; in CISA KEV.

Published 2026-11-10 Updated 2026-11-10 Last verified 2026-11-10 8 min read
On this page

An explainer for a vulnerability in GPUStack (an open-source manager that runs AI models on GPU clusters and provisions GPU instances) that lets unauthenticated parties act as administrator. It covers what happens, who is affected and how to respond, from the defender's side and without attack steps.

Advisory summary
CVE
CVE-2026-102895 (GitHub advisory GHSA-gj9m-f8ph-pmhr)
Severity
CVSS v3.1 9.8 (Critical). Same value in the advisory, the CVE record and NVD
Type
Improper authentication (CWE-287). The advisory also lists authentication bypass by spoofing (CWE-290) and origin validation error (CWE-346)
Preconditions
Unauthenticated; network reach to GPUStack is enough. Per the advisory, default settings are affected
Affected
pip gpustack before 2.2.0
Fix
gpustack 2.2.0
Dates
Advisory: 31 July 2026 / CVE record: 4 November 2026
Exploitation
Exploitation in the wild reported in the advisory. Added to CISA KEV on 9 November 2026 (due 12 November)
9.8
CVSS v3.1
No auth
What an attacker needs
2.2.0
Fixed version
12 Nov
KEV due date

Risk of waiting

According to the advisory, an unauthenticated party can change users, models and worker settings, and create administrator API keys that work from any source address. Worker and cloud-provider credentials can be read, and combined with administrator-only functionality this leads to code execution on worker hosts. The advisory says exploitation in the wild was observed. CISA marks forensic triage as required for this KEV entry.

What the vulnerability is

With default settings (force_auth_localhost is false), GPUStack treats a request from the same machine (loopback) as the built-in administrator. It is meant to save authentication effort for local use. The problem is that what decides "is it the same machine" can be influenced from outside.

According to the advisory there are two paths to administrator without authentication. The first is a reverse proxy on the same host: once the proxy forwards to GPUStack, even external requests appear to GPUStack to come from loopback. This is a common self-hosted layout and needs no header or credential. The second is a request forwarding header; the advisory says a client-supplied value can make a request look like loopback. This site does not describe how to exploit it.

Before (earlier than 2.2.0)

  • A loopback source becomes administrator without authentication
  • Behind a same-host reverse proxy, external traffic looks like loopback
  • A forwarding header can fake the source

After (2.2.0) changes

  • The path that treats loopback as administrator is removed
  • Client-IP and forwarding-header handling is hardened
  • A real-client-IP header is accepted only from an authenticated, trusted gateway

Scope

ItemDetail
ProductGPUStack (open-source GPU-cluster manager)
Affected packagepip gpustack
Affected versionsBefore 2.2.0 (advisory and CVE record)
Fixed version2.2.0
Real-world harmAdvisory: exploitation in the wild observed against v2.1.1
What can happenAll administrator actions (changing users, models, workers), creating administrator API keys, reading worker and cloud-provider credentials, code execution on workers (per the advisory and KEV)
  • Per the advisory, default settings are affected.
  • The advisory lists only the pip package gpustack. If you installed it another way, such as a container image, check your provider's information for the version.

How to check whether you are affected

1

Check the GPUStack version

Check the installed gpustack version. Anything before 2.2.0 is affected. If you have production, staging and development environments, check each one (Asset inventory checklist).

2

Check whether it is reachable from outside

Check whether the GPUStack port, or the reverse proxy in front of it, is reachable from untrusted ranges such as the internet. Per the advisory, the flaw works through a same-host reverse proxy, so being behind a proxy is not evidence of safety.

3

Check the force_auth_localhost setting

Check whether force_auth_localhost is true. Per the advisory, the default is false, which leaves the vulnerable path open.

What to do today

1

Update to 2.2.0 (top priority)

Update gpustack to 2.2.0 or later. The KEV due date is 12 November 2026.

2

Until then, narrow the entrance

The advisory's workarounds are below. None replaces updating.

  • Set force_auth_localhost to true so loopback requests also need authentication.
  • Make sure the reverse proxy or gateway cannot make external traffic look like loopback, and strip any client-supplied X-GPUStack-Real-IP header at the edge.
  • Keep the API off untrusted networks, behind a VPN or edge authentication.
3

After updating, audit administrator API keys

Per the advisory, a created administrator API key works from any source address afterwards. Updating does not remove it, so list the existing API keys and delete any whose creator or creation time you do not recognise. Look especially at keys created before the update.

4

Revoke and reissue credentials

The advisory says worker credentials and cloud-provider secrets can be read. Revoke and reissue what you registered in GPUStack: worker connection details, cloud-provider keys, model-download tokens and similar. As this site's addition, reissue them even if you find no trace of abuse. See The vulnerability remediation playbook and Security basics: .env and API keys.

5

Review settings and workers

Check for unfamiliar custom backends, users and model settings. On workers, check for unfamiliar processes and outbound connections. Because exploitation has been confirmed, treat any unfamiliar configuration as a possible sign of compromise. If you find anything suspicious, isolate that worker and consider rebuilding it.

Exploitation status

  • The advisory states that exploitation in the wild was observed against a v2.1.1 deployment. The exploitation is credited to a third-party reporter.
  • CISA added it to KEV (the catalogue of vulnerabilities with confirmed exploitation; version 2026.11.09) on 9 November 2026, with a due date of 12 November. Use in ransomware campaigns is listed as unknown, and forensic triage as required.
  • The NVD record has the status Analyzed. CVSS v3.1 is 9.8, the same as the advisory and the CVE record.
  • The advisory credits several reporters who reported the vulnerability independently.

This site's view: do not leave things unauthenticated because they are internal or behind a proxy

This is less a coding slip than a flawed design assumption. "A request from my own machine is me" collapses the moment you put a reverse proxy in front. A reverse proxy on the same host is also a widely used way to add HTTPS and publish a service, so a setup that feels protected becomes the entrance.

An AI platform's admin console holds the model runtime, GPU resources and cloud credentials in one place. If it accepts unauthenticated requests, the damage does not stop at one machine; it spreads outward through the cloud credentials. Protect admin consoles and admin APIs with authentication, not with location or source address. The same class of problem appears when a design trusts forwarding headers (XFF spoofing and trusted proxies). After updating, the job is not finished until you have cleaned up the API keys that were created and the credentials that could have been read.

Sources

Last verified: 10 November 2026.

FAQ

QWhat is CVE-2026-102895?
A

A vulnerability in GPUStack, a manager that runs AI models on GPU clusters. According to the advisory, with default settings a request whose source looks like the same machine (loopback) is treated as the built-in administrator. Behind a same-host reverse proxy, external requests look that way too, so an unauthenticated party can perform administrator actions. The CVSS v3.1 score is 9.8.

QWhich versions are affected, and what is the fixed version?
A

The pip package gpustack before 2.2.0. The fixed version is 2.2.0; per the advisory, it removes the path that treats loopback sources as administrator and hardens client-IP and forwarding-header handling. The advisory lists only the pip package gpustack as affected. If you install it another way, such as a container image, check your provider's information for the version.

QIs it being exploited?
A

Yes. The advisory states that exploitation in the wild was observed against a v2.1.1 deployment. CISA added it to KEV on 9 November 2026 with a due date of 12 November. KEV lists use in ransomware campaigns as unknown.

QIs there a workaround if I cannot update yet?
A

The advisory lists three. Set force_auth_localhost to true so loopback requests also need authentication. Make sure the reverse proxy or gateway cannot make external traffic look like loopback, and strip any client-supplied X-GPUStack-Real-IP header at the edge. Keep the API off untrusted networks, behind a VPN or edge authentication. None of these replaces updating.

QIs updating enough?
A

No. The listed impact includes creating administrator API keys and reading worker and cloud-provider credentials. Per the advisory, a created API key works from any source address afterwards. Updating does not remove them, so audit API keys and revoke and reissue credentials.

QAm I safe behind a proxy?
A

No. The proxy setup itself is the trigger. According to the advisory, behind a same-host reverse proxy, external requests appear to come from loopback. Do not leave an admin console or admin API unauthenticated because it is internal or behind a proxy.