Zip slip (ARCH6106)
Anahtar ruby.security.zip-slip · Önem error · Kategori security · CWE CWE-22
Arşiv girdi yollarını doğrulamadan diske yazmak, ../ içeren girdilerin hedef dizinin dışına yazılmasına ve dizin gezinme saldırısına olanak tanır.
Hatalı
Bölüm başlığı “Hatalı”Zip::File.open(archive) do |zip| zip.each { |entry| entry.extract(File.join(dest, entry.name)) }endroot = File.expand_path(dest)Zip::File.open(archive) do |zip| zip.each do |entry| path = File.expand_path(File.join(root, entry.name)) raise "zip slip" unless path.start_with?("#{root}/") entry.extract(path) endendDüzeltme
Bölüm başlığı “Düzeltme”Her girdinin hedef yolunu çözümleyip hedef kökün içinde kaldığını doğrulayın; aksi halde çıkarımı reddedin.