En bref

  • CVE-2026-97229 — RCE sans authentification CVSS 10.0 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) dans GitLab CE/EE, integer overflow dans le compilateur de regex du pipeline CI/CD
  • Versions affectées : GitLab CE/EE 18.1 jusqu'à 19.4.1 (instances auto-hébergées) — GitLab.com et les instances Dedicated sont déjà corrigées
  • Action urgente : mettre à jour vers GitLab 19.4.2, 19.3.4 ou 19.2.8 — patches critiques publiés le 12 octobre 2026 — aucune mitigation temporaire satisfaisante disponible sans mise à jour

Les faits

Le 12 octobre 2026, GitLab a publié des releases de sécurité critiques (GitLab Security Release 19.4.2, 19.3.4 et 19.2.8) corrigeant CVE-2026-97229, une vulnérabilité de type integer overflow dans le compilateur d'expressions régulières (regex) du moteur de pipeline CI/CD. Avec un score CVSS v3.1 de 10.0 — le maximum absolu — et un vecteur d'attaque entièrement réseau, sans privilèges requis ni interaction utilisateur, et avec un scope modifié, cette vulnérabilité représente la criticité théorique maximale pour un bug logiciel. Elle permet à n'importe quel utilisateur non authentifié d'exécuter du code arbitraire sur un serveur GitLab auto-hébergé en soumettant simplement un fichier de configuration CI/CD contenant une regex spécialement forgée.

La vulnérabilité a été découverte et rapportée à GitLab par le chercheur en sécurité joaxcar via le programme de bug bounty HackerOne de GitLab. La découverte a été réalisée dans le cadre d'une analyse approfondie du moteur de traitement des fichiers .gitlab-ci.yml, et plus spécifiquement du composant chargé de valider et compiler les expressions régulières utilisées dans les règles de déclenchement des pipelines (clauses if des sections rules, only et except).

Sur le plan technique, CVE-2026-97229 exploite un integer overflow (dépassement d'entier) dans la bibliothèque de compilation regex intégrée à GitLab. Lorsqu'un fichier .gitlab-ci.yml contient une expression régulière d'une complexité ou d'une longueur particulière, le calcul de la taille du buffer nécessaire à la compilation de cette regex produit un entier qui dépasse la valeur maximale représentable par le type entier utilisé (typiquement 2^31 - 1 pour un entier signé 32 bits), ce qui provoque un retour à une valeur proche de zéro ou négative. Ce buffer sous-dimensionné est ensuite alloué, et les données de compilation de la regex dépassent les limites du buffer, créant une situation d'écriture hors limites (out-of-bounds write) qui peut être exploitée pour rediriger le flux d'exécution vers du code contrôlé par l'attaquant.

Ce qui rend CVE-2026-97229 particulièrement dangereuse est l'architecture de traitement des fichiers CI/CD de GitLab. Lors de la création ou de la mise à jour d'une merge request, ou lors d'un push, GitLab analyse et valide le fichier .gitlab-ci.yml du projet concerné. Ce traitement se produit côté serveur, au niveau du processus GitLab principal (Puma/Sidekiq), sans nécessiter d'authentification pour les dépôts publics. Même pour les dépôts privés, un attaquant disposant d'un compte non privilégié de niveau Guest, voire d'un compte créé via une inscription publique si elle est activée, peut déclencher le parsing du fichier CI/CD vulnérable.

L'impact du scope modifié (S:C dans le vecteur CVSS) reflète le fait qu'un attaquant réussissant à exploiter cette vulnérabilité obtient non seulement le contrôle du processus GitLab vulnérable, mais peut potentiellement accéder à l'ensemble des ressources du système hôte, y compris les secrets des pipelines CI/CD d'autres projets, les tokens d'accès stockés, les clés SSH des dépôts, les configurations de déploiement vers des environnements de production, et tout autre credential transitant par le système GitLab. Dans les organisations utilisant GitLab comme hub central de leur chaîne DevSecOps, la compromission du serveur équivaut potentiellement à la compromission de l'ensemble de la chaîne de livraison logicielle.

Les versions affectées couvrent GitLab CE (Community Edition) et EE (Enterprise Edition) de la version 18.1 jusqu'à 19.4.1 inclus. GitLab.com (l'instance cloud gérée par GitLab Inc.) et les instances GitLab Dedicated ont été mises à jour avant la publication de l'advisory et ne sont pas exposées. Seules les instances auto-hébergées sont concernées, ce qui représente un parc significatif d'entreprises préférant le contrôle de leurs données. Selon les statistiques de déploiement, des centaines de milliers d'instances GitLab auto-hébergées existent dans le monde, dont une proportion exposée directement sur Internet.

La nature de la correction apportée dans les versions 19.4.2, 19.3.4 et 19.2.8 consiste à remplacer le type entier utilisé pour le calcul de la taille du buffer de compilation regex par un type de plus grande capacité (entier 64 bits), et à ajouter une vérification explicite de la valeur calculée avant l'allocation mémoire. Des limites de taille maximale sur les expressions régulières acceptées dans les fichiers CI/CD ont également été introduites comme défense en profondeur.

GitLab n'avait pas connaissance d'exploitation active de CVE-2026-97229 au moment de la publication du patch, ce qui constitue une fenêtre d'opportunité critique pour les administrateurs d'instances auto-hébergées. Historiquement, les vulnérabilités critiques GitLab avec un score CVSS proche de 10 font l'objet d'une exploitation active dans les 24 à 72 heures suivant la publication d'un correctif, une fois que les acteurs malveillants ont pu analyser les diffs et développer des exploits opérationnels. La mise à jour doit donc être appliquée en urgence, sans attendre les fenêtres de maintenance planifiées habituelles.

Impact et exposition

CVE-2026-97229 représente un risque critique pour toutes les organisations hébergeant leur infrastructure GitLab on-premise. La criticité est amplifiée par le rôle central que joue GitLab dans les architectures DevSecOps modernes : un serveur GitLab compromis n'est pas seulement un dépôt de code, c'est une clé maîtresse donnant accès aux secrets de déploiement, aux environnements de production, aux pipelines d'intégration continue, et à la totalité du code source de l'organisation.

Les instances GitLab configurées avec l'inscription publique activée présentent le niveau de risque le plus élevé, car elles permettent à un attaquant anonyme de déclencher le parsing du fichier CI/CD vulnérable sans obstacle. Les instances avec inscription restreinte nécessitent qu'un attaquant dispose d'au moins un compte de niveau Guest, ce qui reste un prérequis très facilement contournable. Seules les instances avec inscription totalement désactivée limitent marginalement le vecteur d'attaque initial.

Dans le cadre de chaînes de supply chain software, un attaquant compromettant GitLab peut insérer du code malveillant dans les dépôts, modifier les pipelines CI/CD pour exfiltrer des artifacts, ou signer des builds avec les clés légitimes de l'organisation, rendant la compromission difficile à détecter et pouvant affecter l'ensemble des clients ou utilisateurs du logiciel produit.

Recommandations immédiates

  • Mettre à jour immédiatement vers GitLab 19.4.2, 19.3.4 ou 19.2.8 selon votre branche installée — GitLab Security Release du 12 octobre 2026
  • Si la mise à jour ne peut être appliquée immédiatement : restreindre temporairement l'accès à l'interface GitLab depuis Internet (pare-feu, VPN obligatoire)
  • Désactiver l'inscription publique (Settings → Sign-up restrictions → Sign-up enabled = false) pour réduire la capacité des attaquants anonymes à déclencher le parsing CI/CD
  • Auditer les logs GitLab (gitlab-rails/production.log) pour détecter des créations de merge requests avec des fichiers .gitlab-ci.yml contenant des expressions régulières inhabituellement longues ou complexes
  • Après mise à jour, effectuer une rotation de l'ensemble des secrets CI/CD, tokens d'accès et clés SSH stockés dans GitLab par mesure de précaution
  • Vérifier l'intégrité des pipelines CI/CD et des artifacts produits récemment pour détecter toute modification non autorisée

⚠️ Urgence maximale — CVSS 10.0, exploitation imminente attendue

CVE-2026-97229 atteint le score CVSS maximal de 10.0. Bien qu'aucune exploitation active n'ait été confirmée au moment de la publication du patch, les vulnérabilités critiques GitLab font historiquement l'objet d'exploitation dans les 24 à 72 heures. Mettez à jour maintenant, sans attendre la prochaine fenêtre de maintenance planifiée.

Comment savoir si je suis vulnérable ?

Vérifiez votre version GitLab avec la commande sudo gitlab-rake gitlab:env:info | grep "GitLab version" ou depuis l'interface Admin Area → Dashboard. Si votre version est comprise entre 18.1.0 et 19.4.1 inclus, vous êtes vulnérable. Pour les déploiements Docker : docker exec -it gitlab gitlab-rails runner "puts Gitlab::VERSION". Vérifiez également si l'inscription publique est activée dans Admin Area → Settings → General → Sign-up restrictions.

Votre infrastructure GitLab est-elle sécurisée ?

Ayi NEDJIMI réalise des audits de sécurité de vos instances GitLab et de vos chaînes CI/CD pour identifier les risques de compromission.

Demander un audit