Dinamik Kod Çalıştırma (ARCH4131)
Anahtar java.security.dynamic-code-execution · Önem critical · Kategori security · CWE CWE-95
Kullanıcı girdisinden gelen bir string’i bir betik motoru (ScriptEngine) ile çalıştırmak doğrudan uzaktan kod çalıştırmaya (RCE) yol açar. Kod yerine veriyi yorumlayan güvenli bir yapı kullanın.
Hatalı
Bölüm başlığı “Hatalı”ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");Object result = engine.eval(request.getParameter("expr")); // kullanıcı kodu çalıştırılır// Kullanıcı girdisini kod olarak çalıştırma; güvenli bir ifade değerlendirici kullanExpression expr = new SpelExpressionParser().parseExpression(allowedFormula);Object result = expr.getValue(new StandardEvaluationContext(safeRoot));Düzeltme
Bölüm başlığı “Düzeltme”Kullanıcı girdisini hiçbir zaman kod olarak değerlendirmeyin; sınırlı bir kural/ifade değerlendiricisi veya izin listeli işlemler kullanın.