Boletín de amenazas

CVE-2026-60004: inyección de código en Gitea que lleva a la ejecución de comandos en el servidor

CVE-2026-60004 es una inyección de código (CWE-94, CVSS 9.8, KEV) en el endpoint diffpatch de Gitea, corregida en 1.27.1. Por qué el registro abierto cumple la condición de acceso de escritura.

Publicado 2026-09-05 Actualizado 2026-10-04 Última verificación 2026-09-05 8 min de lectura
En esta página

Un resumen sobre una vulnerabilidad con explotación confirmada (incluida en el catálogo KEV de CISA): qué ocurre, qué está afectado y qué hacer, desde el punto de vista del defensor, sin pasos de reproducción.

Resumen del aviso
CVE
CVE-2026-60004
Gravedad
Crítica (CVSS 9,8, v3.1; la puntuación registrada en NVD se atribuye a la autoridad de numeración de CVE)
Clase
Inyección de código (CWE-94)
Impacto
Se instala un hook de Git malicioso → se ejecutan comandos como el usuario del sistema operativo de Gitea
Afectadas
Gitea 1.17 – 1.27.0 según el aviso del proveedor. Corregida en 1.27.1
Explotación
Incluida en el catálogo KEV de CISA (añadida el 25 de agosto de 2026, plazo hasta el 28 de agosto). Uso en campañas de ransomware registrado como "Desconocido"
Probabilidad
EPSS 0,868 (de nuestro feed a 2026-09-05), nivel superior
9.8
CVSS v3.1
1.27.1
Versión corregida
0.868
EPSS (explotación estimada)
KEV
Explotada en la naturaleza

No lea «privilegios requeridos» como un motivo de tranquilidad

Lectura A (descripción de CISA)

"un atacante con acceso de escritura al repositorio" — suena condicionado

Lectura B (vector de CVSS)

PR:N — no se requieren privilegios

↓ el aviso del proveedor explica ambas

Con el registro abierto activado

registrarse → crear un repositorio → concederse a sí mismo el acceso de escritura que necesita el ataque

Si el privilegio requerido está disponible al registrarse, el requisito de privilegios le cuesta al atacante solo un paso más: crear una cuenta.

Consolarse con «pero requiere el privilegio X» es una forma habitual de juzgar mal una vulnerabilidad. La pregunta no es quién tiene ese privilegio, sino si el privilegio se puede obtener desde fuera. El registro abierto, el alta sin invitación, los permisos concedidos por defecto: un privilegio con una vía de obtención no es realmente una condición.

Esto es lo mismo que el punto ② de los errores comunes son fallos de suposición. Y revise la vía de registro por HTTP en lugar de fiarse del archivo de configuración (autenticación frente a autorización).

Qué es el fallo

Del aviso del proveedor
Ruta
El endpoint diffpatch gestiona mal la aplicación de parches en clones temporales compartidos
Resultado
Se puede instalar un hook de Git malicioso (hooks/post-index-change)
Disparador
El hook se ejecuta como el usuario del sistema operativo de Gitea cuando Git escribe el índice
Accesible desde ahí
Secretos de la aplicación, credenciales de la base de datos, tokens OAuth, repositorios montados
Condiciones previas
El proveedor indica que la explotación requiere Git 2.32 o posterior, la ruta diffpatch habilitada y un sistema de archivos temporal con escritura y ejecución

Un hook de Git plantado permanece tras la actualización, así que actualizar no es el final

Este fallo termina en algo ejecutable dejado en el servidor. Actualizar cierra la vía que lo instala; no elimina nada que ya esté instalado.

Un hook de Git está diseñado como un punto legítimo de ejecución remota, así que una vez colocado no parece sospechoso. Lo único que separa un mantenimiento legítimo de una puerta trasera es quién lo creó, con qué permiso y si aparece en los registros. Después de corregir el fallo, revise si el atacante dejó algo. No omita ese paso.

Qué hacer

1

Actualice a 1.27.1 o posterior (la acción principal)

El aviso del proveedor indica que el rango afectado es 1.17 – 1.27.0 y que la corrección es 1.27.1. Empiece aquí. Nadie actualiza una instancia autoalojada por usted. Compruebe primero la versión en ejecución, como se explica en el manual de remediación de CVE.

2

Compruebe de verdad la configuración de registro

Como se ha dicho, que el registro abierto esté activado es lo que, en la práctica, elimina la condición de privilegios. No se fíe de la configuración: abra la página de registro con la sesión cerrada y vea qué ocurre. En una instancia interna, desactive el registro y restrinja el acceso en la capa de red, en lugar de confiar solo en la autenticación.

3

Busque hooks y archivos que no reconozca

Tras actualizar, revise si hay scripts en los directorios de hooks de los repositorios que usted no colocó, ejecutables inesperados y tráfico saliente desconocido desde el proceso de Gitea. La pregunta no es «¿actualizamos?», sino «¿quedó algo atrás?».

4

Si un compromiso es plausible, trate como expuesto lo accesible

Lo que el proveedor indica como accesible son los secretos de la aplicación, las credenciales de la base de datos y los tokens OAuth. Si su revisión no puede resolver la cuestión, recuerde que «no lo sabemos» no equivale a «no ha pasado nada»: rótelos. El manejo de claves se explica en qué es peligroso en .env y las claves de API.

5

Revise la decisión en sí (sin prisa)

Alojarlo usted mismo conlleva la obligación de actualizarlo usted mismo. Las ventajas e inconvenientes están en Git autoalojado frente a GitHub, cuál es más seguro. Esto no es un argumento para migrar, sino para decidir según si de verdad puede mantener las actualizaciones al día.

Opinión de este sitio: CVSS y KEV miden cosas distintas, así que conviene leer ambos

Este caso sirvió como ejemplo práctico de lo que escribimos en la clasificación de CVE con CVSS, EPSS y KEV. CVSS indica lo grave que es técnicamente, la entrada de CISA indica cómo se usa en el terreno, y EPSS estima la probabilidad de explotación: tres medidas distintas.

Aquí, el PR:N de CVSS y el «acceso de escritura requerido» de CISA parecían contradictorios. Leyendo solo uno de ellos, se habría concluido que «requiere un privilegio, así que puede esperar». Una discrepancia rara vez es un error de los datos; es una señal de que se ha pasado por alto alguna premisa. En este caso, el aviso del proveedor contenía la respuesta (el registro abierto).

Fuentes (primarias)

  • Aviso de seguridad de Gitea GHSA-rcr6-4jqh-j84m — github.com (versiones afectadas 1.17–1.27.0 / corregida en 1.27.1 / la condición de privilegios y su relación con el registro abierto / qué es accesible / las condiciones previas)
  • NIST NVD, "CVE-2026-60004" — nvd.nist.gov (CVSS v3.1 9.8, el vector, CWE-94; estado Analyzed)
  • Catálogo de vulnerabilidades explotadas conocidas de CISA — cisa.gov (añadida el 25 de agosto de 2026, plazo hasta el 28 de agosto, uso en campañas de ransomware "Desconocido")
  • Gitea, "Release of 1.27.1" — blog.gitea.com

Todo revisado el 5 de septiembre de 2026. Aquí no se publican pasos de reproducción ni enlaces a código de prueba de concepto.

Lea a continuación

FAQ

Q¿Qué ocurre con CVE-2026-60004?
A

Según el aviso de seguridad del proveedor, el endpoint diffpatch gestiona mal la aplicación de parches, y el resultado es que se puede instalar un hook de Git malicioso (hooks/post-index-change). Ese hook se ejecuta como el usuario del sistema operativo de Gitea cuando Git escribe el índice. El proveedor indica que, entre lo que queda accesible, están los secretos de la aplicación, las credenciales de la base de datos, los tokens OAuth y los repositorios montados.

Q¿Se requiere autenticación? CVSS dice que no se requieren privilegios, CISA dice acceso de escritura al repositorio.
A

Ambas afirmaciones son correctas y no se contradicen. El aviso del proveedor indica que es necesario el acceso de escritura a un repositorio, y explica que, cuando el registro abierto está habilitado, un usuario no autenticado puede registrar una cuenta y crear un repositorio para obtener exactamente ese acceso. Dicho de otro modo, cuando el privilegio requerido puede obtenerlo cualquiera, en la práctica no es un requisito, que es lo que refleja el vector de CVSS.

Q¿Qué versiones están afectadas y cómo se corrige?
A

El aviso del proveedor indica que el rango afectado es de 1.17 a 1.27.0, y que la versión corregida es 1.27.1. La solución es actualizar a 1.27.1 o posterior. Un Gitea autoalojado no se actualiza solo, así que cuanto más tiempo se deje una instancia sin tocar, más tiempo seguirá expuesta.

Q¿Actualizar es el final de la tarea?
A

Actualizar es la acción principal, pero no es todo el trabajo. Lo que esta vulnerabilidad deja es un artefacto ejecutable en el servidor, un hook de Git, y actualizar cierra la vía que instala uno, pero no elimina nada que ya esté instalado. Después de actualizar, revise si hay hooks o archivos que no reconozca y confirme que la configuración de registro es la que pretendía. Si una comprometida es plausible, trate como expuesto lo que el proveedor indica como accesible (secretos, credenciales de la base de datos, tokens OAuth) y rótelos.