Dinamik kod çalıştırma (ARCH341)
Anahtar dotnet.security.dynamic-code-execution · Önem critical · Kategori security · CWE CWE-95
.NET’te eval yoktur; ama Roslyn scripting, PowerShell barındırma, System.Linq.Dynamic, DataTable.Compute ve baytlardan assembly yükleme, çalışma zamanındaki bir dizgiyi çalışan koda çevirir. Sabit bir betik tasarım kararıdır; değişkenle gelen betik girdisini bekleyen bir uzaktan kod çalıştırmadır.
Hatalı
Bölüm başlığı “Hatalı”public async Task<object> Run(string expression){ return await CSharpScript.EvaluateAsync(expression);}public decimal Run(Operation op, decimal a, decimal b) => op switch{ Operation.Add => a + b, Operation.Multiply => a * b, _ => throw new ArgumentOutOfRangeException(nameof(op))};Düzeltme
Bölüm başlığı “Düzeltme”Girdiyi sabit bir işlem kümesine eşleyin (enum/switch, kodda kurulan expression tree). Betik çalıştırma bir ürün özelliğiyse kum havuzuna alın ve betik kaynaklarını izin listesiyle sınırlayın.