VxRail:管理員補救 Apache Log4Shell 漏洞 (CVE-2021-44228、CVE-2021-45046)

摘要: 本文概述可在 VxRail Manager 上執行的指令檔,以補救 CVE-2021-44228、CVE-2021-45046 和 CVE-2021-4104 (Dell 文章 DSN-2021-007,VMware 文章 VMSA-2021-0028) 中所述的 Apache Log4Shell 漏洞。

本文章適用於 本文章不適用於 本文無關於任何特定產品。 本文未識別所有產品版本。

說明

Apache 軟體基金會發佈關於嚴重 Apache Log4j 遠端代碼執行漏洞的相關資訊,之前在 GitHub Advisory Database 中稱為 Log4Shell (亦於 CVE-2021-44228CVE-2021-45046CVE-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 裝置 VM 中的漏洞。
  • 針對 vCenter Server Appliance (vCSA) 和 NSX 等 VxRail Manager 以外的其他元件,必須個別進行緩解,且並未包含在本指令檔內。
  • 此外,此指令檔不會補救任何在 VM 內部執行的應用程式或服務,這些應用程式或服務可能會暴露於漏洞中。Dell EMC 建議所有客戶要求其應用程式或軟體廠商檢查在 VM 中執行的服務,以確保其不受影響。

下列 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 Appliance 軟體 4.7.541
  • VxRail Appliance 軟體 4.5.471

建議升級至包含修正程式的 VxRail 軟體版本。
對於無法立即升級的客戶,建議使用此指令檔。注意:

如果您的 VxRail 7.0.xxx 叢集是由客戶管理的 vCenter 管理,請參閱下列文章,以瞭解可能適用的其他考慮:

 

 

舊版修補腳本的其他注意事項:

如果您以前執行過較早的更新指令檔 (早於 fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip) 中,請注意下列事項:

    • 該腳本使用”.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 升級:
      • 繼續進行 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 (例如 WinSCP 等 SCP 用戶端) 將 .zip 檔案上傳至 VxRail Manager。
  3. 登入 VxRail Manager VM 主控台,或以 mystic 使用者使用 SSH。 
  4. 將目錄變更為您上傳 .zip 檔案,並使用「解壓縮」命令將其解壓縮:
    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 的 root 使用者身分登入: 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 補救措施。

以下文章連結到 VMware 文章,其中涵蓋其產品的因應措施和修正程序 ,VxRail: Log4Shell (CVE-2021-44228/CVE-2021-45046/CVE-2021-4104) 和 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 中,因此指令檔可運作,且驗證成功。
 

根據您的 VxRail Manager 版本而定,上述範例輸出內的 jar 檔案名稱可能會有所不同。使用您從以上 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
向其他 Dell 使用者尋求您問題的答案
支援服務
檢查您的裝置是否在支援服務的涵蓋範圍內。