🇰🇷 한글 설명
7-Zip의 WIM 아카이브 핸들러에서 보안 설명자 조회 시 오프바이원 힙 오버플로우 읽기 취약점이 발견되었습니다. 공격자가 제어하는 보안 ID를 통해 배열 경계를 넘어 데이터를 읽을 수 있어 서비스 거부 또는 경미한 정보 유출이 가능합니다.
💡 쉬운 설명
7-Zip 프로그램이 WIM 형식의 압축 파일을 열 때 메모리 오류가 발생하여 프로그램이 충돌하거나 잘못된 정보를 읽을 수 있습니다. 이 오류는 파일을 열거나 목록을 볼 때 자동으로 발생하여 시스템 안정성에 영향을 줄 수 있습니다.
🇺🇸 원문 (English)
7-Zip is a file archiver with a high compression ratio. Versions 9.34 through 26.00 contain an off-by-one heap out-of-bounds read in the WIM (Windows Imaging) archive handler's security descriptor lookup. In CHandler::GetSecurity (CPP/7zip/Archive/Wim/WimHandler.cpp), the per-image SecurOffsets table holds numEntries + 1 cumulative offsets, but the check securityId >= SecurOffsets.Size() admits securityId == numEntries, and the function then reads SecurOffsets[securityId + 1], fetching one UInt32 past the end of the heap-allocated CRecordVector (which performs no bounds checking on operator[]). The securityId is attacker-controlled at offset +0xC of any directory entry in WIM metadata, and the handler is registered for .wim, .swm, .esd, and .ppkg and enabled by default in stock 7z.dll; the OOB triggers zero-click in the GUI because 7zFM.exe's ListView calls GetRawProp(kpidNtSecure) for every item during listing (ASan-confirmed), and is also reachable via CLI listing with 7zz l -slt. Impact is limited to denial of service under hardened allocators and minor information disclosure, since the OOB value is only consumed arithmetically as a length and is not surfaced to the attacker; there is no write primitive.
📍 영향받는 시스템
7-Zip 9.34부터 26.00 버전
⚔️ 공격 벡터
악의적으로 조작된 WIM, SWM, ESD 또는 PPKG 파일 열기
🛡️ 대응 방법
7-Zip을 최신 버전으로 업데이트하거나 공식 보안 패치 적용
🔧 검증 코드
출력된 버전이 26.00 이하이거나 9.34 이상인 경우 취약한 버전이 설치된 것입니다.
7z | grep -i 'version' | grep -vE '26.0[1-9]|26.0[1-9][0-9]|2[7-9]|[3-9][0-9]{2,}'