
CVE-2025-65637: Logrus 서비스 거부 취약점
이 디렉토리는 github.com/sirupsen/logrus의 서비스 거부(DoS) 취약점에 대한 개념 증명 코드와 테스트 스크립트를 포함하며, CVE-2025-65637로 할당되었습니다.
CVE ID: CVE-2025-65637
CWE: CWE-400 (통제되지 않은 리소스 소비)
CVSS: 7.5 (High)
발견자: Christopher Straight, Juan Pablo Mandelbaum
Entry.Writer()를 사용하여 개행 문자가 없는 64KB보다 큰 단일 행 페이로드를 기록할 때 github.com/sirupsen/logrus에 서비스 거부 취약점이 존재합니다.
내부 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+에서 수정되었으며, 입력이 청크로 나뉘고 오류가 기록되더라도 Writer가 계속 작동합니다.
영향받는 버전:
< v1.8.3 (v1.8.1, v1.8.2 포함)v1.9.0v1.9.2수정된 버전:
v1.8.3v1.9.1v1.9.3+# 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()가 개행 없는 64KB보다 큰 단일 행을 수신할 때 발생합니다. 이는 애플리케이션이 사용자 제어 데이터(예: HTTP 헤더의 User-Agent 또는 하위 프로세스의 stdout/stderr)를 logrus.Writer()로 파이프할 때 발생할 수 있습니다.
취약한 버전: 내부 스캐너가 실패하고 파이프가 끊어져 애플리케이션이 로깅을 잃거나 충돌합니다(DoS).
수정된 버전: 오류가 기록되지만 Writer는 계속 정상 작동하여 DoS를 방지합니다.
| 버전 | 상태 | 오류 발생 | Writer 손상 |
|---|
| v1.8.1 | VULNERABLE | True | True |
| v1.8.2 | VULNERABLE | True | True |
| v1.8.3 | FIXED | True | False |
| v1.9.0 | VULNERABLE | True | True |
| v1.9.1 | FIXED | True | False |
| v1.9.2 | VULNERABLE | True | True |
| v1.9.3 | FIXED | True | False |