{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-102894", "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "state": "PUBLISHED", "assignerShortName": "GitHub_M", "dateReserved": "2026-09-29T17:34:42.743Z", "datePublished": "2026-11-04T21:18:29.009Z", "dateUpdated": "2026-11-04T21:18:29.009Z" }, "containers": { "cna": { "title": "GPUStack: SAML callback trusts an unverified SAMLResponse, allowing authentication bypass and account takeover", "problemTypes": [ { "descriptions": [ { "cweId": "CWE-294", "lang": "en", "description": "CWE-294: Authentication Bypass by Capture-replay", "type": "CWE" } ] }, { "descriptions": [ { "cweId": "CWE-347", "lang": "en", "description": "CWE-347: Improper Verification of Cryptographic Signature", "type": "CWE" } ] } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "LOW", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 9.1, "baseSeverity": "CRITICAL", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "privilegesRequired": "NONE", "scope": "UNCHANGED", "userInteraction": "NONE", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N", "version": "3.1" } } ], "references": [ { "name": "https://github.com/gpustack/gpustack/security/advisories/GHSA-62m9-f875-rqw6", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/gpustack/gpustack/security/advisories/GHSA-62m9-f875-rqw6" }, { "name": "https://github.com/gpustack/gpustack/pull/5753", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/gpustack/gpustack/pull/5753" }, { "name": "https://github.com/gpustack/gpustack/pull/5923", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/gpustack/gpustack/pull/5923" }, { "name": "https://github.com/gpustack/gpustack/commit/705edbe1b5feec63959306daecd640e1c70eced2", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/gpustack/gpustack/commit/705edbe1b5feec63959306daecd640e1c70eced2" }, { "name": "https://github.com/gpustack/gpustack/commit/adc6d82be34e48390720a1361df616e2ea9d6d45", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/gpustack/gpustack/commit/adc6d82be34e48390720a1361df616e2ea9d6d45" }, { "name": "https://github.com/gpustack/gpustack/releases/tag/v2.2.2", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/gpustack/gpustack/releases/tag/v2.2.2" } ], "affected": [ { "vendor": "gpustack", "product": "gpustack", "versions": [ { "version": ">= 0.7.1, < 2.2.2", "status": "affected" } ] } ], "providerMetadata": { "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M", "dateUpdated": "2026-11-04T21:18:29.009Z" }, "descriptions": [ { "lang": "en", "value": "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." } ], "source": { "advisory": "GHSA-62m9-f875-rqw6", "discovery": "UNKNOWN" } } } }