Zip Slip (ARCH3106)
Anahtar typescript.security.zip-slip · Önem error · Kategori security · CWE CWE-22
Arşiv girdi yollarını hedef dizin içinde kaldığını doğrulamadan diske yazmak, ../ içeren girdi adlarıyla çıkarma sırasında dizin geçişine olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”for (const entry of zip.getEntries()) { // entry.entryName = "../../etc/cron.d/evil" fs.writeFileSync(path.join(dest, entry.entryName), entry.getData());}for (const entry of zip.getEntries()) { const full = path.resolve(dest, entry.entryName); if (!full.startsWith(dest + path.sep)) throw new Error("Zip Slip"); fs.writeFileSync(full, entry.getData());}Düzeltme
Bölüm başlığı “Düzeltme”Her girdinin çözümlenmiş yolunun hedef dizin içinde kaldığını yazmadan önce doğrulayın.