Description
该漏洞是因为在Java或者C#语言中使用反射机制时安全方面考虑不周所致。
攻击者可以在应用中创建开放者预料之外的控制流路径,从而可能绕过了访问控制等安全机制。对漏洞的利用可能会造成代码注入等危害。
Risk Factors
如果一个攻击者提供的输入用于应用确定实例化什么类或者执行什么方法,那么就有可能构造出开发者设定之外的控制流路径。精心设计的攻击向量可以帮助攻击者绕开认证或者访问控制检查,也有可能让应用以不可预料的方式活着攻击者期望的方式运作。
结合其他漏洞会让情况变得更加不可收拾,比如,攻击者如果可以上传文件到应用的classpath或者增加新的对象到应用的classpath中,那么攻击者实际上就可以执行任何恶意的代码,
Examples
开放人员用反射的主要原因是为了实现自己的命令分发机制。下面的代码是不实用反射的命令分发逻辑。
String command= request.getParameter("command"); Executor executor= null; if (command.equals("Add")) { executor= new AddCommand(); } else if (command.equals("Modify")) { executor = new ModifyCommand(); } else { throw new UnknownCommandException(); } executor.run(request);
如果用了反射重构上面的代码&#x