
CVE-2025-65637: Уязвимость типа «отказ в обслуживании» в Logrus
Данный каталог содержит PoC-код и тестовые скрипты для уязвимости типа «Отказ в обслуживании» (DoS) в github.com/sirupsen/logrus, зарегистрированной как CVE-2025-65637.
CVE ID: CVE-2025-65637
CWE: CWE-400 (Неконтролируемое потребление ресурсов)
CVSS: 7.5 (Высокая)
Обнаружили: Christopher Straight, Juan Pablo Mandelbaum
Уязвимость типа «отказ в обслуживании» существует в github.com/sirupsen/logrus при использовании Entry.Writer() для записи одной строки полезной нагрузкой более 64 КБ без символов новой строки.
Из-за ограничений внутреннего bufio.Scanner чтение завершается ошибкой «token too long», а канал записи закрывается, что делает Writer() непригодным для использования и приводит к недоступности приложения (DoS).
Затрагиваются версии < 1.8.3, 1.9.0 и 1.9.2. Проблема исправлена в версиях 1.8.3, 1.9.1 и 1.9.3+, где входные данные разбиваются на фрагменты, и запись продолжает работать даже при возникновении ошибки.
Затронутые версии:
< v1.8.3 (включая v1.8.1, v1.8.2)
v1.9.0
v1.9.2
Исправленные версии:
v1.8.3
v1.9.1
v1.9.3+
poc_logrus_dos_improved.go — Автономный PoC, демонстрирующий уязвимость
poc_logrus_dos.go — Упрощённая версия PoC
test_versions.ps1 — PowerShell-скрипт для тестирования нескольких версий
test_versions.sh — Bash-скрипт для тестирования нескольких версий
test_single_version.ps1 — Быстрый тест для одной версии
# 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
Комплексное тестирование подтверждает:
Уязвимость возникает, когда logrus.Writer() получает одну строку размером более 64 КБ без символов новой строки. Это может произойти, если приложение передаёт данные, контролируемые пользователем (например, HTTP-заголовки вроде User-Agent или stdout/stderr подпроцесса), в logrus.Writer().
Уязвимые версии: внутренний сканер выходит из строя, канал разрывается, и приложение теряет возможность логирования или аварийно завершается (DoS).
Исправленные версии: ошибка логируется, но Writer продолжает нормально функционировать, предотвращая DoS.
| Версия | Статус | Есть ошибка | Запись сломана |
|---|
| v1.8.1 | УЯЗВИМА | Да | Да |
| v1.8.2 | УЯЗВИМА | Да | Да |
| v1.8.3 | ИСПРАВЛЕНО | Да | Нет |
| v1.9.0 | УЯЗВИМА | Да | Да |
| v1.9.1 | ИСПРАВЛЕНО | Да | Нет |
| v1.9.2 | УЯЗВИМА | Да | Да |
| v1.9.3 | ИСПРАВЛЕНО | Да | Нет |