首页 > 解决方案 > 如何判断哪些第三方 Java 库正在使用 Log4j 1.x?

问题描述

为了解决客户端标记的CVE-2019-17571,我正在尝试将我们基于 jfreechart 的 Rails 应用程序中使用的 Log4j 1.2.x 升级到 Log4j 2(按照此处的说明进行操作)。但是,我不知道哪个 Java 库仍在使用旧的 Log4j 1.x 导入。这是我在 Rails 日志中看到的错误(Java 图表应用程序是通过RJB加载的):

$ tail -f production_log.2020-03-29

FATAL 2020-03-29 16:58:49 30512 NoClassDefFoundError (org/apache/log4j/Logger):
  lib/chart_interface.rb:24:in 'method_missing'
  lib/chart_interface.rb:24:in 'createChart'
  app/controllers/dash_controller.rb:565:in 'resources_info'

这是找出哪些第三方 Java 库正在使用旧的 Log4j 1.x 导入的好方法吗?

$ ls -ltr
total 8756
-rw-r----- 1 root  ainet  391430 Oct  5 02:16 log4j-1.2.15.jar.old
-rwxr-x--- 1 root  ainet 1801249 Mar 26 03:15 wig.jar
-rwxr-x--- 1 root  ainet  288911 Mar 26 03:15 tcommon-2.1.jar
-rwxr-x--- 1 root  ainet  657841 Mar 26 03:15 postgresql-9.4-1202.jdbc42.jar
-rwxr-x--- 1 root  ainet 1702810 Mar 26 03:15 log4j-core-2.13.1.jar
-rwxr-x--- 1 root  ainet  292243 Mar 26 03:15 log4j-api-2.13.1.jar
-rwxr-x--- 1 root  ainet 1425744 Mar 26 03:15 jfreechart-1.0.13.jar
-rwxr-x--- 1 root  ainet   62103 Mar 26 03:15 commons-pool-1.3.jar
-rwxr-x--- 1 root  ainet  121757 Mar 26 03:15 commons-dbcp-1.2.2.jar
-rw-r--r-- 1 ainet ainet  330507 Mar 26 03:50 jcommon-1.0.24.jar

$ grep -R apache\.log4j
Binary file log4j-1.2.15.jar.old matches

唯一的打击是在旧的 jar 文件中,但RJB正在抱怨NoClassDefFoundError.

标签: javalog4jlog4j2noclassdeffounderrorrjb

解决方案


推荐阅读