En bref

  • CVE-2026-102895 (CVSS 9.8) : contournement total d'authentification dans GPUStack avant 2.2.0 — tout attaquant distant accède à l'API avec les droits administrateur.
  • Systèmes affectés : toutes instances GPUStack 2.1.x et antérieures exposées sur un réseau, avec ou sans reverse proxy.
  • Action urgente : mettre à jour vers GPUStack 2.2.2 immédiatement et faire pivoter toutes les clés API et secrets cloud.

Les faits

GPUStack, plateforme open source de déploiement et de gestion de modèles d'inférence IA (Large Language Models, modèles de vision, modèles de diffusion), est affectée par une vulnérabilité critique d'authentification identifiée sous la référence CVE-2026-102895, avec un score CVSS 3.1 de 9.8 sur 10. La faille a été divulguée au cours de la première semaine de novembre 2026 et son exploitation active dans la nature a rapidement été confirmée par des chercheurs en sécurité, faisant de ce CVE l'une des menaces IA les plus pressantes du moment.

La vulnérabilité repose sur une logique d'autorisation défaillante héritée du paramètre force_auth_localhost. Dans les versions antérieures à 2.2.0, lorsque ce paramètre est désactivé — ce qui constitue la configuration par défaut — toute requête dont l'adresse source semble provenir de l'interface de bouclage (127.0.0.1) est automatiquement traitée par l'application comme émanant de l'administrateur intégré. Ce comportement, initialement conçu pour faciliter les accès locaux légitimes, ouvre une surface d'attaque critique dès lors que l'instance est accessible depuis un réseau.

Un attaquant distant peut exploiter cette logique de deux manières principales. La première consiste à passer par un reverse proxy hébergé sur le même hôte que GPUStack : dans ce cas, les requêtes atteignent l'application avec une adresse source locale, satisfaisant ainsi la condition de confiance implicite. La seconde, encore plus triviale, consiste à injecter l'en-tête HTTP X-GPUStack-Real-IP avec la valeur 127.0.0.1 : GPUStack honore cet en-tête sans vérification de l'origine réelle de la connexion, permettant à n'importe quel client distant de se faire passer pour un accès localhost. Les identifiants CWE associés sont CWE-287 (authentification incorrecte), CWE-290 (contournement par usurpation d'adresse) et CWE-346 (validation d'origine insuffisante).

L'impact de ce contournement est maximal. Une fois authentifié en tant qu'administrateur, l'attaquant peut créer des utilisateurs arbitraires, modifier les modèles en service, générer des clés API persistantes avec des droits permanents, accéder aux secrets des workers et des fournisseurs cloud configurés dans la plateforme (AWS, GCP, Azure, Alibaba Cloud), et surtout exécuter du code arbitraire via le point d'accès POST /v2/inference-backends/from-yaml. Ce dernier vecteur permet de charger un backend d'inférence malveillant sous forme de YAML, aboutissant à une exécution de commandes avec les privilèges du processus GPUStack sur le serveur hôte — compromission complète de la machine.

Une vulnérabilité complémentaire, CVE-2026-102894 (CVSS 9.1), a été divulguée simultanément. Elle concerne un contournement d'authentification par capture et rejeu dans le flux de rappel SAML (CWE-294) : un attaquant peut forger une réponse SAML valide pour usurper l'identité de n'importe quel compte, y compris les administrateurs, sans connaître leurs identifiants. Les deux failles combinées offrent de multiples chemins parallèles vers une compromission complète, même dans des configurations ayant activé une authentification SSO d'entreprise.

L'exploitation active de CVE-2026-102895 a été confirmée par le chercheur Javier Sixto du cabinet ulex.fr, qui a documenté des attaques ciblant des instances GPUStack en version 2.1.1 dans des environnements de production. Les indicateurs d'exploitation observés dans les journaux incluent des requêtes POST vers /v1/users et /v1/api-keys sans en-tête Authorization, ainsi que des appels vers /v2/inference-backends/from-yaml avec des payloads YAML malveillants. Un code d'exploitation (PoC) a été indexé sur la plateforme Sploitus peu après la divulgation publique. Au 5 novembre 2026, Ostorlab confirmait que CVE-2026-102895 n'avait pas encore été ajouté au catalogue KEV de la CISA, mais l'exploitation in-the-wild confirmée le rend éligible à très court terme.

GPUStack est notamment déployé dans des environnements d'IA privés et d'inférence on-premise, souvent connectés à des GPU coûteux (NVIDIA A100, H100, RTX 4090) et à des clés API de modèles de fondation (OpenAI, Anthropic, Mistral, Cohere). La compromission de ces plateformes représente un risque financier direct — utilisation frauduleuse des GPU pour du cryptomining ou de l'inférence non autorisée aux frais de la victime — et un risque de fuite des secrets d'accès aux fournisseurs cloud configurés dans GPUStack. Les modèles fine-tunés et les données d'entraînement propriétaires stockés sur ces serveurs sont également en danger.

Le correctif est disponible depuis la version 2.2.0, avec la version 2.2.2 recommandée car elle corrige simultanément CVE-2026-102895 et CVE-2026-102894. L'upgrade seul ne supprime pas les utilisateurs ou clés API créés frauduleusement pendant la fenêtre d'exploitation : un audit exhaustif des comptes et clés existants est impératif après mise à jour. Selon Ostorlab, les organisations doivent également revoir l'ensemble des workers et des configurations de fournisseurs cloud, car des modifications silencieuses peuvent avoir été effectuées par des attaquants avant la détection.

Impact et exposition

Toute instance GPUStack en version 2.1.x ou antérieure exposée sur un réseau — même interne — est vulnérable. L'exposition est particulièrement critique pour les déploiements accessibles depuis Internet sans WAF ou filtrage IP en amont. Les configurations utilisant un reverse proxy Nginx ou Caddy sur le même hôte constituent un vecteur d'exploitation direct, car les requêtes proxy arrivent avec une adresse source locale. Les environnements de démonstration partagés via des services de tunneling (ngrok, Cloudflare Tunnel) sont également à risque immédiat.

L'exploitation ne requiert aucune authentification préalable, aucun compte valide, ni aucune connaissance préalable de l'environnement cible. La simple connaissance de l'adresse IP ou du nom de domaine de l'instance suffit. Le délai de compromission après identification de la cible est estimé à quelques secondes pour un attaquant disposant du PoC public. La faille touche tous les modes de déploiement GPUStack sans exception : bare metal, Docker, Kubernetes, et toutes les distributions Linux, macOS et Windows (via WSL).

Les organisations utilisant GPUStack comme backend pour des applications d'IA internes, des pipelines RAG, des chatbots d'entreprise ou des plateformes LLMOps sont particulièrement exposées, car ces architectures impliquent souvent une ouverture réseau étendue et un accès à de nombreux secrets. L'existence de CVE-2026-102894 en parallèle signifie que même les instances ayant déployé une authentification SAML/SSO restent vulnérables via ce second vecteur.

Recommandations immédiates

  • Mettre à jour GPUStack vers la version 2.2.2 — GPUStack Security Advisory GHSA-GPUStack-2026-102895 (sans délai, exploitation active confirmée)
  • Si mise à jour impossible immédiatement : activer force_auth_localhost: true dans la configuration et isoler l'instance derrière un pare-feu strict
  • Supprimer ou bloquer l'en-tête X-GPUStack-Real-IP au niveau du reverse proxy (Nginx : proxy_set_header X-GPUStack-Real-IP "";)
  • Après mise à jour : auditer tous les comptes utilisateurs et clés API — supprimer tout compte ou clé non reconnu
  • Faire pivoter tous les secrets de fournisseurs cloud (AWS, GCP, Azure) et toutes les clés API de modèles (OpenAI, Anthropic, Mistral, etc.) configurés dans GPUStack
  • Chercher des requêtes suspectes dans les logs : POST vers /v1/users, /v1/api-keys, /v2/inference-backends/from-yaml sans en-tête Authorization valide
  • Appliquer le correctif pour CVE-2026-102894 (inclus dans 2.2.2) si l'authentification SAML est activée

⚠️ Urgence maximale

CVE-2026-102895 est activement exploité dans la nature avec un PoC public disponible. Des instances GPUStack exposées sur Internet ont déjà été compromises. Toute instance non mise à jour doit être considérée comme potentiellement compromise. Mettre à jour immédiatement vers la version 2.2.2 et faire pivoter tous les secrets.

Comment savoir si mon instance GPUStack est vulnérable ?

Vérifiez votre version via gpustack --version ou dans l'interface web (menu About). Toute version antérieure à 2.2.0 est vulnérable. Pour tester l'exposition : exécutez curl -s http://[IP-GPUSTACK]/v1/users depuis une machine externe sans fournir de token — si vous obtenez une réponse JSON avec une liste d'utilisateurs, l'instance est exposée.

Votre infrastructure IA est-elle exposée ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités sur les plateformes d'inférence IA, GPU et LLM.

Demander un audit