🇰🇷 한글 설명
SumatraPDF 3.7.0.22298 버전의 MobiDoc.cpp에서 부호 없는 정수를 부호 있는 정수로 변환하는 과정 중 정수 오버플로가 발생합니다. 이로 인해 특정 플래그가 설정된 조작된 MOBI 파일을 열 경우 메모리 경계를 벗어난 읽기 작업이 수행되어 애플리케이션이 강제 종료됩니다.
💡 쉬운 설명
문서 뷰어인 SumatraPDF에서 특수하게 제작된 파일을 열면 프로그램이 갑자기 꺼지는 현상이 발생할 수 있습니다. 이는 데이터 처리 과정의 계산 오류로 인해 발생하는 문제이며, 현재로서는 프로그램이 종료되는 수준의 서비스 거부 공격에 해당합니다.
🇺🇸 원문 (English)
SumatraPDF is a multi-format reader for Windows. In 3.7.0.22298, src/MobiDoc.cpp narrows the untrusted unsigned mobiHdr.hdrLen field to a signed integer for validation; values above INT_MAX become negative and bypass the upper-bound check. When the EXTH flag is set, the original unsigned value is reused as a pointer offset, causing DecodeExthHeader() to read beyond the record buffer. Opening a crafted MOBI file can reliably terminate the application with a native access violation; no code execution, information disclosure, or integrity impact has been demonstrated. No fixed version is available as of this review.
📍 영향받는 시스템
SumatraPDF 3.7.0.22298 이하 버전
⚔️ 공격 벡터
공격자가 조작된 MOBI 파일을 사용자에게 전달하여 실행하도록 유도
🛡️ 대응 방법
현재 수정 버전이 없으므로 신뢰할 수 없는 MOBI 파일 열기를 지양하고 향후 보안 패치 업데이트를 확인해야 함
🔧 검증 코드
출력된 버전 번호가 3.7.0.22298과 같거나 낮은지 확인
sumatrapdf --version 2>/dev/null || echo 'SumatraPDF not found'