
CVE-2025-65637: Vulnerabilidad de denegación de servicio en Logrus
Este directorio contiene código de prueba de concepto y scripts de prueba para la vulnerabilidad de Denegación de Servicio (DoS) en github.com/sirupsen/logrus, registrada como CVE-2025-65637.
CVE ID: CVE-2025-65637
CWE: CWE-400 (Consumo no controlado de recursos)
CVSS: 7.5 (Alta)
Descubridores: Christopher Straight, Juan Pablo Mandelbaum
Existe una vulnerabilidad de denegación de servicio en github.com/sirupsen/logrus cuando se utiliza Entry.Writer() para registrar una carga útil de una sola línea superior a 64 KB sin caracteres de nueva línea.
Debido a las limitaciones del bufio.Scanner interno, la lectura falla con "token too long" y la tubería del escritor se cierra, dejando inutilizable y provocando la indisponibilidad de la aplicación (DoS).
Writer()Esto afecta a las versiones < 1.8.3, 1.9.0 y 1.9.2. El problema se corrige en 1.8.3, 1.9.1 y 1.9.3+, donde la entrada se divide en fragmentos y el escritor sigue funcionando incluso si se registra un error.
Versiones Afectadas:
< v1.8.3 (incluyendo v1.8.1, v1.8.2)
v1.9.0
v1.9.2
Versiones Corregidas:
v1.8.3
v1.9.1
v1.9.3+
poc_logrus_dos_improved.go - PoC independiente que demuestra la vulnerabilidad
poc_logrus_dos.go - Versión más simple del PoC
test_versions.ps1 - Script de PowerShell para probar múltiples versiones
test_versions.sh - Script de Bash para probar múltiples versiones
test_single_version.ps1 - Prueba rápida para una versión concreta
# PowerShell
.\test_single_version.ps1 v1.8.1
# PowerShell
.\test_versions.ps1
# Bash/Linux
chmod +x test_versions.sh
./test_versions.sh
go mod init poclogrus
go get github.com/sirupsen/[email protected]
go run poc_logrus_dos_improved.go
Las pruebas exhaustivas confirman:
| Versión | Estado | Tiene Error | Writer Roto |
|---|---|---|---|
| v1.8.1 | VULNERABLE | Verdadero | Verdadero |
| v1.8.2 | VULNERABLE | Verdadero | Verdadero |
| v1.8.3 | CORREGIDO | Verdadero | Falso |
| v1.9.0 | VULNERABLE | Verdadero | Verdadero |
| v1.9.1 | CORREGIDO | Verdadero | Falso |
| v1.9.2 | VULNERABLE | Verdadero | Verdadero |
| v1.9.3 | CORREGIDO | Verdadero | Falso |
La vulnerabilidad ocurre cuando logrus.Writer() recibe una sola línea de más de 64 KB sin saltos de línea. Esto puede suceder cuando las aplicaciones envían datos controlados por el usuario (por ejemplo, cabeceras HTTP como User-Agent o stdout/stderr de un subproceso) a logrus.Writer().
Versiones vulnerables: El escáner interno falla, la tubería se rompe y la aplicación pierde el registro o se bloquea (DoS).
Versiones corregidas: El error se registra, pero el Writer continúa funcionando correctamente, evitando la denegación de servicio.