Dinamik Kod Çalıştırma (ARCH6131)
Anahtar ruby.security.dynamic-code-execution · Önem critical · Kategori security · CWE CWE-95
eval, instance_eval veya class_eval ile güvenilmeyen dizeleri kod olarak çalıştırmak, en geniş uzaktan kod çalıştırma vektörüdür. Dinamik kod değerlendirmesinden kaçının.
Hatalı
Bölüm başlığı “Hatalı”def compute(expr) eval(expr)end
compute(params[:formula])OPERATIONS = { "sum" => ->(a, b) { a + b }, "max" => ->(a, b) { [a, b].max } }
def compute(name, a, b) op = OPERATIONS.fetch(name) { raise ArgumentError, "unsupported" } op.call(a, b)endDüzeltme
Bölüm başlığı “Düzeltme”eval ailesini kaldırın; izin verilen işlemleri açık bir eşlemeyle dağıtın.