
CVE-2025-65637: Logrus Denial-of-Service-Schwachstelle
Dieses Verzeichnis enthält Proof-of-Concept-Code und Testskripte für die Denial-of-Service (DoS)-Sicherheitslücke in github.com/sirupsen/logrus, die als CVE-2025-65637 eingetragen ist.
CVE-ID: CVE-2025-65637
CWE: CWE-400 (Unkontrollierter Ressourcenverbrauch)
CVSS: 7.5 (Hoch)
Entdecker: Christopher Straight, Juan Pablo Mandelbaum
Eine Denial-of-Service-Sicherheitslücke besteht in github.com/sirupsen/logrus, wenn mit Entry.Writer() ein einzeiliges Payload größer als 64 KB ohne Zeilenumbruchzeichen protokolliert wird.
Aufgrund von Einschränkungen im internen bufio.Scanner schlägt das Lesen mit „token too long" fehl und die Writer-Pipe wird geschlossen, wodurch Writer() unbrauchbar wird und die Anwendung nicht mehr verfügbar ist (DoS).
Dies betrifft die Versionen < 1.8.3, 1.9.0 und 1.9.2. Der Fehler ist in den Versionen 1.8.3, 1.9.1 und 1.9.3+ behoben, wo die Eingabe chunksweise verarbeitet wird und der Writer auch dann weiter funktioniert, wenn ein Fehler protokolliert wird.
Betroffene Versionen:
< v1.8.3 (einschließlich v1.8.1, v1.8.2)
v1.9.0
v1.9.2
Behobene Versionen:
v1.8.3
v1.9.1
v1.9.3+
poc_logrus_dos_improved.go - Eigenständiger PoC, der die Sicherheitslücke demonstriert
poc_logrus_dos.go - Einfachere PoC-Version
test_versions.ps1 - PowerShell-Skript zum Testen mehrerer Versionen
test_versions.sh - Bash-Skript zum Testen mehrerer Versionen
test_single_version.ps1 - Schnelltest für eine einzelne Version
# 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
Umfassende Tests bestätigen:
Die Sicherheitslücke tritt auf, wenn logrus.Writer() eine einzelne Zeile größer als 64 KB ohne Zeilenumbrüche erhält. Dies kann passieren, wenn Anwendungen benutzergesteuerte Daten (z. B. HTTP-Header wie User-Agent oder stdout/stderr eines Unterprozesses) in logrus.Writer() einspeisen.
Anfällige Versionen: Der interne Scanner schlägt fehl, die Pipe bricht und die Anwendung verliert die Protokollierung oder stürzt ab (DoS).
Behobene Versionen: Der Fehler wird protokolliert, aber der Writer funktioniert weiterhin ordnungsgemäß, wodurch der DoS verhindert wird.
| Version | Status | Fehler | Writer defekt |
|---|
| v1.8.1 | ANFÄLLIG | True | True |
| v1.8.2 | ANFÄLLIG | True | True |
| v1.8.3 | BEHOBEN | True | False |
| v1.9.0 | ANFÄLLIG | True | True |
| v1.9.1 | BEHOBEN | True | False |
| v1.9.2 | ANFÄLLIG | True | True |
| v1.9.3 | BEHOBEN | True | False |