🇰🇷 한글 설명
github.com/sirupsen/logrus에서 Entry.Writer()를 사용해 개행 문자 없이 64KB를 초과하는 단일 라인 데이터를 기록하면 서비스 거부(DoS) 취약점이 발생합니다. 내부 bufio.Scanner의 한계로 'token too long' 오류가 발생하며 writer 파이프가 닫혀 애플리케이션이 중단될 수 있습니다. 1.8.3 미만, 1.9.0, 1.9.2 버전이 영향을 받으며 1.8.3, 1.9.1, 1.9.3 이상에서 수정되었습니다.
💡 쉬운 설명
로그 기록 기능에 아주 긴 한 줄짜리 데이터가 들어오면 로그 기능이 멈춰버립니다. 그 결과 프로그램 전체가 응답하지 않게 될 수 있습니다.
🇺🇸 원문 (English)
A denial-of-service vulnerability exists in github.com/sirupsen/logrus when using Entry.Writer() to log a single-line payload larger than 64KB without newline characters. Due to limitations in the internal bufio.Scanner, the read fails with "token too long" and the writer pipe is closed, leaving Writer() unusable and causing application unavailability (DoS). This affects versions < 1.8.3, 1.9.0, and 1.9.2. The issue is fixed in 1.8.3, 1.9.1, and 1.9.3+, where the input is chunked and the writer continues to function even if an error is logged.
📍 영향받는 시스템
sirupsen/logrus 1.8.3 미만, 1.9.0, 1.9.2를 사용하는 Go 애플리케이션
⚔️ 공격 벡터
공격자가 개행 없이 64KB 이상인 긴 입력값을 로그로 남기도록 유도하여 Writer 파이프를 중단시킴
🛡️ 대응 방법
logrus를 1.8.3, 1.9.1 또는 1.9.3 이상으로 업그레이드
🔧 검증 코드
출력된 버전이 1.8.3 미만, 1.9.0, 1.9.2이면 취약하며, 1.8.3, 1.9.1, 1.9.3 이상이면 패치된 버전입니다.
go list -m github.com/sirupsen/logrus 2>/dev/null