İçeriğe geç

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.

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

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.