
CVE-2025-65637: Vulnérabilité de déni de service Logrus
Ce répertoire contient un code de preuve de concept et des scripts de test pour la vulnérabilité de déni de service (DoS) dans github.com/sirupsen/logrus, identifiée sous le numéro CVE-2025-65637.
CVE ID : CVE-2025-65637
CWE : CWE-400 (Consommation de ressources non contrôlée)
CVSS : 7.5 (Élevée)
Découvreurs : Christopher Straight, Juan Pablo Mandelbaum
Une vulnérabilité de déni de service existe dans github.com/sirupsen/logrus lors de l'utilisation de Entry.Writer() pour journaliser une charge utile d'une seule ligne de plus de 64 Ko sans caractères de nouvelle ligne.
En raison des limitations du bufio.Scanner interne, la lecture échoue avec l'erreur "token too long" et le tube d'écriture est fermé, rendant Writer() inutilisable et provoquant l'indisponibilité de l'application (DoS).
Cela affecte les versions < 1.8.3, 1.9.0 et 1.9.2. Le problème est corrigé dans les versions 1.8.3, 1.9.1 et 1.9.3+, où l'entrée est segmentée et le rédacteur continue de fonctionner même si une erreur est journalisée.
Versions affectées :
< v1.8.3 (incluant v1.8.1, v1.8.2)
v1.9.0
v1.9.2
Versions corrigées :
v1.8.3
v1.9.1
v1.9.3+
poc_logrus_dos_improved.go - PoC autonome démontrant la vulnérabilité
poc_logrus_dos.go - Version PoC plus simple
test_versions.ps1 - Script PowerShell pour tester plusieurs versions
test_versions.sh - Script Bash pour tester plusieurs versions
test_single_version.ps1 - Test rapide pour une seule 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
Des tests complets confirment :
La vulnérabilité se produit lorsque logrus.Writer() reçoit une seule ligne de plus de 64 Ko sans nouvelles lignes. Cela peut se produire lorsque les applications redirigent des données contrôlées par l'utilisateur (par exemple, des en-têtes HTTP comme User-Agent ou stdout/stderr d'un sous-processus) vers logrus.Writer().
Versions vulnérables : Le scanner interne échoue, le tube se brise, et l'application perd la journalisation ou plante (DoS).
Versions corrigées : L'erreur est journalisée, mais le Writer continue de fonctionner correctement, empêchant le DoS.
| Version | Statut | A erreur | Writer cassé |
|---|
| v1.8.1 | VULNÉRABLE | Vrai | Vrai |
| v1.8.2 | VULNÉRABLE | Vrai | Vrai |
| v1.8.3 | CORRIGÉ | Vrai | Faux |
| v1.9.0 | VULNÉRABLE | Vrai | Vrai |
| v1.9.1 | CORRIGÉ | Vrai | Faux |
| v1.9.2 | VULNÉRABLE | Vrai | Vrai |
| v1.9.3 | CORRIGÉ | Vrai | Faux |