Gitea - CVE-2026-60004

Date de publication :

Il s'agit d'une vulnérabilité dans le point de terminaison diffpatch de l'API REST de Gitea.

Gitea est un service Git auto-hébergé et open-source, écrit en Go, qui propose l'hébergement de dépôts, le suivi de tickets et la revue de code via une interface web.

Ce point de terminaison applique un correctif (patch) fourni par l'utilisateur au sein d'un clone temporaire nu (bare) du dépôt. L'envoi d'un même correctif à deux reprises provoque une collision add/add que Git résout via son mécanisme de repli à trois voies, lequel extrait le fichier indexé sur le disque malgré l'usage de l'option --cached. Dans un dépôt nu, la racine correspond au répertoire $GIT_DIR, ce qui permet à un fichier exécutable nommé hooks/post-index-change, inclus dans le correctif, de devenir un hook Git actif. Git invoque ensuite ce hook lors de l'écriture de l'index. Un compte qui dispose d'un accès en écriture sur un dépôt suffit à livrer ce correctif malveillant, et l'inscription ouverte par défaut sur une instance permet à un visiteur non authentifié d'obtenir cet accès en créant simplement un compte puis un dépôt.

Elle permet l'exécution de commandes arbitraires avec les privilèges du compte système qui exécute le service Gitea.

Informations

La faille est activement exploitée : Oui

Un correctif existe : Oui

Une mesure de contournement existe : Oui

Risques

Exécution de code arbitraire (à distance)

Exploitation

La vulnérabilité exploitée est du type
CWE-94 : Improper Control of Generation of Code ('Code Injection')

Détails sur l'exploitation
•   Vecteur d'attaque : Réseau
•   Complexité de l'attaque : Faible
•   Privilèges nécessaires pour réaliser l'attaque : Aucun
•   Interaction d'un utilisateur ayant accès au produit est-elle nécessaire : Non
•   L'exploitation de la faille permet d'obtenir des droits privilégiés : Oui

Preuve de concept
Une preuve de concept est disponible en sources ouvertes.

Systèmes ou composants affectés

Gitea versions 1.17 jusqu'à 1.27.0

Contournement provisoire

•   Désactiver l'inscription publique si elle n'est pas nécessaire,
•   Restreindre la création de dépôts,
•   Limiter les permissions d'écriture sur les dépôts,
•   Auditer les dépôts Git à la recherche de hooks non autorisés.

Solutions ou recommandations

Gitea versions 1.27.1 et supérieures