Gitea, la plataforma Git auto-alojada, ha parcheado una vulnerabilidad crítica de ejecución remota de código. Un usuario con permisos ordinarios de escritura en un repositorio puede convertir el contenido de un parche controlado por el atacante en un gancho de Git activo (hook) y ejecutar comandos del sistema como la cuenta de servicio de Gitea.
Detalles de la vulnerabilidad
La falla, identificada como CVE-2026-60004 (puntuación CVSS: 9.8), afecta a las versiones de Gitea 1.17 y posteriores hasta 1.27.1, y está corregida en la versión 1.27.1. La llamada a la API vulnerable requiere autenticación y permiso de escritura en el repositorio. Sin embargo, Gitea habilita el registro por defecto, por lo que un visitante externo puede crear una cuenta normal y un repositorio en una instalación sin cambios, y luego explotar la falla sin credenciales previas.
La solución es actualizar a la versión 1.27.1. Gitea indicó el 27 de julio que las instancias de Gitea Cloud se actualizarían automáticamente. El aviso de seguridad de Gitea del 28 de julio no indica que la falla haya sido explotada activamente, pero incluye código de prueba de concepto (PoC) público. Deshabilitar el registro abierto puede eliminar la ruta pública de creación de cuentas mientras se implementa la actualización, pero no corrige la falla ni protege contra usuarios existentes con permisos de escritura en el repositorio.
Origen y reporte
La falla fue reportada por el investigador de seguridad Shai Rod, conocido como NightRang3r. Gitea lo acredita como el informante en su aviso.
Mecanismo de explotación
La falla se encuentra en el endpoint POST /api/v1/repos/{owner}/{repo}/diffpatch. Según el aviso de seguridad de Gitea, este endpoint aplica un parche proporcionado dentro de un clon temporal bare compartido. Las versiones vulnerables ejecutan git apply con las opciones –index, –recount, –cached y –binary, añadiendo la opción de fusión a tres bandas -3 cuando el servidor ejecuta Git 2.32 o posterior.
Un atacante envía el mismo parche dos veces para crear una colisión de tipo "add/add". La fusión a tres bandas entonces verifica la ruta indexada incluso cuando la operación usa –cached. Debido a que el clon temporal es bare, su raíz es $GIT_DIR. Un archivo ejecutable colocado en hooks/post-index-change por lo tanto termina en el directorio de ganchos de Git y se activa. Git lo ejecuta al actualizar el índice.
El PoC inicia sesión con una cuenta normal, crea un repositorio privado inicializado, envía el parche malicioso dos veces y recupera la salida del comando. No necesita un callback externo. El gancho almacena la salida en objetos de Git, crea una rama con el resultado y permite al atacante obtenerla mediante HTTP inteligente autenticado.
Hasta el 29 de julio de 2026, ninguna de las fuentes primarias citadas reporta si la falla fue explotada antes o después de que la versión 1.27.1 estuviera disponible.
Impacto
Una explotación exitosa otorga al atacante los privilegios de la cuenta del sistema operativo de Gitea. Dependiendo del nivel de aislamiento de la instancia, Gitea indicó que podría exponer secretos de la aplicación y del entorno, repositorios montados, credenciales y contenido de bases de datos, credenciales OAuth y servicios internos alcanzables.
La explotación aún requiere permisos de escritura en el repositorio, Git 2.32 o posterior, la ruta diffpatch habilitada y un sistema de archivos temporal escribible y ejecutable. El registro predeterminado permite que un externo obtenga los permisos de escritura necesarios en una instalación sin cambios.
La corrección
La corrección es fácil de pasar por alto en el registro de cambios. Gitea cambió el clon temporal de bare a no bare. El comentario en el código advierte explícitamente que los comandos de Git que usan –index pueden operar sobre el árbol de trabajo. El cambio fue fusionado y retroportado el 26 de julio de 2026.
La versión 1.27.1 se lanzó el 27 de julio, y el aviso de seguridad siguió el 28 de julio. Las notas de lanzamiento listaron el cambio bajo MISC como "refactor: git patch apply", no bajo SECURITY.
Problema adicional de inclusión de archivos
Rod también presentó un PoC de una vulnerabilidad separada de inclusión de archivos que recupera /etc/passwd de un host Gitea 1.27.0. Este problema parece corresponder a un cambio separado incluido en 1.27.1 que alteró el renderizador Org-mode de Gitea para que las rutas #+INCLUDE se devuelvan como texto plano en lugar de ser leídas del sistema de archivos del servidor. Gitea no ha publicado un aviso separado ni un CVE para este problema de inclusión de archivos.




















Deja una respuesta