İçeriğe geç

Dosya Dahil Etme Enjeksiyonu (ARCH6139)

Anahtar ruby.security.file-inclusion-injection · Önem critical · Kategori security · CWE CWE-98

Kullanıcı kontrolündeki bir yolu require/load ile dahil etmek, saldırganların rastgele dosyaları yüklemesine ve kod çalıştırmasına olanak tanır. Dahil edilen modülleri beyaz listeyle sınırlayın.

def load_plugin(name)
require "#{Rails.root}/plugins/#{params[:name]}"
end
PLUGINS = { "csv" => "plugins/csv", "pdf" => "plugins/pdf" }.freeze
def load_plugin(name)
path = PLUGINS.fetch(name) { raise ArgumentError, "unknown plugin" }
require Rails.root.join(path).to_s
end

Dahil etme yollarını dinamik olarak oluşturmayın; sabit bir beyaz listeden çözümleyin.