🇰🇷 한글 설명
Junrar 라이브러리의 RarVM.ExecuteCode 함수에서 VM_JMP 명령어가 프로그램 코드 크기를 초과하는 대상으로 점프할 때 발생하는 취약점입니다. 조작된 RAR4 아카이브를 통해 추출 스레드를 무한 루프에 빠뜨려 CPU 자원을 고갈시키고 서비스 가용성을 저해할 수 있습니다. 이 문제는 버전 7.6.1에서 수정되었습니다.
💡 쉬운 설명
악의적으로 만들어진 압축 파일을 풀려고 하면 컴퓨터가 무한 루프에 빠져 CPU를 과도하게 사용하게 만드는 문제입니다. 이로 인해 시스템이 느려지거나 압축 해제 기능이 마비될 수 있습니다.
🇺🇸 원문 (English)
Junrar is an open source Java RAR archive library. Prior to 7.6.1, RarVM.ExecuteCode in src/main/java/com/github/junrar/unpack/vm/RarVM.java can repeatedly execute a VM_JMP instruction whose target is greater than or equal to the prepared program's codeSize. The setIP() function returns success without changing the instruction pointer or decrementing maxOpCount, and the jump handler continues before loop-end accounting, leaving both values unchanged. A crafted RAR4 archive can therefore keep an extraction thread in an infinite CPU loop and exhaust archive-processing worker capacity. The RAR virtual machine does not expose native process execution, so the supported impact is availability loss rather than code execution. This issue is fixed in version 7.6.1.
📍 영향받는 시스템
Junrar library versions prior to 7.6.1
⚔️ 공격 벡터
조작된 RAR4 아카이브 파일을 통한 서비스 거부(DoS) 공격
🛡️ 대응 방법
Junrar 라이브러리를 7.6.1 버전 이상으로 업데이트하십시오.
🔧 검증 코드
프로젝트 내 라이브러리 경로에서 Junrar를 검색한 후, 해당 라이브러리의 버전을 확인하여 7.6.1 미만인지 체크합니다.
grep -r "com.github.junrar" /path/to/your/project/lib/ || echo 'Library not found'