我显然担心这个漏洞,但我想知道我的机器上是否有这个库?
该机器是一个运行着几个node expressjs
框架的网络服务器nginx
,加上一个geoserver
sudo apt update && sudo apt upgrade
我今天用:修补了机器ubuntu-advantage-tools
,openssl
并libssl1.1
进行了升级。
我的Java版本是:
openjdk version "1.8.0_292" OpenJDK Runtime Environment (build 1.8.0_292-8u292-b10-0ubuntu1~18.04-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
这geoserver
是 v2.13.0,我相信这是唯一可能使用 log4j 的程序。我的 geoserver 是独立于平台的二进制版本(不是 Tomcat 版本),jetty
我认为它用作其 web 服务器。
我如何才能知道我拥有的是哪个版本的 log4j?
答案1
您可以在 apt 中检查它是否已安装:
apt list --installed | grep -i log4j
但是您仍然需要检查这一点来查找可能在某处运行的文件:
locate log4j
另外,最好检查一下您是否在服务器上运行 Java 运行时:
java -version
如果您甚至没有运行 java 运行时,那么 log4j 可能与该服务器无关,因为它是一个 java 库。
可能还有其他地方需要检查。
答案2
更新:2021-12-18...
请记住始终从下面列出的资源中查看最新信息
CVE-2021-45105... 2.16.0 和 2.12.2 不再是有效的补救措施!当前修复版本是 2.17.0 (Java 8) 和 2.12.3 (Java 7)。所有其他 Java 版本都必须采取权宜之计(从 log4j-core JAR 中移除/删除 JndiLookup.class 文件)。
我已相应地更新了下面的消息。
直接回答问题:
去Reddit 帖子:log4j_0day_being_exploited
和ctrl+f表示.class and .jar recursive hunter
。在那里运行程序,如果发现任何问题,则进行补救。
然后转到同一网站并+ ctrl。搜索这些列表以查看您是否正在运行任何受影响的软件。如果正在运行并且有可用更新,请更新。fVendor Advisories
- 更多资源
补救措施:
CVE-2021-45046...CVE-2021-44228...CVE-2021-45105
虽然大多数需要知道的人可能已经知道足够多的信息来做他们需要做的事情,但我认为我还是会把它放在一边以防万一......
- 遵循这些资源中的指导...它可能会改变,但
截至 2021-12-18
这基本上
- 如果可能的话删除 log4j-core JAR 文件
- 从两台跑步机上立即修复并且
- 在您的源代码/源代码管理文件中,以防止将来的构建/发布/部署覆盖更改
- 如果无法实现(由于依赖性),请升级它们
- 如果您正在运行 Java 8,那么您可以升级到 log4j 2.17.0+
- 如果您正在运行 Java 7,那么您可以升级到 log4j 2.12.3
- 如果您正在运行旧版本的 Java,则需要升级到最新版本的 Java,然后使用最新版本的 Log4J
- 再次强调,这些变化必须同时在运行的机器和代码中发生
- 如果由于某种原因这两种情况都不可能实现......那么就只能采取非补救措施,即从 log4j-core JAR 中删除 JndiLookup.class 文件。
zip
在 Linux 上,使用大多数 Linux 发行版默认附带的命令, 有一个用于临时解决方案的单行命令。zip -q -d "$LOG4J_JAR_PATH" org/apache/logging/log4j/core/lookup/JndiLookup.class
- 在撰写本文时,大多数关于 Windows 权宜之计选项的在线指南都建议执行以下操作(再次...假设您无法执行上述删除 JAR 或升级选项之一):
- 安装类似 7-zip 的程序
- 找到所有 log4j-core JAR 文件并对每个文件执行以下操作...
- 重命名 JAR 以将扩展名更改为
.zip
- 使用 7-zip 解压 JAR(现在有
.zip
扩展名) - 从解压的文件夹中找到并删除 JndiLookup.class 文件
- 路径是
\\path\\to\\unzippedFolder\\org\\apache\\logging\\log4j\\core\\lookup\\JndiLookup.class
- 路径是
- 删除旧的 JAR 文件(现在扩展名为 .zip)
- 使用 7-zip 重新压缩该文件夹
- 重命名新的 .zip 文件夹,将扩展名更改为
.jar
- 还有一些使用 Power Shell 的选项
- Reddit 帖子:log4j_0day_being_exploited
- ctrl+f表示“PowerShell”
如果您只需要处理 1 或 2 个 JAR 文件,并且您不介意安装 7-zip,或者可以使用 PowerShell 来执行此操作,那么这种方法就没问题。但是,如果您有大量 JAR 文件,或者您不想安装 7-zip 并且无法访问 Power Shell,我创建了一个开源 VBS 脚本,它可以为您完成此操作,而无需安装任何其他软件。https://github.com/CrazyKidJack/Windowslog4jClassRemover
阅读 README 和发行说明https://github.com/CrazyKidJack/Windowslog4jClassRemover/releases/latest
答案3
请注意,只有 log4j v2 存在此漏洞。较旧的 log4j v1 不受此漏洞影响。
重要的是,您不会在 apt 列表中找到它(如接受的答案中所述),因为它通常不会作为独立的应用程序或服务安装。log4j 是应用程序使用的 java 日志库,因此它会与另一个(Java)应用程序一起安装。
您需要在磁盘上的任意位置搜索名为 log4jv2*.jar 的文件以确定。locate
如果安装了其他文件,则会执行此操作sudo find / -iname log4j2*.jar
。
请注意,一些应用程序还会重命名 log4j2 JAR 文件。
另请注意,截至今天(2021 年 12 月 19 日),Log4J v2 中发现了另一个漏洞,可能允许远程拒绝服务,并且修补到 v2.16 的每个人都应该修补到 v2.17。
https://logging.apache.org/log4j/2.x/security.html#CVE-2021-45105
答案4
您可以搜索 log4j:
find / -type f -name log4*
输出结果会有log4j相关的jar文件,其中最重要的是核心文件。
阅读 README如何更新ubuntu 和 Centos 中的 log4j