Vulnérabilités

GitLab CVE-2026-85706 : pourquoi une faille critique menace toute la chaîne CI/CD

  • Publié le
  • 14 min de lecture
  • 5 sources citées

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 ?

Développeuse au travail devant un écran affichant les étapes d'un pipeline GitLab

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é

CVE-2026-85706 en un tableau
ÉlémentContenu publié
IdentifiantCVE-2026-85706
TypeTraversée de répertoire (CWE-22) dans l'API des commits
CVSS v3.110.0 — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
Authentification requiseNon
Interaction utilisateurNon
Versions affectéesCE/EE 18.7 à 19.1.7, 19.2 à 19.2.5, 19.3 à 19.3.1
Versions corrigées19.3.2, 19.2.6, 19.1.8 — publiées le 10 septembre 2026
ExploitationConfirmée : inscription au catalogue KEV de la CISA le 11 septembre 2026
Instances gérées par l'éditeurGitLab.com corrigé, GitLab Dedicated sans action requise
Avis françaisCERTFR-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é.

Quatre actions distinctes, souvent confondues
ActionÀ quoi elle répondCe qu'elle ne fait pas
CorrectionSupprimer la vulnérabilité en appliquant la version corrigéeElle ne dit rien de la période d'exposition antérieure
InvestigationRechercher dans les journaux les traces d'une exploitation réelleElle ne rétablit rien : elle documente
Rotation des secretsRendre inutilisable ce qui a pu être luElle ne détecte pas ce qui a déjà été fait avec ces secrets
Revue des pipelines et des exécuteursVérifier que rien n'a été ajouté ou modifié dans la chaîne de constructionElle 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é.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

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