Ce qui se passe
Forgejo a publié le 10 septembre deux versions correctives, 16.0.4 et 15.0.8, une par branche maintenue. Toutes deux portent le même correctif marqué Critical : une exécution de code à distance sur l'hôte, déclenchée par la création d'un dépôt à partir d'un template. Sont donc concernées toutes les 16.0.x jusqu'à 16.0.3 et les 15.0.x jusqu'à 15.0.7.
La séquence normale est simple. Quand un utilisateur crée un dépôt depuis un
template, Forgejo clone le template, supprime son dossier .git, remplace les
variables dans les fichiers listés dans .forgejo/template, puis lance
l'initialisation d'un nouveau dépôt Git. Le problème : l'expansion des variables
pouvait servir à recréer un dossier .git avant cette dernière étape, et Git
l'adoptait tel quel, avec tout ce qu'il contenait.
Un template malveillant permettait ainsi de lire des données arbitraires sur le
serveur et d'y lancer des processus. Le correctif est aussi court que la faille :
après l'expansion, tout dossier .git présent est supprimé avant
l'initialisation.
Pourquoi ça compte
Sur une forge ouverte aux inscriptions, n'importe quel compte peut marquer un dépôt comme template, et n'importe quel utilisateur peut en instancier un. Le vecteur ne demande ni droit particulier ni intervention d'un administrateur. Forgejo est par ailleurs la forge que beaucoup de développeurs indépendants et de petites équipes hébergent eux-mêmes, souvent sans équipe sécurité derrière.
Les notes de version n'attribuent pas encore d'identifiant CVE et ne disent pas si la faille a été exploitée.
Ce que la même livraison corrige aussi
- Jetons d'API à portée restreinte. Le contrôle qui autorise un mainteneur à modifier la branche d'une pull request ouverte avec « allow maintainer edit » ignorait les restrictions propres à l'API. Un jeton limité à un dépôt pouvait donc modifier au-delà de sa portée.
- Pièces jointes des releases en brouillon. Un accès en lecture seule, y
compris anonyme sur un dépôt public, suffisait à télécharger les fichiers
attachés à une release encore en brouillon, via l'API
GetReleaseAttachmentet la route web de téléchargement. C'est la même classe de faille que Gitea a corrigée sous CVE-2026-27660 (GHSA-q9pg-jj6x-j9p6). - Une équipe d'organisation réglée sur « admin » obtenait les droits « owner »
sur les dépôts liés, et la table
accessest recalculée de façon centralisée pour corriger des incohérences sur les utilisateurs restreints.
À retenir
Mettre à jour vers 16.0.4 ou 15.0.8 dès aujourd'hui. Sur une instance ouverte aux inscriptions, vérifier entre-temps qui a créé des dépôts depuis des templates, et relire ces dépôts.
Source : Forgejo 16.0.4, notes de version (et 15.0.8)