CVE-2026-97229 a été publiée par NVD le 13 octobre 2026. La CISA l'a ajoutée à son catalogue KEV le 29 octobre, avec une échéance au 1er novembre : trois jours, le délai réservé aux urgences.
Le score donné par GitLab est le maximum, 10.0. Une expression régulière fabriquée pour l'occasion, placée dans une configuration CI/CD, peut mener à l'exécution de code arbitraire sur le serveur GitLab, et la description NVD précise que l'attaquant peut être non authentifié.
C'est le deuxième passage de GitLab au KEV en deux mois, après CVE-2026-85706 en septembre, elle aussi notée 10.0.
La vulnérabilité
| Champ | Valeur |
|---|---|
| CVE | CVE-2026-97229 |
| CVSS 3.1 (GitLab, CNA) | 10.0 (CRITICAL) — AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| Type | Dépassement d'entier (CWE-190) |
| Produits | GitLab Community Edition et Enterprise Edition |
| Publication NVD | 2026-10-13 |
| Statut NVD | Undergoing Analysis (pas encore de score NVD propre) |
| Ajout CISA KEV | 2026-10-29 |
| Échéance CISA | 2026-11-01 |
Description NVD (extrait) :
could have allowed an unauthenticated user to execute arbitrary code on the GitLab server via a specially crafted regular expression in a CI/CD configuration, due to insufficient regular expression validation.
Ce que fait la faille
La CI/CD de GitLab accepte des expressions régulières dans ses fichiers de configuration (règles de déclenchement, filtres sur les branches ou les variables). Ces expressions sont compilées côté serveur. CVE-2026-97229 est un dépassement d'entier dans ce traitement : une expression bien choisie fait déborder un calcul, et le débordement ouvre la voie à l'exécution de code.
La note de la CISA apporte une précision que NVD ne donne pas : le problème se situe dans le compilateur d'expressions régulières Ruby/Onigmo utilisé par la CI/CD, et d'autres produits peuvent être touchés par le même défaut sous-jacent. Elle renvoie à une annonce de ruby-lang.org du 23 octobre consacrée aux correctifs regexp liés à ces CVE GitLab. Si tu maintiens des applications Ruby qui compilent des expressions régulières fournies par des utilisateurs, cette annonce te concerne aussi.
Pourquoi un 10.0
Le vecteur cumule tous les facteurs aggravants :
PR:N: aucun compte requis selon la description ;S:C: l'impact dépasse le composant vulnérable. Un code exécuté sur le serveur GitLab touche le dépôt de code source, les secrets de CI/CD, les jetons de déploiement ;C:H/I:H/A:H: confidentialité, intégrité et disponibilité toutes en impact maximal.
La description NVD précise que l'exploitation se fait « sous certaines conditions », sans les détailler. L'advisory GitLab et le ticket de suivi cités en référence sont la source pour savoir si ta configuration est concernée. En attendant, considère qu'elle l'est.
Ce qu'un serveur GitLab compromis donne à un attaquant
Un serveur GitLab est rarement un serveur comme les autres :
- le code source de tous les projets hébergés, avec la possibilité de le modifier ;
- les variables de CI/CD : clés cloud, identifiants de registres, jetons de déploiement ;
- un accès indirect aux runners et, par eux, aux environnements où ils déploient.
C'est un point d'entrée vers la chaîne d'approvisionnement logicielle de l'entreprise, pas seulement vers une machine.
Versions affectées
| Branche | Versions affectées (NVD) | Première version hors plage |
|---|---|---|
| 19.2 | 19.2.0 → 19.2.7 | 19.2.8 |
| 19.3 | 19.3.0 → 19.3.4 | 19.3.5 |
| 19.4 | 19.4.0 → 19.4.1 | 19.4.2 |
Les deux éditions, Community (CE) et Enterprise (EE), sont concernées avec les mêmes bornes.
⚠️ Ces numéros sont les bornes issues de NVD. GitLab publie régulièrement des patch releases : installe la dernière version de ta branche, pas forcément celle du tableau. La description NVD ne cite que les branches 19.2 à 19.4 ; pour une branche plus ancienne, la réponse est une migration vers une branche maintenue, et l'advisory GitLab (« patch release 19.4.2 ») fait foi.
Vérifier ta version :
sudo gitlab-rake gitlab:env:info
ou, depuis l'interface, Admin > Tableau de bord.
Détection
- Fichiers
.gitlab-ci.ymlmodifiés récemment avec des expressions régulières inhabituellement longues ou complexes, en particulier dans des projets publics ou des forks - Pipelines déclenchés par des comptes inconnus ou depuis des projets que personne ne suit
- Processus enfants inattendus lancés par les processus Ruby de GitLab (Puma, Sidekiq) sur le serveur
- Connexions sortantes initiées par le serveur GitLab vers des destinations inconnues
- Lecture ou modification de variables CI/CD et de jetons d'accès sans ticket correspondant
L'entrée KEV renvoie aux exigences de triage forensique de la directive BOD 26-04 : une mise à jour seule ne suffit pas si l'instance était exposée.
Mitigation
1. Mettre à jour
19.2.8, 19.3.5, 19.4.2 au minimum, ou plus récent. L'échéance CISA est le 1er novembre.
2. Si la mise à jour doit attendre quelques heures
- Retirer l'instance d'Internet ou la placer derrière un VPN
- Désactiver l'inscription libre et revoir qui peut créer des projets et lancer des pipelines
- Surveiller les modifications de configuration CI/CD
Ce ne sont que des mesures d'attente : elles réduisent l'exposition, elles ne corrigent rien.
3. Si l'instance était exposée avant le correctif
- Faire tourner les variables CI/CD sensibles, les jetons d'accès personnels et de déploiement, les clés des runners
- Contrôler les commits récents sur les branches protégées
- Vérifier les comptes administrateurs et les clés SSH ajoutées récemment
- Examiner les journaux applicatifs (
/var/log/gitlab/) sur la période entre le 13 octobre et la mise à jour
Pourquoi surveiller en continu ton instance GitLab
Seize jours séparent la publication de CVE-2026-97229 de son entrée au KEV. Une équipe qui suit les avis GitLab l'a vue passer le 13 octobre ; une équipe qui attend le prochain cycle de patch découvre l'urgence avec trois jours de délai.
Avec cveo.tech, enregistre la version exacte de ton GitLab et reçois une alerte dès qu'une CVE qui la concerne est publiée ou entre au catalogue CISA KEV.