{"id":"CVE-2026-102894","title":"GPUStack: SAML callback trusts an unverified SAMLResponse, allowing authentication bypass and account takeover","summary":"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, …","severity":"critical","cvss":9.1,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","cvssSource":"cna","cwe":["CWE-294","CWE-347"],"vendor":"gpustack","product":"gpustack","affected":["gpustack >= 0.7.1, < 2.2.2"],"ssvc":{"exploitation":"none","automatable":"yes","technicalImpact":"total","timestamp":"2026-11-05T00:00:00+00:00"},"published":"2026-11-04","updated":"2026-11-06","sourceUpdated":"2026-11-06T04:56:41.166Z","source":"CVEORG","sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-102894","references":[{"url":"https://github.com/gpustack/gpustack/security/advisories/GHSA-62m9-f875-rqw6","label":"https://github.com/gpustack/gpustack/security/advisories/GHSA-62m9-f875-rqw6"},{"url":"https://github.com/gpustack/gpustack/pull/5753","label":"https://github.com/gpustack/gpustack/pull/5753"},{"url":"https://github.com/gpustack/gpustack/pull/5923","label":"https://github.com/gpustack/gpustack/pull/5923"},{"url":"https://github.com/gpustack/gpustack/commit/705edbe1b5feec63959306daecd640e1c70eced2","label":"https://github.com/gpustack/gpustack/commit/705edbe1b5feec63959306daecd640e1c70eced2"},{"url":"https://github.com/gpustack/gpustack/commit/adc6d82be34e48390720a1361df616e2ea9d6d45","label":"https://github.com/gpustack/gpustack/commit/adc6d82be34e48390720a1361df616e2ea9d6d45"},{"url":"https://github.com/gpustack/gpustack/releases/tag/v2.2.2","label":"https://github.com/gpustack/gpustack/releases/tag/v2.2.2"}],"tags":["cve.org"],"epss":0.00259,"epssPercentile":0.17633,"ingestedAt":"2026-11-05T21:36:00.609Z","slug":"CVE-2026-102894","body":"## Overview\n\nGPUStack 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.\n\n## Affected\n\n- `gpustack >= 0.7.1, < 2.2.2`\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"midnight","depthScore":50,"depthScoreParts":{"impact":50.1,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}