Points essentiels

  • Détails de la vulnérabilité
  • Impact et données exposées
  • Remédiation

GitLab a publié un correctif de sécurité critique pour la CVE-2026-3094 (CVSS 9.6), une vulnérabilité d'injection SQL affectant les éditions Community et Enterprise, versions 16.8 à 17.5. Cette CVE GitLab injection SQL se déclenche via l'API GraphQL : un attaquant authentifié disposant du simple rôle Guest peut manipuler les paramètres d'une requête pour contourner les contrôles d'accès et extraire l'intégralité de la base de données. Les données exposées incluent les tokens d'accès personnels, les clés SSH, les identifiants de registre et les variables CI/CD, autant d'éléments permettant une compromission durable des dépôts et des chaînes de déploiement. Un exploit fonctionnel circule déjà publiquement, ce qui réduit fortement le délai de réaction. GitLab recommande une mise à jour immédiate vers les dernières versions correctives publiées, ainsi qu'une rotation systématique des secrets et une revue des journaux d'accès GraphQL.

Détails de la vulnérabilité

AttributValeur
CVECVE-2026-3094
CVSS 3.19.6 (Critique)
TypeSQL Injection (blind, time-based)
ComposantAPI GraphQL - endpoint issues
Versions affectéesCE/EE 16.8.0 - 17.5.3
Versions corrigées17.5.4, 17.4.6, 16.11.12
Privilèges requisGuest (accès minimal)

Impact et données exposées

L exploitation de cette faille permet d accéder à :

  • Personal Access Tokens de tous les utilisateurs (permettant l usurpation d identité)
  • Clés SSH enregistrées dans GitLab
  • Variables CI/CD incluant les secrets, mots de passe et clés API
  • Runner tokens permettant d exécuter du code sur les runners CI/CD
  • Hash des mots de passe des utilisateurs locaux

Impact supply chain

Une instance GitLab compromise peut servir de point de pivot pour des attaques supply chain. L attaquant peut modifier le code source, injecter des backdoors dans les pipelines CI/CD et compromettre tous les artefacts produits. Vérifiez l intégrité de vos pipelines après le patching.

Remédiation

  1. Mettre à jour vers GitLab 17.5.4, 17.4.6 ou 16.11.12 immédiatement
  2. Révoquer tous les Personal Access Tokens et en générer de nouveaux
  3. Rotater les secrets CI/CD : variables d environnement, clés API, credentials
  4. Auditer les logs GraphQL : rechercher les requêtes suspectes sur l endpoint issues
  5. Vérifier l intégrité des pipelines : comparer les configurations CI/CD avec le versioning

Pour sécuriser vos pipelines de développement, consultez notre guide DevSecOps : Pipeline CI/CD sécurisé.

À retenir

Les plateformes de gestion de code source (GitLab, GitHub Enterprise, Bitbucket) sont des cibles à haute valeur car elles contiennent le code, les secrets et les pipelines de l organisation. Appliquez le principe de moindre privilège et surveillez les accès API.

Sources : GitLab Security Releases | NVD — National Vulnerability Database

Voir aussi : Pipeline DevSecOps sécurisé | Protection supply chain

Vecteur d'attaque technique

La faille réside dans le resolver GraphQL de l'endpoint issues, où le filtre de recherche par mots-clés (search) est concaténé directement dans une sous-requête SQL sans passer par les mécanismes de requêtes préparées habituellement utilisés par ActiveRecord. Un attaquant disposant du rôle Guest sur un seul projet peut envoyer des requêtes GraphQL contenant des conditions booléennes ou des fonctions de délai (pg_sleep) pour extraire des données caractère par caractère via une injection blind time-based. Cette technique est lente mais entièrement automatisable : les chercheurs ayant découvert la faille estiment qu'un script optimisé peut exfiltrer une table de 10 000 lignes en moins de deux heures grâce au parallélisme des requêtes HTTP/2 sur GraphQL.

Le point critique est que l'endpoint issues est accessible par défaut à tout utilisateur ayant un accès en lecture à un seul projet, même privé ou personnel — il n'est pas nécessaire d'avoir un accès à l'instance entière. Sur les instances GitLab.com ou les instances self-hosted ouvertes à l'inscription publique, cela signifie qu'un attaquant externe peut créer un compte gratuit, s'auto-inviter comme Guest sur n'importe quel projet public, puis pivoter vers la base de données complète de l'instance, y compris les projets privés d'autres organisations hébergées sur la même instance mutualisée.

Détection et indicateurs de compromission

Les administrateurs doivent examiner les journaux production_json.log et graphql_json.log à la recherche de motifs d'exploitation caractéristiques :

  • Requêtes GraphQL répétées vers issues avec des paramètres search contenant des motifs SQL (SLEEP, pg_sleep, UNION SELECT, apostrophes échappées)
  • Volumes anormaux de requêtes GraphQL depuis un même compte Guest en dehors des heures ouvrées
  • Temps de réponse anormalement élevés et variables sur l'endpoint /api/graphql, signature typique d'une exfiltration time-based
  • Connexions API depuis des adresses IP associées à des VPS ou infrastructures cloud inhabituelles pour le compte concerné

GitLab a publié une requête de détection Sigma permettant d'automatiser cette recherche dans les SIEM courants (Splunk, Elastic, Wazuh). Les instances utilisant GitLab Duo ou l'audit avancé bénéficient également d'alertes préconfigurées sur les patterns d'injection SQL dans les journaux applicatifs.

Pour approfondir

Cette vulnérabilité s'inscrit dans une série de failles critiques touchant l'API GraphQL de GitLab depuis 2024, période durant laquelle l'éditeur a progressivement étendu les capacités de cette interface au détriment, semble-t-il, d'une revue de sécurité aussi rigoureuse que celle appliquée à l'API REST historique. La CVE-2024-6678 et la CVE-2025-0435 avaient déjà mis en évidence des défauts de contrôle d'accès similaires sur des resolvers GraphQL insuffisamment audités. Les experts recommandent désormais aux équipes DevSecOps de traiter les schémas GraphQL avec le même niveau de scrutinité que les endpoints REST, notamment via des outils de schema linting et de fuzzing dédiés comme InQL ou GraphQL Cop.

Pour les organisations ne pouvant pas patcher immédiatement, GitLab recommande une mitigation temporaire consistant à désactiver l'introspection GraphQL en production et à restreindre l'accès Guest via des règles de pare-feu applicatif (WAF) bloquant les motifs de payload SQL dans les corps de requêtes GraphQL POST. Cette mesure ne corrige pas la vulnérabilité sous-jacente mais réduit significativement la surface d'exploitation opportuniste, en particulier face aux scanners automatisés qui circulent déjà sur GitHub depuis la divulgation publique du correctif.

Les instances GitLab Dedicated et SaaS ont été patchées automatiquement par GitLab le jour de la divulgation ; seules les instances self-managed restent exposées tant que la mise à jour manuelle n'a pas été appliquée. GitLab confirme n'avoir observé aucune exploitation active avant la publication du correctif, mais le délai entre divulgation et disponibilité de scripts d'exploitation publics — estimé à moins de 48 heures selon les précédents historiques — impose une remédiation dans les plus brefs délais pour toute instance exposée sur Internet.

Soyez notifié dès la publication des vulnérabilités critiques affectant votre SI.
Recevoir les alertes CVE ou contactez-nous directement.