CVE-2026-102894 GPUStack: SAML callback trusts an unverified SAMLResponse, allowing authentication bypass and account takeover
CriticalCVSS 9.1
EPSS 0.26%
- Published
- Updated
- Exploit status
- No public exploit known
Description
GPUStack is an open-source GPU cluster manager for AI model serving and GPU instance provisioning. From 0.7.1 until 2.2.2, the /auth/saml/callback endpoint decoded SAML XML, used its NameID and attributes to resolve or provision a user, and minted a gpustack_session JWT without calling OneLogin_Saml2_Auth.process_response to verify the signature, issuer, audience, destination, or time conditions. Any network client could submit an identity for an existing user, including an administrator, or provision a new non-administrator account, even when SAML was not configured. Response and Assertion identifiers were not consumed, so captured signed responses could also be replayed. This issue is fixed in version 2.2.2.
Affected products
| Product | Affected versions | Fixed in |
|---|---|---|
| pypi gpustack(PyPI) | >= 0.7.1, < 2.2.2 | 2.2.2 |
| pypi gpustack(PyPI) | = 0.7.1 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.0 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.0rc1 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.0rc2 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.1 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.1rc2 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.2 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.2rc1 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.2rc2 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.3 | No fix listed |
| pypi gpustack(PyPI) | = 2.0.3rc1 | No fix listed |
| pypi gpustack(PyPI) | = 2.1.0 | No fix listed |
| pypi gpustack(PyPI) | = 2.1.0rc1 | No fix listed |
| pypi gpustack(PyPI) | = 2.1.0rc2 | No fix listed |
| pypi gpustack(PyPI) | = 2.1.1 | No fix listed |
| pypi gpustack(PyPI) | = 2.1.1rc1 | No fix listed |
| pypi gpustack(PyPI) | = 2.1.2 | No fix listed |
| pypi gpustack(PyPI) | = 2.1.2rc2 | No fix listed |
| pypi gpustack(PyPI) | = 2.2.0 | No fix listed |
| pypi gpustack(PyPI) | = 2.2.0rc1 | No fix listed |
| pypi gpustack(PyPI) | = 2.2.0rc2 | No fix listed |
| pypi gpustack(PyPI) | = 2.2.0rc3 | No fix listed |
| pypi gpustack(PyPI) | = 2.2.0rc4 | No fix listed |
| pypi gpustack(PyPI) | = 2.2.1 | No fix listed |
Show 3 more
| pypi gpustack(PyPI) | = 2.2.1rc1 | No fix listed |
| pypi gpustack(PyPI) | = 2.2.2rc1 | No fix listed |
| gpustack | = >= 0.7.1, < 2.2.2 | No fix listed |
References
- https://github.com/gpustack/gpustack/security/advisories/GHSA-62m9-f875-rqw6
- nvd.nist.gov vendor-advisory
- https://github.com/gpustack/gpustack/pull/5753
- https://github.com/gpustack/gpustack/pull/5923
- https://github.com/gpustack/gpustack/commit/705edbe1b5feec63959306daecd640e1c70eced2
- https://github.com/gpustack/gpustack/commit/adc6d82be34e48390720a1361df616e2ea9d6d45
- github.com product
- https://github.com/gpustack/gpustack/releases/tag/v2.2.2