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-44228CVE-2021-45046 和 CVE-2021-4104 中也有详细说明)。VxRail Manager 面临漏洞信息中概述的问题。提醒:
 

另外两个 CVE(即,CVE-2021-45046 和 CVE-2021-4104)已被报告,它们表明 CVE-2021-44228 (Log4j 2.x) 中描述的用于修复该问题的原始建议不是完整的修复方法。有关这些 CVE 的更多信息,请参阅以下文章:


有关这些 CVE 的更多信息,请参阅以下文章:

 

注意: 本文中的脚本已更新到版本 1.1.2,其中包括针对所有三个 CVE(CVE-2021-44228、CVE-2021-45046 和 CVE-2021-4104)建议的补救措施。


在之前的脚本中发现了一个其他问题,这可能会导致 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 软件版本。
建议无法立即升级的客户使用该脚本。提醒:

如果您的 VxRail 7.0.xxx 群集由客户管理的 vCenter 进行管理,请参阅以下文章,了解可能适用的其他注意事项:

 

 

关于传统修补脚本的其他注意事项:

如果您之前运行过较早的更新脚本(早于 fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zipVxRail Manager),请注意以下事项:

    • 该脚本使用”.bak“扩展名,并将它们保存在原始库目录中。
    • 这些 .bak 升级到 VxRail 8.0.380 或更高版本后,文件可能会导致服务启动问题,因为它们将与活动文件一起错误地加载到同一目录中。

按照以下步骤重新定位传统 .bak 文件并确保正常的系统操作:

  1. 检查现有.bak文件
    • find /mystic/connectors -name "log4j-core*.bak"
  2. 如果找到.bak文件,请将其移至安全位置:
    • mkdir -p /tmp/log4jbak
    • find /mystic/connectors -name "log4j-core*.bak" -type f -exec mv {} /tmp/log4jbak/ \;
  3. Check.bak文件不存在于 /mystic/connectors 文件夹,然后重新启动服务:
    • 情景 A — 如果您尚未执行 LCM 升级:
      • 继续升级。升级过程将自动重新启动所有服务。
    • 情景 B — 如果您已完成 LCM 升级,并且遇到 VC 插件故障:
      • 重新启动 VxRM (VxRail Manager)。
        • systemctl restart vmware-marvin
        • service runjars restart

修复步骤

针对该问题的修复执行以下步骤:

  1. 下载 fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip 本文所附的文件。
  2. 上传 .zip 使用 mystic 用户通过 SCP 将该 .zip 文件上传到 VxRail Manager(WinSCP 是可以使用的 SCP 客户端的示例)。
  3. 以 mystic 用户的身份登录到 VxRail Manager 虚拟机控制台或 SSH。 
  4. 将目录更改为您上传 .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
  5. 使用 chmod 命令使脚本可执行: chmod 命令:
    mystic@vxrm:~> chmod +x fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
  6. 使用 su 命令以 VxRail Manager 根用户身份登录: su 命令:
    mystic@vxrm:~> su -
    Password:
  7. 确保您位于解压脚本包的同一目录中:
    vxrm:~ # cd /home/mystic
    vxrm:/home/mystic #
  8. 运行脚本:
    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 分钟的时间。


修复所有文件并启动 VxRail Manager 服务可能需要 5 到 10 分钟。如果您计划执行以下任何手动验证步骤,请至少等待 10 分钟。

lib4j-core 库有若干个不同的版本,具体情况取决于 VxRail Manager 版本。

该脚本设计用于正确修复 VxRail Manager,而不管该版本 VxRail Manager 中包含的 lib4j-core 版本如何。

运行该脚本而生成的上述输出可能会显示不同文件正在进行更新,具体情况取决于随附的 lib4j-core 版本。提醒:
 

如果您将 VxRail 升级到另一个不包含修复的 VxRail 内部版本,则必须再次运行此脚本以重新应用该修复。

 

VxRail 的全面缓解需要 VMware 的 vCenter Server Appliance (vCSA) 解决方法以及实施此脚本在 VxRail Manager 上执行的修复。

有关 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 文件名可能因您的 VxRail Manager 版本而异。使用从上述 find 命令收到的输出示例。

仍受影响且包含受影响的 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 文件。

另请注意,VxRail 的全面缓解需要 VMware 的 vCenter Server Appliance (vCSA) 解决方法以及实施此脚本在 VxRail Manager 上执行的修复。

受影响的产品

VxRail, VxRail Appliance Family, VxRail Appliance Series, VxRail Software
文章属性
文章编号: 000194458
文章类型: How To
上次修改时间: 27 7月 2026
版本:  21
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。