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});
   }

相关检查器