使用外部控制的输入来选择类或代码(“不安全反射”)

时间:2019-07-12 06:54:09

标签: java reflection

此对java.lang.Class.forName()的调用以不安全的方式使用反射。攻击者可以指定要实例化的类名称,这可能会在应用程序中创建意外的控制流路径。根据使用反射的方式,攻击向量可能使攻击者绕过安全检查或以其他方式导致应用程序以异常方式运行。即使对象没有实现指定的接口并且抛出ClassCastException,不受信任的类名的构造函数也将已经执行。 forName()的第一个参数包含污染数据。受污染的数据源自对AnnotationVirtualController.vc_taintobj的早期调用。

Action action = (Action)Class.forName("com.att.nis.esbcaspr.actions."
                 esbAfDataContext.getFlowToProcess() + "Action").newInstance();

action.execute(EsbEventNotification, esbAfDataContext);

对照白名单和黑名单来验证类名,以确保仅产生预期的行为。

0 个答案:

没有答案