
CVE-2025-65637: Vulnerabilità di Denial of Service in Logrus
Questa directory contiene codice proof-of-concept e script di test per la vulnerabilità Denial of Service (DoS) in github.com/sirupsen/logrus, assegnata come CVE-2025-65637.
CVE ID: CVE-2025-65637
CWE: CWE-400 (Controllo del Consumo di Risorse)
CVSS: 7.5 (Alta)
Discoverers: Christopher Straight, Juan Pablo Mandelbaum
Esiste una vulnerabilità denial-of-service in github.com/sirupsen/logrus quando si utilizza Entry.Writer() per registrare un payload su una singola riga più grande di 64KB senza caratteri di newline.
A causa delle limitazioni nel bufio.Scanner interno, la lettura fallisce con "token too long" e il pipe dello scrittore viene chiuso, rendendo Writer() inutilizzabile e causando indisponibilità dell'applicazione (DoS).
Ciò interessa le versioni < 1.8.3, 1.9.0 e 1.9.2. Il problema è risolto in 1.8.3, 1.9.1 e 1.9.3+, dove l'input viene suddiviso in blocchi e lo scrittore continua a funzionare anche se viene registrato un errore.
Versioni Interessate:
< v1.8.3 (incluse v1.8.1, v1.8.2)
v1.9.0
v1.9.2
Versioni Corrette:
v1.8.3
v1.9.1
v1.9.3+
poc_logrus_dos_improved.go - PoC autonomo che dimostra la vulnerabilità
poc_logrus_dos.go - Versione PoC più semplice
test_versions.ps1 - Script PowerShell per testare più versioni
test_versions.sh - Script Bash per testare più versioni
test_single_version.ps1 - Test rapido per una singola versione
# 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
Test approfonditi confermano:
La vulnerabilità si verifica quando logrus.Writer() riceve una singola riga più grande di 64KB senza newline. Ciò può accadere quando le applicazioni inviano dati controllati dall'utente (ad esempio, intestazioni HTTP come User-Agent o stdout/stderr di un sottoprocesso) a logrus.Writer().
Versioni Vulnerabili: Lo scanner interno fallisce, il pipe si rompe e l'applicazione perde la registrazione o si blocca (DoS).
Versioni Corrette: L'errore viene registrato, ma lo scrittore continua a funzionare correttamente, prevenendo il DoS.
| Versione | Stato | Ha Errore | Scrittore Rotto |
|---|
| v1.8.1 | VULNERABILE | True | True |
| v1.8.2 | VULNERABILE | True | True |
| v1.8.3 | CORRETTA | True | False |
| v1.9.0 | VULNERABILE | True | True |
| v1.9.1 | CORRETTA | True | False |
| v1.9.2 | VULNERABILE | True | True |
| v1.9.3 | CORRETTA | True | False |