En bref

  • CVE-2026-85706 : path traversal CVSS 10.0 dans l'API commits de GitLab CE/EE — lecture arbitraire de fichiers sans authentification via une seule requête HTTP POST
  • Versions affectées : GitLab CE/EE 18.7 à 19.3.1 inclus (toutes éditions avant 19.3.2, 19.2.6 et 19.1.8)
  • Action urgente : mettre à jour immédiatement vers GitLab 19.3.2, 19.2.6 ou 19.1.8 — exploitation active confirmée, vulnérabilité ajoutée au catalogue KEV CISA

Les faits

CVE-2026-85706 est une vulnérabilité de traversée de chemin (path traversal) de sévérité maximale affectant les éditions Community et Enterprise de GitLab auto-hébergées (self-managed). Le score CVSS 3.1 a été fixé à 10.0 (Critique), avec le vecteur CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N, reflétant une exploitation réseau sans authentification, sans interaction utilisateur et sans complexité d'attaque particulière. Ce score maximal traduit l'absence totale de barrière entre un attaquant distant et les fichiers hébergés sur le serveur GitLab.

La faille réside dans l'endpoint de l'API repository commits : /api/v4/projects/{id}/repository/commits/. Sous certaines conditions de configuration, une instance GitLab ne confinait pas correctement les chemins de fichiers transmis dans le paramètre file.path du corps de la requête. Un attaquant non authentifié peut envoyer une unique requête HTTP POST malveillante contenant une séquence de traversée de répertoire pour lire n'importe quel fichier accessible par le processus GitLab sur le serveur hôte, qu'il s'agisse de fichiers de configuration, de clés privées ou de données applicatives.

GitLab a publié les versions corrigées 19.3.2, 19.2.6 et 19.1.8 le 10 septembre 2026. L'annonce a déclenché une vague immédiate de reconnaissance et d'exploitation active : selon les rapports de Security Affairs et du CISA, des attaques in-the-wild ont été confirmées en moins de 24 heures suivant la divulgation publique. Le CISA a ajouté CVE-2026-85706 à son catalogue KEV (Known Exploited Vulnerabilities) avec une directive d'application de correctif sous un délai réduit pour les agences fédérales américaines.

Les versions affectées couvrent un large spectre : toutes les instances GitLab CE et EE depuis la version 18.7 jusqu'aux builds non corrigées des branches 19.1.x (avant 19.1.8), 19.2.x (avant 19.2.6) et 19.3.x (avant 19.3.2). Les instances GitLab.com (SaaS géré par GitLab) ont reçu le patch automatiquement et ne sont pas concernées. Seules les installations auto-hébergées sont exposées.

Du point de vue technique, la root cause est une défaillance dans le confinement des chemins (path confinement) combinée à une absence de contrôle d'authentification sur certaines branches de code de l'endpoint commits. La CWE associée est CWE-22 (Improper Limitation of a Pathname to a Restricted Directory). Les équipes de recherche de Horizon3.ai et watchTowr ont analysé la vulnérabilité et décrit qu'une seule requête suffit à exfiltrer des fichiers sensibles comme les clés privées SSH, les tokens d'API, les fichiers de configuration gitlab.rb, les secrets Rails, les variables d'environnement CI/CD, ou encore les dépôts de code source hébergés.

Un proof-of-concept public a circulé très rapidement après la divulgation, ce qui explique en grande partie la vitesse d'exploitation observée. Les logs applicatifs constituent le principal indicateur d'une tentative : GitLab recommande d'inspecter les requêtes POST vers l'endpoint /api/v4/projects/[id]/repository/commits/ contenant des paramètres file.path suspects. Une exploitation réussie ne laisse aucune trace visible dans les données applicatives, rendant la détection post-exploitation difficile sans analyse proactive des logs.

Le périmètre d'impact est particulièrement étendu dans les environnements DevSecOps modernes : des milliers d'instances GitLab auto-hébergées exposent des secrets d'application, des pipelines CI/CD, des credentials cloud (AWS, Azure, GCP), des clés de signature, des certificats et des dépôts de code source propriétaire. Selon les rapports de Rapid7 et The Hacker News, cette vulnérabilité représente l'une des menaces les plus graves pour l'écosystème DevOps depuis plusieurs mois, d'autant que de nombreuses instances GitLab sont directement exposées sur Internet en entreprise sans protection additionnelle.

La rapidité de l'exploitation et la facilité technique (une seule requête HTTP sans credential) placent CVE-2026-85706 dans la catégorie des vulnérabilités à traiter en priorité absolue. L'accès aux secrets stockés sur le serveur peut rapidement conduire à une compromission totale de l'infrastructure cible, car les tokens CI/CD et clés SSH permettent généralement d'accéder aux environnements de production.

Impact et exposition

Toute organisation hébergeant une instance GitLab auto-gérée sur les versions affectées est directement exposée, qu'elle soit accessible depuis Internet ou uniquement en réseau interne. La surface d'attaque est particulièrement critique dans les environnements où GitLab centralise les secrets d'infrastructure : variables d'environnement des pipelines CI/CD, tokens d'accès aux registres d'images Docker, clés SSH d'accès aux serveurs de production, credentials de base de données ou tokens API tiers (Slack, JIRA, SonarQube, HashiCorp Vault).

L'exploitation ne requiert aucune authentification préalable, aucun compte GitLab, aucune connaissance du projet ou du repository. Il suffit de connaître ou deviner un identifiant de projet numérique, information facilement obtenue par énumération sur les instances publiques. Sur les instances privées, l'attaquant doit pouvoir atteindre le service réseau GitLab, ce qui reste possible dans de nombreux scénarios de mouvement latéral au sein d'un réseau d'entreprise compromis.

L'exploitation active confirmée par le CISA signifie que des acteurs malveillants ciblent activement les instances vulnérables à grande échelle avec des outils automatisés. Les honeypots de sécurité ont enregistré des tentatives de scan automatisé dès les premières heures suivant la divulgation, selon les analyses de SC Media. Le risque de compromission totale d'une infrastructure DevOps est élevé si des secrets critiques sont stockés dans les fichiers accessibles par le processus GitLab.

Les instances GitLab utilisées dans des contextes gouvernementaux, de défense, de recherche ou d'infrastructures critiques sont particulièrement visées par des acteurs étatiques cherchant à accéder à du code source sensible, des plans d'architecture ou des clés cryptographiques. La directive KEV CISA reflète cette priorité de traitement urgente.

Recommandations immédiates

  • Mettre à jour GitLab CE/EE vers la version 19.3.2, 19.2.6 ou 19.1.8 selon votre branche — GitLab Security Advisory CVE-2026-85706
  • Si la mise à jour immédiate est impossible : bloquer au niveau du WAF ou du reverse proxy toute requête POST vers /api/v4/projects/*/repository/commits/ contenant des séquences ../ encodées ou en clair dans le corps de requête
  • Auditer les logs Nginx et applicatifs GitLab pour les 10 derniers jours à la recherche de requêtes POST suspectes vers l'endpoint commits avec des paramètres file.path anormaux
  • Effectuer une rotation immédiate de tous les secrets potentiellement exposés : tokens CI/CD, clés SSH, tokens API, mots de passe de base de données, certificats et variables d'environnement
  • Vérifier si l'instance est exposée sur Internet et envisager une restriction au réseau interne via VPN ou liste blanche IP en attendant le patch
  • Indicateurs de compromission (IOC) : requêtes POST vers /api/v4/projects/[id]/repository/commits/ contenant des paramètres file.path avec des séquences ../, %2e%2e%2f ou ..%2f

⚠️ Urgence maximale

CVE-2026-85706 est activement exploitée in-the-wild avec CVSS 10.0, ajoutée au catalogue KEV CISA. Toute instance GitLab auto-hébergée non patchée doit être considérée comme potentiellement compromise. Appliquer le patch immédiatement ou isoler l'instance du réseau sans délai.

Comment savoir si je suis vulnérable ?

Vérifiez votre version GitLab dans Admin Area → Help ou via la commande sudo gitlab-rake gitlab:env:info. Si votre version est antérieure à 19.3.2, 19.2.6 ou 19.1.8 et que vous êtes sur les branches 18.7–19.3, vous êtes vulnérable. Pour les instances Docker : docker exec gitlab cat /opt/gitlab/version-manifest.txt | grep gitlab-ce. Pour détecter une tentative d'exploitation, analysez vos logs : grep -E "POST.*commits.*file" /var/log/gitlab/nginx/gitlab_access.log

Votre infrastructure GitLab est-elle exposée ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités DevSecOps.

Demander un audit