Vulnérabilités
GitLab CVE-2026-85706 : pourquoi une faille critique menace toute la chaîne CI/CD
Le 10 septembre 2026, GitLab a publié une livraison de correctifs critiques pour les éditions Community et Enterprise, en versions 19.3.2, 19.2.6 et 19.1.8. Dix-huit vulnérabilités y sont corrigées. Une seule a retenu l'attention générale : CVE-2026-85706, une traversée de répertoire dans l'API des commits, notée 10.0 sur l'échelle CVSS v3.1.
L'éditeur décrit un défaut de confinement de chemin combiné à une absence de contrôle d'authentification, permettant à un utilisateur non authentifié de lire des fichiers arbitraires sur un serveur GitLab affecté, sous certaines conditions. Le 11 septembre, la CISA a inscrit la vulnérabilité à son catalogue des vulnérabilités exploitées, et le CERT-FR a publié l'avis CERTFR-2026-AVI-1160.
Cette vulnérabilité ne donne pas l'exécution de code. Elle donne la lecture. Sur un serveur GitLab, c'est parfois pire : les fichiers de configuration et les secrets qui s'y trouvent commandent l'accès au code source, aux jetons d'API, aux variables des pipelines, aux exécuteurs et aux registres d'images. D'où la question centrale de cet article : une fois le correctif installé, que reste-t-il à faire ?

Faits, analyse et incertitudes
Faits confirmés
- GitLab a publié le 10 septembre 2026 les versions 19.3.2, 19.2.6 et 19.1.8 pour les éditions Community et Enterprise, dans une livraison qualifiée de critique.
- CVE-2026-85706 est décrite par l'éditeur comme une traversée de répertoire (CWE-22) dans l'API des commits d'un dépôt, notée 10.0 avec le vecteur CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N.
- GitLab indique qu'un défaut de confinement de chemin et une absence d'application de l'authentification peuvent permettre à un utilisateur non authentifié de lire des fichiers arbitraires sur un serveur affecté, sous certaines conditions.
- Les versions affectées sont les éditions CE et EE de 18.7 à 19.1.7, de 19.2 à 19.2.5 et de 19.3 à 19.3.1.
- La vulnérabilité a été signalée par le chercheur s3ntago via le programme HackerOne de GitLab.
- La CISA a inscrit CVE-2026-85706 à son catalogue des vulnérabilités exploitées (KEV) le 11 septembre 2026, sur la base de preuves d'exploitation.
- Le CERT-FR a publié le 11 septembre 2026 l'avis CERTFR-2026-AVI-1160, qui couvre les 18 CVE de cette livraison.
- La même livraison corrige notamment CVE-2026-87719 (désérialisation non sécurisée dans le sérialiseur d'abonnements GraphQL, CVSS 9.9, édition Enterprise) et CVE-2026-79708 (accès développeur à des variables CI/CD protégées via une politique d'exécution de pipeline, CVSS 8.5).
- GitLab indique que GitLab.com fonctionne déjà sur une version corrigée et que les clients GitLab Dedicated n'ont pas d'action à mener.
Notre analyse
- Le score de 10.0 s'explique moins par la primitive technique, une lecture de fichier, que par l'absence totale de prérequis : aucun compte, aucune interaction utilisateur, et un changement de portée (S:C) qui traduit le fait que l'impact déborde du composant vulnérable.
- Une lecture de fichier arbitraire sur un serveur d'intégration continue n'est pas un défaut de confidentialité ordinaire. C'est une clé d'accès à d'autres systèmes, puisque ce serveur stocke par construction les identifiants nécessaires aux déploiements.
- L'inscription au KEV le lendemain de la publication du correctif indique une fenêtre extrêmement courte entre correctif et exploitation. Pour les équipes, cela signifie que les cycles de patch mensuels ne sont pas adaptés à cette classe de vulnérabilité.
Ce qui reste incertain
- Les « certaines conditions » mentionnées par l'éditeur ne sont pas détaillées publiquement. Nous ne spéculons pas sur leur nature.
- Aucune source institutionnelle ne publie de nombre d'instances compromises ni de liste de victimes. Les estimations circulant par ailleurs ne reposent pas sur des données vérifiables.
- L'ampleur réelle de l'exploitation en France n'est pas documentée par le CERT-FR à la date de publication de cet article.
L'essentiel de la vulnérabilité
| Élément | Contenu publié |
|---|---|
| Identifiant | CVE-2026-85706 |
| Type | Traversée de répertoire (CWE-22) dans l'API des commits |
| CVSS v3.1 | 10.0 — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N |
| Authentification requise | Non |
| Interaction utilisateur | Non |
| Versions affectées | CE/EE 18.7 à 19.1.7, 19.2 à 19.2.5, 19.3 à 19.3.1 |
| Versions corrigées | 19.3.2, 19.2.6, 19.1.8 — publiées le 10 septembre 2026 |
| Exploitation | Confirmée : inscription au catalogue KEV de la CISA le 11 septembre 2026 |
| Instances gérées par l'éditeur | GitLab.com corrigé, GitLab Dedicated sans action requise |
| Avis français | CERTFR-2026-AVI-1160, publié le 11 septembre 2026 |
Ce qu'est une traversée de répertoire, et ce qu'elle vaut ici
Une traversée de répertoire survient lorsqu'une application construit un chemin de fichier à partir d'une donnée fournie par l'utilisateur sans vérifier que le chemin obtenu reste bien à l'intérieur du répertoire prévu. L'application croit servir un fichier d'un dépôt ; elle sert en réalité un fichier du système.
Prise isolément, cette classe de vulnérabilité est banale et généralement notée moyenne : elle expose des fichiers, sans donner de contrôle. Ce qui change tout ici, ce sont deux éléments cumulés. D'abord l'absence d'authentification : n'importe qui, depuis le réseau, peut formuler la requête. Ensuite la nature du serveur visé.
Ce que contient un serveur GitLab
- Le code source de l'organisation, y compris les dépôts privés et l'historique complet
- Les fichiers de configuration des pipelines, qui décrivent la façon dont les artefacts sont construits et déployés
- Des variables d'intégration continue, dont des identifiants de services tiers, des clés d'accès à des environnements cloud et des jetons de registre
- Des clés de déploiement et des jetons d'accès personnels ou de groupe
- L'état des exécuteurs (runners) et les jetons qui leur permettent de s'enregistrer
- Des registres de paquets et d'images de conteneurs
- Du code d'infrastructure, qui décrit l'infrastructure réelle et parfois les moyens d'y accéder
Rapid7 souligne que les fichiers exposés peuvent contenir des identifiants, des jetons, des clés de déploiement, de la configuration CI/CD ou des secrets de base de données susceptibles d'alimenter des attaques ultérieures. La vulnérabilité ne donne pas la main sur la machine : elle donne de quoi obtenir la main ailleurs.
Si mon GitLab a été vulnérable, dois-je seulement installer le correctif ?
Non, et c'est le point le plus important de ce dossier. Le correctif et l'investigation répondent à deux questions différentes. Le correctif répond à « est-ce que cela peut encore arriver ? ». L'investigation répond à « est-ce que cela est arrivé, et qu'est-ce qui est sorti ? ». Installer le premier sans conduire la seconde revient à fermer une porte sans savoir si quelqu'un est passé.
| Action | À quoi elle répond | Ce qu'elle ne fait pas |
|---|---|---|
| Correction | Supprimer la vulnérabilité en appliquant la version corrigée | Elle ne dit rien de la période d'exposition antérieure |
| Investigation | Rechercher dans les journaux les traces d'une exploitation réelle | Elle ne rétablit rien : elle documente |
| Rotation des secrets | Rendre inutilisable ce qui a pu être lu | Elle ne détecte pas ce qui a déjà été fait avec ces secrets |
| Revue des pipelines et des exécuteurs | Vérifier que rien n'a été ajouté ou modifié dans la chaîne de construction | Elle ne remplace pas la rotation des secrets |
Rechercher des traces d'exploitation
Les journaux d'accès HTTP du serveur, ceux du reverse proxy placé devant et ceux de l'application sont les seules sources qui permettent de répondre. La période à couvrir démarre non pas à la publication du correctif mais à la première version affectée réellement installée sur l'instance. Sur une instance restée en 19.1.x pendant plusieurs mois, cette période peut être longue.
Ce qu'il faut examiner
- Requêtes vers l'API des commits comportant des séquences de traversée de chemin, y compris encodées
- Requêtes non authentifiées aboutissant à des réponses de taille inhabituelle
- Adresses sources inconnues, en particulier des hébergeurs et des nœuds de sortie de VPN commerciaux
- Pics de requêtes automatisées dans les jours suivant le 10 septembre 2026
- Créations de jetons d'accès, de clés de déploiement ou de comptes dans la même période
- Modifications de fichiers de définition de pipelines non associées à une demande de fusion
- Enregistrements de nouveaux exécuteurs, en particulier des exécuteurs partagés
- Publications inattendues dans les registres de paquets et d'images
Faire tourner les secrets, dans le bon ordre
La rotation est l'opération qui rend sans valeur ce qui a pu être lu. Elle est désagréable parce qu'elle casse des automatismes : c'est le prix, et c'est aussi la seule mesure qui agit sur le passé. L'ordre compte, parce qu'une rotation partielle laisse à l'attaquant le moyen de récupérer ce qui a été régénéré.
- D'abord les jetons d'accès au serveur lui-même
Jetons personnels, jetons de groupe et de projet, jetons d'impersonation. Ce sont eux qui permettraient de reconstituer un accès après la mise à jour.
- Ensuite les secrets des pipelines
Variables d'intégration continue, clés d'accès aux environnements cloud, identifiants de registres, jetons de services tiers utilisés par les chaînes de construction.
- Puis les clés de déploiement et les clés SSH
Y compris celles enregistrées sur des serveurs cibles, qui survivent silencieusement à la rotation côté GitLab.
- Enfin les jetons d'enregistrement des exécuteurs
Un exécuteur est une machine qui exécute du code sur demande du serveur. Un exécuteur pirate est un point de persistance discret, et il se déclare lui-même légitime.
- Vérifier l'intégrité des artefacts publiés
Comparer les artefacts et les images produits pendant la période d'exposition avec ce que les définitions de pipelines auraient dû produire.
Réduire durablement le risque
Traiter GitLab comme un actif critique
Au même niveau qu'un contrôleur de domaine ou qu'un coffre-fort de secrets. Cela implique une fenêtre de mise à jour d'urgence documentée, et un décideur identifié capable de l'ouvrir en quelques heures.
Ne pas exposer l'interface sans nécessité
Une instance accessible depuis Internet est exploitable depuis Internet. Un accès restreint aux réseaux de l'organisation et à un VPN ne supprime pas la vulnérabilité, mais divise le nombre d'attaquants potentiels par plusieurs ordres de grandeur.
Réduire la valeur de ce qui est stocké
Des secrets à durée de vie courte, délivrés à la demande par un coffre-fort dédié plutôt que stockés en variables permanentes, rendent une lecture de fichiers beaucoup moins rentable.
Préparer la rotation avant d'en avoir besoin
Une rotation improvisée prend des jours et casse la production. Une procédure écrite, avec un inventaire des secrets et de leurs consommateurs, la ramène à quelques heures.
Isoler les exécuteurs
Un exécuteur partagé entre des projets de sensibilités différentes propage toute compromission. La séparation par environnement coûte des ressources et évite un effet domino.
Journaliser hors de l'instance
Les journaux HTTP et applicatifs doivent être centralisés ailleurs, avec une rétention suffisante pour couvrir une période d'exposition de plusieurs mois. C'est ce qui rend l'investigation possible.
Les métiers directement concernés par ce type d'incident :
- Sécurité applicative et développementSpécialiste en développement sécuriséIl réduit les vulnérabilités avant que les applications n’arrivent en production, en travaillant avec les développeurs plutôt qu’après eux.
- Ingénierie et intégration de la sécuritéIngénieur cybersécuritéIl conçoit, intègre et fait évoluer les solutions de sécurité d’une entreprise — le métier charnière entre l’exploitation et l’architecture.
- Réponse à incident et gestion de crise / Blue TeamAnalyste réponse à incidentQuand une attaque est avérée, c’est lui qui prend la main : comprendre ce qui s’est passé, arrêter l’attaquant et remettre l’entreprise debout.
- Détection et réponse à incident / Blue TeamAnalyste SOCIl surveille les systèmes d’information pour détecter les comportements suspects et les cyberattaques.
- Conception et architecture de la sécuritéArchitecte cybersécuritéIl conçoit les principes et les architectures qui permettent de construire un système d’information sécurisé, avant même que les projets ne démarrent.
Questions fréquentes
Qu'est-ce que CVE-2026-85706 ?
Une vulnérabilité de traversée de répertoire (CWE-22) dans l'API des commits de GitLab, notée 10.0 sur l'échelle CVSS v3.1. Un défaut de confinement de chemin et une absence de contrôle d'authentification permettent à un utilisateur non authentifié de lire des fichiers arbitraires sur le serveur, sous certaines conditions.
Quelles versions de GitLab sont concernées ?
Les éditions Community et Enterprise de 18.7 à 19.1.7, de 19.2 à 19.2.5 et de 19.3 à 19.3.1. Les versions corrigées sont 19.3.2, 19.2.6 et 19.1.8, publiées le 10 septembre 2026. GitLab.com et GitLab Dedicated sont exploités par l'éditeur et ne demandent pas d'action.
La vulnérabilité est-elle exploitée ?
Oui. La CISA l'a inscrite à son catalogue des vulnérabilités exploitées le 11 septembre 2026, soit le lendemain de la publication du correctif, sur la base de preuves d'exploitation.
Installer le correctif suffit-il ?
Non si l'instance a été exposée. Le correctif supprime la vulnérabilité mais ne révoque rien de ce qui a pu être lu auparavant. Il faut conduire une investigation sur la période d'exposition et faire tourner les secrets qui étaient présents sur le serveur.
Faut-il changer les jetons GitLab ?
Si l'instance a été accessible dans une version affectée, oui, dans l'ordre suivant : jetons d'accès au serveur, secrets des pipelines, clés de déploiement et clés SSH, puis jetons d'enregistrement des exécuteurs. Une rotation partielle laisse un moyen de récupérer ce qui a été régénéré.
Comment savoir si mon instance a été exploitée ?
En examinant les journaux d'accès HTTP du serveur et du reverse proxy sur toute la période pendant laquelle une version affectée a été en service, à la recherche de requêtes non authentifiées vers l'API des commits comportant des séquences de traversée de chemin. Sans journalisation centralisée et suffisamment longue, cette question reste sans réponse.
Sources
- GitLabGitLab Critical Patch Release: 19.3.2, 19.2.6, 19.1.8 — CVE-2026-85706, « Path Traversal in repository commits API », CVSS 10.0 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N), versions affectées CE/EE 18.7 à 19.1.7, 19.2 à 19.2.5 et 19.3 à 19.3.1Publié le 10 septembre 2026. La même livraison corrige 18 vulnérabilités, dont CVE-2026-87719 (désérialisation non sécurisée dans le sérialiseur d'abonnements GraphQL, CVSS 9.9, EE) et CVE-2026-79708 (accès développeur à des variables CI/CD protégées via une politique d'exécution de pipeline, CVSS 8.5, EE). Vulnérabilité signalée par s3ntago via HackerOne.
- CERT-FRCERTFR-2026-AVI-1160 — Multiples vulnérabilités dans GitLab : atteinte à la confidentialité des données, contournement de la politique de sécurité, déni de service à distance, exécution de code arbitraire à distance et injection de code indirecte à distance (XSS)Publié le 11 septembre 2026. Versions concernées : CE/EE antérieures à 19.1.8, 19.2.x antérieures à 19.2.6 et 19.3.x antérieures à 19.3.2.
- CISAKnown Exploited Vulnerabilities Catalog — catalogue des vulnérabilités dont l'exploitation est avérée, tenu par l'agence américaine de cybersécuritéL'inscription au catalogue vaut constat d'exploitation, pas mesure de son ampleur.
- Rapid7CVE-2026-85706: Critical GitLab Path Traversal Exploited in the Wild — analyse de la vulnérabilité, de la nature des fichiers exposés et de la fenêtre d'exploitationSource secondaire, utilisée en complément des publications de l'éditeur et du CERT-FR.
- CERT-FRCERT-FR — centre gouvernemental de veille, d'alerte et de réponse aux attaques informatiques
