
CVE-2025-65637: Vulnerabilidade de Negação de Serviço no Logrus
Este diretório contém código de prova de conceito e scripts de teste para a vulnerabilidade de Negação de Serviço (DoS) em github.com/sirupsen/logrus, registrada como CVE-2025-65637.
ID do CVE: CVE-2025-65637
CWE: CWE-400 (Consumo Não Controlado de Recursos)
CVSS: 7.5 (Alto)
Descobridores: Christopher Straight, Juan Pablo Mandelbaum
Existe uma vulnerabilidade de negação de serviço em github.com/sirupsen/logrus ao usar Entry.Writer() para registrar um payload de linha única maior que 64KB sem caracteres de nova linha.
Devido a limitações no bufio.Scanner interno, a leitura falha com "token too long" e o pipe do writer é fechado, deixando Writer() inutilizável e causando indisponibilidade do aplicativo (DoS).
Isso afeta as versões < 1.8.3, 1.9.0 e 1.9.2. O problema é corrigido em 1.8.3, 1.9.1 e 1.9.3+, onde a entrada é dividida em blocos e o writer continua funcionando mesmo que um erro seja registrado.
Versões Afetadas:
< v1.8.3 (incluindo v1.8.1, v1.8.2)
v1.9.0
v1.9.2
Versões Corrigidas:
v1.8.3
v1.9.1
v1.9.3+
poc_logrus_dos_improved.go - PoC autônomo demonstrando a vulnerabilidade
poc_logrus_dos.go - Versão PoC mais simples
test_versions.ps1 - Script PowerShell para testar várias versões
test_versions.sh - Script Bash para testar várias versões
test_single_version.ps1 - Teste rápido para uma única versão
# 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
Testes abrangentes confirmam:
A vulnerabilidade ocorre quando logrus.Writer() recebe uma única linha maior que 64KB sem quebras de linha. Isso pode ocorrer quando aplicativos canalizam dados controlados pelo usuário (por exemplo, cabeçalhos HTTP como User-Agent ou stdout/stderr de um subprocesso) para logrus.Writer().
Versões vulneráveis: O scanner interno falha, o pipe se rompe e o aplicativo perde o registro de logs ou trava (DoS).
Versões corrigidas: O erro é registrado, mas o Writer continua funcionando corretamente, prevenindo o DoS.
| Version | Status | Has Error | Writer Broken |
|---|
| v1.8.1 | VULNERÁVEL | Verdadeiro | Verdadeiro |
| v1.8.2 | VULNERÁVEL | Verdadeiro | Verdadeiro |
| v1.8.3 | CORRIGIDO | Verdadeiro | Falso |
| v1.9.0 | VULNERÁVEL | Verdadeiro | Verdadeiro |
| v1.9.1 | CORRIGIDO | Verdadeiro | Falso |
| v1.9.2 | VULNERÁVEL | Verdadeiro | Verdadeiro |
| v1.9.3 | CORRIGIDO | Verdadeiro | Falso |