İçeriğe geç

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.

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);

Her giriş yolunu çözümleyip normalleştirin ve diske yazmadan önce hedef dizin içinde kaldığını doğrulayın.