Zip Slip (ARCH4106)
Anahtar java.security.zip-slip · Önem error · Kategori security · CWE CWE-22
Arşiv giriş yollarını hedef dizin içinde kaldıklarını doğrulamadan diske yazmak, ../ içeren giriş adlarıyla hedef dizinin dışına dosya yazılmasına olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”ZipEntry e = zip.getNextEntry();File out = new File(targetDir, e.getName());Files.copy(zip, out.toPath());Path base = targetDir.toPath().toRealPath();Path out = base.resolve(e.getName()).normalize();if (!out.startsWith(base)) throw new IOException("Zip slip: " + e.getName());Files.copy(zip, out);Düzeltme
Bölüm başlığı “Düzeltme”Her giriş yolunu çözümleyip normalleştirin ve diske yazmadan önce hedef dizin içinde kaldığını doğrulayın.