Crate Rust zip CVE-2026-115905 (CVSS 10,0): Arsip ZIP Bisa Lolos Pemeriksaan lalu Menimpa Berkas, Perbarui ke 9.0.5 dan Aktifkan Pemeriksaan Header

Infografik celah parser pada crate Rust zip yang membuat arsip ZIP dibaca berbeda oleh dua pembaca

Pengelola crate Rust zip (zip-rs/zip2) menerbitkan advisori GHSA-m665-v7pm-7grj untuk celah berskor CVSS 4.0 sebesar 10,0. Celah yang ditautkan ke CVE-2026-115905 ini membuat sebuah arsip ZIP tampak jinak bagi satu jenis pembaca, tetapi menulis berkas lain saat diekstrak oleh jenis pembaca yang berbeda. Belum ada eksploitasi yang dikonfirmasi, dan skor EPSS pada halaman CVE masih sekitar 0,3 persen.

Dua pembaca, dua daftar nama berkas

Format ZIP menyimpan nama berkas di dua tempat: header lokal di depan setiap entri dan direktori pusat di akhir arsip. Menurut advisori, pembaca akses acak ZipArchive memakai nama dari direktori pusat, sedangkan pembaca aliran ZipStreamReader memakai nama dari header lokal. Penyerang bisa membuat arsip yang kedua daftarnya berbeda.

Akibatnya, gerbang keamanan yang memeriksa direktori pusat bisa menyetujui nama berkas yang tampak aman, sementara ekstraktor berbasis aliran menulis berkas lain sesuai header lokal. Advisori mencantumkan dampak berupa pelewatan kontrol keamanan, penimpaan berkas, gangguan layanan, dan berpotensi eksekusi kode. Daily CyberSecurity, yang menguji celah ini, menyebut sebuah skrip tugas terjadwal berhasil tertimpa dalam percobaannya.

Advisori terbit pada 17 Oktober 2026 dan mencatat versi 9.0.4 ke bawah sebagai terdampak. Halaman CVE di CVE Watchtower, yang terbit 26 Oktober 2026, menautkan celah yang sama ke CVE-2026-115905. Perlu dicatat, halaman advisori GitHub sendiri masih menulis “No known CVE”, jadi penautan nomor CVE berasal dari sumber sekunder.

Langkah yang perlu diambil pengembang

Advisori menunjuk versi 9.0.5 sebagai perbaikan. Daily CyberSecurity menambahkan dua catatan penting: pada 9.0.5 pemeriksaan konsistensi header tidak aktif secara bawaan, dan versi 9.1.3 menulis ulang proses ekstraksi tetapi pemeriksaan ketat tetap harus dinyalakan sendiri lewat fungsi enforce_header_consistency. Artinya, sekadar menaikkan versi di Cargo.toml belum tentu menutup celah ini.

Tim yang memakai crate ini perlu memeriksa Cargo.lock untuk memastikan versinya, naik ke 9.0.5 atau lebih baru (Daily CyberSecurity menyarankan 9.1.3), lalu mengaktifkan pemeriksaan header di kode yang mengekstrak arsip dari pihak luar. Layanan yang menerima unggahan ZIP dari pengguna, memindai arsip dengan satu pembaca lalu mengekstraknya dengan pembaca lain, paling perlu diprioritaskan. Jalankan ekstraksi dengan akun layanan berhak akses minimal agar penimpaan berkas tidak merambat ke skrip penting.

Pembaca yang mengelola server dengan aplikasi Rust sebaiknya juga menanyakan ke pengembangnya apakah ada komponen internal yang memakai zip untuk memproses unggahan. Pustaka seperti ini sering masuk lewat dependensi tidak langsung.

Sumber: advisori GitHub zip-rs/zip2 dan Daily CyberSecurity. Gambar: Daily CyberSecurity.