🔍 CVE-2026-115909

7.5
CVSS Score
HIGH
2026-10-26
2026-10-26 20:17
✅ 완료

🇰🇷 한글 설명

Rust의 zip 라이브러리(1.3.0~9.0.0)에서 ZipArchive::extract 함수가 심볼릭 링크 대상 처리 시 공격자가 조작한 ZIP64 uncompressed_size 값으로 Vec::with_capacity를 호출합니다. 작은 아카이브로도 불가능한 메모리 할당을 요청하여 프로세스가 비정상 종료될 수 있으며, catch_unwind나 별도 스레드로는 방어할 수 없습니다. 9.0.0 버전에서 수정되었습니다.

💡 쉬운 설명

zip 파일을 풀 때 악성 파일 하나가 프로그램에게 불가능할 정도로 큰 메모리를 요구해 프로그램 전체를 강제로 멈추게 만들 수 있습니다. 이 때문에 zip 파일을 처리하는 서비스가 반복적으로 중단될 수 있습니다.

🇺🇸 원문 (English)

zip is a zip library for Rust that supports reading and writing simple ZIP files. From 1.3.0 until 9.0.0, ZipArchive::extract in src/read/mod.rs calls Vec::with_capacity for a symbolic link target using the attacker-controlled ZIP64 uncompressed_size before reading entry data. A small archive can request an impossible capacity, causing the infallible allocation path to abort the process before the entry is validated. The failure cannot be contained with catch_unwind or a worker thread, allowing repeated denial of service in archive-processing applications. This issue is fixed in version 9.0.0.

📍 영향받는 시스템

Rust zip 라이브러리 1.3.0 이상 9.0.0 미만을 사용하는 모든 애플리케이션

⚔️ 공격 벡터

공격자가 ZIP64 uncompressed_size 필드를 조작한 심볼릭 링크 항목을 포함한 작은 악성 ZIP 아카이브를 업로드 또는 전달하여 extract 호출 시 프로세스를 중단시킴

🛡️ 대응 방법

zip 라이브러리를 9.0.0 이상으로 업그레이드 (Cargo.toml에서 zip = "9.0.0" 이상 지정 후 cargo update -p zip)

🔧 검증 코드

출력된 zip 버전이 1.3.0 이상 9.0.0 미만이면 취약하며, 9.0.0 이상이면 패치된 상태입니다. 아무것도 출력되지 않으면 해당 프로젝트가 zip 크레이트를 사용하지 않는 것입니다.

Shell / Script
cargo tree -i zip 2>/dev/null | grep -E 'zip v[0-9]+'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Windows iSCSI Target Service