veilletech.fr
24 sept. Feed du jour
#03 SÉCURITÉ Faille

GitLab : l'adresse des tickets pousse sur main

Une adresse qui ouvre des tickets peut aussi fusionner du code. Traitez-la comme un mot de passe.

L'adresse que GitLab fournit pour ouvrir un ticket par courriel contient un jeton sans expiration, commun à tous les projets d'un compte. Aikido Security montre qu'en changeant son suffixe, n'importe qui peut faire appliquer un patch sur une branche, main comprise, en votre nom, et lancer la CI avec vos droits, sans passer par l'allowlist IP ni la double authentification.

3 min de lectureintermédiairevidéo 1:16
Partager
Sommaire6 sections
  1. Ce qui se passe
  2. Du ticket au commit
  3. Ce qui limite les dégâts
  4. Ce qu'il faut faire
  5. Où en est GitLab
  6. À retenir

Ce qui se passe

Chaque projet GitLab propose, derrière le bouton « Email work item to this project », une adresse personnelle qui crée un ticket à votre nom. La chaîne au milieu de cette adresse est un jeton lié à votre compte, l'incoming email token, que la documentation décrit comme sans expiration.

Aikido Security a établi trois choses :

Du ticket au commit

GitLab sait aussi créer une merge request par courriel. Il suffit de remplacer le suffixe -issue de l'adresse par -merge-request, de mettre le nom de la branche cible en objet et de joindre un patch. GitLab applique le patch sur cette branche (il la crée au besoin), avec vous comme auteur. Si vous pouvez pousser sur main, le commit y arrive. Si le patch touche .gitlab-ci.yml et que votre rôle le permet, le job de l'attaquant tourne avec vos droits.

Le test d'Aikido montre surtout les contrôles que ce chemin contourne :

Branche mainGitLabAttaquantBranche mainGitLabAttaquantNi IP, ni 2FA, niexpéditeurJob lancé avecvos droitsgit clone hors allowlist1Refusé2Courriel et patch3Commit à votre nom4Déclenche la CI5
Le clone est refusé, le courriel passe : les contrôles qui ne s'appliquent pas

La documentation de GitLab le confirme : le courriel entrant échappe aux restrictions d'adresse IP et fonctionne sans 2FA, même sur une instance qui l'impose.

Ce qui limite les dégâts

Sont concernés tous les comptes GitLab.com et les instances auto-hébergées où le courriel entrant est activé. GitLab Dedicated semble épargné, sans avoir pu être testé.

Ce qu'il faut faire

  1. Réinitialiser le jeton depuis la page des jetons d'accès personnels de votre profil. Toutes vos adresses de projet changent d'un coup : celles que vous utilisez réellement cessent de fonctionner jusqu'à redistribution.

  2. Chercher les adresses publiées dans vos README, guides de contribution et pages de support. Aikido en a trouvé une douzaine, actives, souvent postées exprès pour recevoir des rapports de bugs, dont quelques-unes dans des projets open source répandus.

    Terminal
    grep -rnE -- '-(issue|merge-request)@' --include='*.md' .
  3. Sur une instance auto-hébergée, désactiver le courriel entrant à l'échelle de l'instance si personne ne s'en sert. Aucun réglage ne permet à un utilisateur de le couper pour lui seul.

Où en est GitLab

Signalé via HackerOne en mai 2026, le comportement a été classé « intended behavior », puis remonté en ticket confidentiel en juin. Pour GitLab, c'est un jeton comme un autre. L'éditeur a depuis réécrit la description du jeton, qui mentionne désormais les merge requests, et retiré la phrase affirmant qu'il ne donnait accès à aucune autre donnée. Le fonctionnement, lui, n'a pas changé ; un filtrage par adresse vérifiée est seulement à l'étude (issue 617883).

Source : A Leaked GitLab Issue Email Address Lets Anyone Push Code and Run CI Jobs as You, The Hacker News, 23 septembre 2026, d'après la recherche d'Aikido Security.