log4j 漏洞 - 如果 log4j 维护在类路径中但未在代码中实际使用,它是否仍然容易受到攻击?

Vas*_*ian 5 java log4j

这是针对 log4j-core jar 报告的CVE-2021-44228漏洞,并已在 Log4J v2.15.0 中修复。

我们通过 slf4j 使用 Logback API。这可以通过以下代码确认。

final StaticLoggerBinder binder = StaticLoggerBinder.getSingleton();
System.out.println(binder.getLoggerFactory());
System.out.println(binder.getLoggerFactoryClassStr());
//output:
//ch.qos.logback.classic.LoggerContext[default]
//ch.qos.logback.classic.util.ContextSelectorStaticBinder
Run Code Online (Sandbox Code Playgroud)

mvn dependency:tree在类路径中显示 log4j-core API(版本 <2.15)(直接依赖和传递依赖)。

由于在类路径中维护 log4j-core,应用程序是否仍然容易受到攻击?谢谢你!

Gho*_*ica 6

为了使漏洞对您构成风险,需要满足以下几个条件:

  1. 您的环境中存在相应的库
  2. 相应的库调用确实会在运行时在您的环境中发生
  3. 第 3 方用户想出了一种方法来获取他们(未经检查的)输入到该库调用

这里没有人可以告诉你是否“2”。和“.3”适用于您的环境。

但是:当你消除1.时,你就知道“2.”。和“3”。不再可能。或者反过来,只要您 100% 确信用户无法将数据输入您的系统并使其到达相应的 API,那么即使将库留在您的环境中,您也应该没问题。但正如所说,拥有图书馆是链条中强制性的第一个要素。因此,尽管存在这种情况,但明天可能有人会编写代码让您到达“2”和“3”!

因此,请记住高层管理人员的观点:最有可能的是,业务决策可能是:将风险降低到 0,因此请确保您的计算机上甚至没有相应的 JAR。


在我的 bigcorp 环境中,命令非常简单:不要浪费任何时间分析您的代码是否使用相应的接口。当您的项目包含易受攻击的 JAR 时,请立即升级。时期。