İçeriğe geç

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.

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

Her girdinin çözümlenmiş yolunun hedef dizin içinde kaldığını yazmadan önce doğrulayın.