🇰🇷 한글 설명
GoAccess는 *nix 시스템의 터미널이나 브라우저에서 실행되는 실시간 웹 로그 분석기입니다. 1.11 이전 버전에서는 내장 WebSocket 서버가 64비트 확장 프레임 길이를 최대 프레임 크기 검사 이전에 부호 있는 32비트 WSFrame.payloadlen 필드로 축소 변환하여, 인증되지 않은 원격 클라이언트가 검사를 우회하고 약 18엑사바이트 규모의 메모리 할당 요청을 유발해 프로세스를 강제 종료시킬 수 있습니다. 이 문제는 1.11 버전에서 수정되었습니다.
💡 쉬운 설명
GoAccess의 웹소켓 서버가 비정상적으로 큰 데이터 크기를 제대로 걸러내지 못합니다. 인증 없이 누구나 이를 이용해 프로그램을 멈추게 할 수 있습니다.
🇺🇸 원문 (English)
GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through the browser. Prior to version 1.11, the built-in WebSocket server narrows a 64-bit extended frame length into the signed 32-bit WSFrame.payloadlen field before enforcing the maximum frame size, allowing an unauthenticated remote client to bypass the guard and force an approximately 18-exabyte allocation request that terminates the process. This issue is fixed in version 1.11.
📍 영향받는 시스템
GoAccess 1.11 미만 버전 전반 (WebSocket 서버 기능 사용 환경)
⚔️ 공격 벡터
인증되지 않은 원격 공격자가 조작된 64비트 확장 프레임 길이를 가진 WebSocket 프레임을 전송하여 프로세스를 비정상 종료시킴 (서비스 거부)
🛡️ 대응 방법
GoAccess를 1.11 이상 버전으로 업그레이드하고, 불필요한 경우 WebSocket 서비스를 비활성화하거나 외부 접근을 차단
🔧 검증 코드
출력된 버전이 1.11 미만이면 취약하며, 1.11 이상이면 수정된 버전입니다. 명령어가 없으면 GoAccess가 설치되어 있지 않은 것입니다.
goaccess --version 2>/dev/null | head -n 1