El nuevo Gitea RCE permite a los escritores de repositorios instalar un gancho Git para ejecutar comandos de Shell

Swati Khandelwal29 de julio de 2026Vulnerabilidad/DevOps

Gitea, la plataforma Git autohospedada, ha solucionado una vulnerabilidad crítica de ejecución remota de código. Un usuario con acceso normal de escritura al repositorio puede convertir el contenido del parche controlado por el atacante en un gancho Git activo y ejecutar comandos de shell como la cuenta de servicio de Gitea.

Seguimiento como CVE-2026-60004 (Puntuación CVSS: 9,8), la falla afecta a las versiones 1.17 y posteriores de Gitea antes de la 1.27.1 y se solucionó en 1.27.1. La llamada API vulnerable requiere autenticación y permiso de escritura en el repositorio. Pero Gitea habilita el registro de forma predeterminada, por lo que un visitante externo puede crear una cuenta y un repositorio normales en una instalación sin cambios y luego explotar el error sin credenciales preexistentes.

Actualizar a 1.27.1 es la solución. Gitea dijo el 27 de julio que las instancias de Gitea Cloud se actualizarían automáticamente. El aviso de Gitea del 28 de julio no dice que la falla haya sido explotada en la naturaleza, pero incluye un código de prueba de concepto (PoC) público.

Deshabilitar el registro abierto puede eliminar la ruta de creación de cuenta pública mientras se implementa la actualización, pero no soluciona la falla ni protege contra usuarios existentes con acceso de escritura al repositorio.

Ciberseguridad

La falla fue reportada por un investigador de seguridad. Shai Rod, que se hace llamar NightRang3r. Gitea acredita a NightRang3r como el reportero de su aviso.

La gitea ruta afectada invoca reqToken()que rechaza solicitudes sin un usuario registrado. La ruta sin credenciales previas proviene del proyecto configuración predeterminadaque deja el registro abierto, no requiere aprobación manual ni por correo electrónico, no marca a los nuevos usuarios como restringidos y no impone ningún límite predeterminado de creación de repositorio.

El error se encuentra en el POST /api/v1/repos/{owner}/{repo}/diffpatch punto final. Según Gitea aviso de seguridadel punto final aplica un parche proporcionado dentro de un clon temporal desnudo compartido. Invocación de compilaciones vulnerables git apply con --index, --recount, --cachedy --binaryañadiendo el -3 Opción de respaldo de tres vías cuando el servidor ejecuta Git 2.32 o posterior.

Un atacante envía el mismo parche dos veces para crear una colisión agregar/agregar. El respaldo de tres vías verifica la ruta indexada aunque la operación utilice --cached. Debido a que el clon temporal está desnudo, su raíz es $GIT_DIR. Un archivo ejecutable ubicado en hooks/post-index-change por lo tanto, llega al directorio de enlaces de Git y se activa. Git lo ejecuta mientras actualiza 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 el resultado del comando. No necesita devolución de llamada saliente. El gancho almacena el resultado en objetos Git, crea una rama que contiene el resultado y permite al atacante recuperarlo a través de HTTP inteligente autenticado.

Al 29 de julio de 2026, ninguna de las fuentes primarias citadas informa si la falla fue explotada antes o después de que la versión 1.27.1 estuviera disponible.

La explotación exitosa otorga al atacante los privilegios de la cuenta del sistema operativo Gitea. Dependiendo de cómo esté aislada la instancia, Gitea dijo que eso podría exponer secretos de aplicaciones y entornos, repositorios montados, credenciales y contenidos de bases de datos, credenciales de OAuth y servicios internos accesibles.

Ciberseguridad

La explotación aún requiere acceso de escritura al repositorio, Git 2.32 o posterior, un habilitado diffpatch ruta y un sistema de archivos temporal ejecutable y grabable. El registro predeterminado permite que un usuario externo obtenga el acceso de escritura requerido en una instalación sin cambios.

Es fácil pasar por alto la solución en el registro de cambios. Gitea cambió el clon temporal de desnudo a no desnudo. El comentario de código advierte explícitamente que los comandos de Git que usan --index puede operar en el árbol de trabajo. El cambio se fusionó y se respaldó el 26 de julio de 2026.

Versión 1.27.1 enviado el 27 de julio, y el aviso de seguridad siguió el 28 de julio. Las notas de la versión enumeraron el cambio en MISC como «refactor: git patch apply», no en SEGURIDAD.

Rod tenía obtuvo una vista previa del RCE junto con un problema de inclusión de archivos separadocon un PoC recuperando /etc/passwd desde un host Gitea 1.27.0. Esta cuestión parece corresponder a un tema aparte cambio incluido en 1.27.1 que alteró tanto el renderizador del modo Org de Gitea #+INCLUDE las rutas se devuelven como texto sin formato en lugar de leerse desde el sistema de archivos del servidor. Gitea no ha publicado un aviso por separado o CVE para el problema de la inclusión de archivos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *