Zip Slip path traversal (ARCH336)
Anahtar dotnet.security.zip-slip · Önem warning · Kategori security · CWE CWE-22
Arşiv girdisi adlarını doğrulamadan dosya yollarına birleştirmek, ../ içeren girdilerin hedef dizinin dışına yazmasına olanak tanır. Bu, sistem dosyalarının üzerine yazılmasına yol açabilir.
Hatalı
Bölüm başlığı “Hatalı”foreach (var entry in archive.Entries){ var path = Path.Combine(targetDir, entry.FullName); entry.ExtractToFile(path, overwrite: true);}var root = Path.GetFullPath(targetDir);foreach (var entry in archive.Entries){ var path = Path.GetFullPath(Path.Combine(root, entry.FullName)); if (!path.StartsWith(root + Path.DirectorySeparatorChar)) throw new IOException("Geçersiz arşiv girdisi");
entry.ExtractToFile(path, overwrite: true);}Düzeltme
Bölüm başlığı “Düzeltme”Açmadan önce her girdinin tam yolunu hesaplayın ve hedef kök dizinin içinde kaldığını doğrulayın; aksi halde işlemi reddedin.