VxRail:管理器修复 Apache Log4Shell 漏洞(CVE-2021-44228、CVE-2021-45046)
摘要: 本文概述了可在 VxRail Manager 上运行以修复 CVE-2021-44228、CVE-2021-45046 和 CVE-2021-4104(戴尔文章 DSN-2021-007、VMware 文章 VMSA-2021-0028)中描述的 Apache Log4Shell 漏洞的脚本。
说明
Apache Software Foundation 发布了有关严重的 Apache Log4j 库远程代码执行漏洞问题的信息,根据 GitHub 咨询数据库,此漏洞问题被称为 Log4Shell(CVE-2021-44228、CVE-2021-45046 和 CVE-2021-4104 中也有详细说明)。VxRail Manager 面临漏洞信息中概述的问题。提醒:
有关这些 CVE 的更多信息,请参阅以下文章:
- Apache Log4j 安全漏洞(英文版)
- CVE-2021-45046
(Log4j 2.15)
- CVE-2021-4104
(Log4j 1.2)
在之前的脚本中发现了一个其他问题,这可能会导致 VxRail Manager 上从系统归档还原受影响的文件。此问题也已经在这个版本中得到解决。
如果您使用了本文提供的任何以前的脚本,那么请下载最新的脚本 (1.1.2),并在 VxRail Manager 上运行它,以确保获得完整的修复。
要求和范围
本文中的修复步骤涵盖的范围是:
- 本文适用于 VxRail 4.5.x、4.7.x 和 7.0.x 版本中的 VxRail Manager 以及 VCF 3.x 和 4.x 版本中的 VxRail Manager。
- 提供的脚本和修复步骤仅修复 VxRail Manager 设备虚拟机中的漏洞。
- VxRail Manager 之外的其他组件,例如 vCenter Server Appliance (vCSA)、NSX 等,必须单独缓解,并且不在此脚本中。
- 此外,此脚本不会修复在虚拟机中运行的任何可能受到漏洞影响的应用程序或服务。Dell EMC 建议所有客户与其应用程序或软件供应商联系,了解在虚拟机中运行的服务,以确保它们不受影响。
下列 VMware VMSA 文章详细介绍受影响的 VMware 产品和潜在解决方法的链接:
VMware 在以下文章中提供了一个脚本,用于在 vCenter Server Appliance 中自动执行修复:
本文附有文件 fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip 仅包含适用于 VxRail Manager 的脚本。
包含修复的 VxRail 版本
此问题已在下列 VxRail 软件版本中得到解决:
- VxRail 软件包软件 7.0.320
- VxRail 一体机软件 4.7.541
- VxRail 一体机软件 4.5.471
建议升级到包含修复的 VxRail 软件版本。
建议无法立即升级的客户使用该脚本。提醒:
关于传统修补脚本的其他注意事项:
如果您之前运行过较早的更新脚本(早于 fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zipVxRail Manager),请注意以下事项:
-
- 该脚本使用”
.bak“扩展名,并将它们保存在原始库目录中。 -
这些
.bak升级到 VxRail 8.0.380 或更高版本后,文件可能会导致服务启动问题,因为它们将与活动文件一起错误地加载到同一目录中。
- 该脚本使用”
按照以下步骤重新定位传统 .bak 文件并确保正常的系统操作:
- 检查现有.bak文件
find /mystic/connectors -name "log4j-core*.bak"
- 如果找到.bak文件,请将其移至安全位置:
mkdir -p /tmp/log4jbakfind /mystic/connectors -name "log4j-core*.bak" -type f -exec mv {} /tmp/log4jbak/ \;
- Check.bak文件不存在于
/mystic/connectors文件夹,然后重新启动服务:
-
- 情景 A — 如果您尚未执行 LCM 升级:
- 继续升级。升级过程将自动重新启动所有服务。
- 情景 A — 如果您尚未执行 LCM 升级:
-
- 情景 B — 如果您已完成 LCM 升级,并且遇到 VC 插件故障:
- 重新启动 VxRM (VxRail Manager)。
systemctl restart vmware-marvinservice runjars restart
- 重新启动 VxRM (VxRail Manager)。
- 情景 B — 如果您已完成 LCM 升级,并且遇到 VC 插件故障:
修复步骤
针对该问题的修复执行以下步骤:
- 下载
fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip本文所附的文件。 - 上传
.zip使用 mystic 用户通过 SCP 将该 .zip 文件上传到 VxRail Manager(WinSCP 是可以使用的 SCP 客户端的示例)。 - 以 mystic 用户的身份登录到 VxRail Manager 虚拟机控制台或 SSH。
- 将目录更改为您上传
.zip文件并使用 unzip 命令将其解压:mystic@vxrm:~> unzip fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip Archive: fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip inflating: fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
- 使用 chmod 命令使脚本可执行:
chmod命令:mystic@vxrm:~> chmod +x fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
- 使用 su 命令以 VxRail Manager 根用户身份登录:
su命令:mystic@vxrm:~> su - Password:
- 确保您位于解压脚本包的同一目录中:
vxrm:~ # cd /home/mystic vxrm:/home/mystic #
- 运行脚本:
vxrm:/home/mystic # ./fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
脚本输出示例:
Stop MARVIN and runjars service before patching the system /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar is affected by CVE-2021-44228 and CVE-2021-45046, need to apply patch patching /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar Successfully patched /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar is affected by CVE-2021-44228 and CVE-2021-45046, need to apply patch patching /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar Successfully patched /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar To ensure there is no reload behavior, we need to pack the .war file as well. looks like /usr/lib/vmware-marvin/marvind/webapps/ROOT.war contains the bad log4j-core library WEB-INF/lib/log4j-core-2.13.0.jar Archive: /usr/lib/vmware-marvin/marvind/webapps/ROOT.war inflating: WEB-INF/lib/log4j-core-2.13.0.jar Patching WEB-INF/lib/log4j-core-2.13.0.jar in /usr/lib/vmware-marvin/marvind/webapps/ROOT.war Repack /usr/lib/vmware-marvin/marvind/webapps/ROOT.war updating: WEB-INF/lib/log4j-core-2.13.0.jar (deflated 11%) Clean up the ROOT folder... Always apply a reboot of MARVIN and runjars services restart MARVIN MARVIN restart successfully restart runjars runjars restart successfully
修复所有文件并启动 VxRail Manager 服务可能需要 5 到 10 分钟。如果您计划执行以下任何手动验证步骤,请至少等待 10 分钟。
lib4j-core 库有若干个不同的版本,具体情况取决于 VxRail Manager 版本。
该脚本设计用于正确修复 VxRail Manager,而不管该版本 VxRail Manager 中包含的 lib4j-core 版本如何。
运行该脚本而生成的上述输出可能会显示不同文件正在进行更新,具体情况取决于随附的 lib4j-core 版本。提醒:
有关 Log4Shell (CVE-2021-44228/CVE-2021-45046/CVE-2021-4104) 和 VxRail 环境的信息,可找到涵盖其产品解决方法和修复的 VxRail 文章的链接
验证步骤
为了修正此问题,脚本会删除 JndiLookup.class 文件来自 lib4j-core-* jar 文件。
jar 文件是一种 Java 打包格式,用于在单个文件中包含多个类、元数据和其他 Java 程序。它在概念上类似于 .zip 文件,并且基于 .zip format脚本执行可验证每个 jar 文件是否已成功更新。
要执行脚本是否正常工作的手动验证,您可以检查 log4j-core-* jar VxRail Manager 上的文件仍包含受影响的 JndiLookup.class 文件中包含空格。如果它已起作用,您应该不会看到以下命令的输出,这可以确认受影响的 JndiLookup.class 文件不再存在于 jar 文件中。
JndiLookup.class 文件已固定在 log4j-core-2.17.1.jar 以及更高版本,因此尝试对这些 jar 文件运行验证步骤会显示 JndiLookup.class 文件存在,但问题未解决。您可以放心地忽略它 JndiLookup.class 已修复版本的文件 log4j-core。
使用自动化命令进行验证
可以在 VxRail Manager 上运行以下命令,以扫描所有 log4j-core-xxxx.jar VxRail Manager 上存在的文件,并检查它们是否包含受影响的文件 JndiLookup.class 文件,请执行以下操作:
vxrm:/home/mystic # for myfile in `find / -name log4j-core*jar -print |grep -v log4jbak`; do echo $myfile; unzip -l $myfile | grep JndiLookup.class; done
输出示例(更新的系统):
/mystic/connectors/eservice/lib/log4j-core-2.13.0.jar /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar
在上面的示例中, JndiLookup.class 文件不存在于 jar 中,因此脚本正常工作,并且验证成功。
以下是必须更新的受影响系统的输出示例:
/mystic/connectors/eservice/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class /mystic/connectors/cluster/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.3.jar 2892 2020-05-10 12:08 org/apache/logging/log4j/core/lookup/JndiLookup.class
在上面的示例中,纯文本 JndiLookup.class 文件仍存在于 log4j-core-2.13.3.jar jar 文件。
以下是具有已修复或更新的系统的输出示例 log4j-core 库,其中看到 JndiLookup.class 文件可以忽略:
/usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
/mystic/connectors/eservice/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
/mystic/connectors/cluster/lib/log4j-core-2.17.1.jar
3158 2021-12-27 17:30 org/apache/logging/log4j/core/lookup/JndiLookup.class
在上面的示例中,您可以看到 JndiLookup.class 文件,但该问题的修复已在 log4j-core-2.17.1.jar。
通过手动检查每个文件进行验证
要快速识别任何 log4j-core-xxxx.jar VxRail Manager上存在的文件,运行以下命令(这也会将输出格式化为可用的命令):
vxrm:/home/mystic # find / -name log4j-core*jar -print |grep -v log4jbak | awk '{print("unzip -l " $1 "|grep JndiLookup.class")}'
输出示例:
unzip -l /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar|grep JndiLookup.class unzip -l /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar|grep JndiLookup.class unzip -l /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar|grep JndiLookup.class
在上面的示例输出中,手动运行每个命令,以查看它们是否检测到受影响的 JndiLookup.class 文件,请执行以下操作:
vxrm:/home/mystic # unzip -l /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic # vxrm:/home/mystic # unzip -l /mystic/connectors/cluster/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic # vxrm:/home/mystic # unzip -l /usr/lib/vmware-marvin/marvind/webapps/ROOT/WEB-INF/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic #
在上面的示例中, JndiLookup.class 文件不存在于 jar 中,因此脚本正常工作,并且验证成功。
仍受影响且包含受影响的 jar 文件的输出示例
JndiLookup.class 文件,请执行以下操作:
vxrm:/home/mystic # unzip -l /mystic/connectors/cluster/lib/log4j-core-2.4.1.jar |grep JndiLookup.class 2576 2015-10-08 17:50 org/apache/logging/log4j/core/lookup/JndiLookup.class
在上面的示例中,纯文本 JndiLookup.class 文件仍存在于 log4j-core-2.4.1.jar jar 文件。