SV.CLASSLOADER.INJ
使用 ClassLoader 可能访问来自不受信任来源的内容
当使用来自不受信任来源的 URL 创建 ClassLoader 类时,将报告此错误。
漏洞与风险
ClassLoader 对象允许在运行时引用和加载可执行数据。如果攻击者可注入替代的 URL 位置,则不受信任的代码可能会执行并访问正在运行的 JVM 或本地资源。
缓解与预防
不引用来自不受信任来源的 URL 实例化或更新 ClassLoader 对象可防止此问题。
漏洞代码示例 1
ClassLoader 正在使用不受信任的 URL 数据进行实例化。任何调用此 ClassLoader 来加载类数据都被视为存在威胁。
复制
public void createContent(final ServletRequest req)
throws MalformedURLException {
// Set up external reference to site
final String urlString = req.getParameter("url.data");
final URL url = new URL(urlString);
final URLClassLoader loader = new URLClassLoader({url});
...
}
修正代码示例 1
URL 现在采用硬编码,系统可验证内容是否可信。
复制
public void testExternalReference()
throws MalformedURLException {
// Set up external reference to known site
final String urlString = “http://verified.content.com/example.jar”;
final URL url = new URL(urlString);
final URLClassLoader loader = new URLClassLoader({url});
}