VxRail: soluzione alternativa di VxRail Manager per la vulnerabilità Apache Log4Shell (CVE-2021-44228, CVE-2021-45046 e CVE-2021-4104)
Summary:
Questo articolo descrive uno script che può essere eseguito su VxRail Manager per risolvere la vulnerabilità Apache Log4Shell descritta in CVE-2021-44228, CVE-2021-45046 e
CVE-2021-4104 (articolo Dell DSN-2021-007, articolo VMware VMSA-2021-0028).
...
Please select a product to check article relevancy
This article applies to This article does not apply toThis article is not tied to any specific product.Not all product versions are identified in this article.
Apache Software Foundation ha pubblicato informazioni su un problema critico di vulnerabilità nell'esecuzione remota del codice della libreria Apache Log4j, noto come Log4Shell, come indicato in GitHub Advisory Database (spiegato in dettaglio anche in CVE-2021-44228, CVE-2021-45046 e CVE-2021-4104). VxRail Manager è esposto al problema descritto nella vulnerabilità.
Nota: sono riportati due CVE aggiuntivi, CVE-2021-45046 e CVE-2021-4104, indicanti che il suggerimento iniziale di risolvere il problema descritto in CVE-2021-44228 (Log4j 2.x) non rappresenta una correzione completa.
Per ulteriori informazioni su questi CVE, consultare i seguenti articoli:
Nota: lo script di questo articolo è stato aggiornato alla versione 1.1.2, che include le correzioni consigliate per tutti e tre i CVE: CVE-2021-44228, CVE-2021-45046 e CVE-2021-4104.
Nello script precedente è stato rilevato un ulteriore problema che potrebbe comportare il restore di un file interessato su VxRail Manager da un archivio di sistema. Anche questo problema è stato risolto in questa versione.
Se sono stati utilizzati script precedenti forniti con questo articolo, scaricare lo script più recente (1.1.2) ed eseguirlo su VxRail Manager per assicurarsi di disporre della correzione completa.
Requisiti e ambito
L'ambito delle procedure di correzione descritte in questo articolo è il seguente:
Questo articolo è applicabile a VxRail Manager nelle versioni VxRail 4.5.x, 4.7.x e 7.0.x, oltre a VxRail Manager nelle versioni VCF 3.x e 4.x.
Lo script e i passaggi forniti correggono la vulnerabilità solo nella macchina virtuale dell'appliance VxRail Manager.
Altri componenti al di fuori di VxRail Manager, come vCenter Server Appliance (vCSA), NSX e così via, devono essere gestiti separatamente e non sono inclusi in questo script.
Inoltre, lo script non corregge eventuali applicazioni o servizi in esecuzione all'interno delle macchine virtuali che potrebbero essere esposti alla vulnerabilità. Dell EMC consiglia a tutti i clienti di verificare con i propri fornitori di applicazioni o software i servizi in esecuzione nelle macchine virtuali, per assicurarsi che non siano interessati dal problema.
I link ai prodotti VMware interessati e alle potenziali soluzioni alternative sono descritti in dettaglio nel seguente articolo VMware VMSA:
Il file fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip allegato a questo articolo contiene lo script solo per VxRail Manager.
Versioni di VxRail con correzione inclusa
Questo problema è stato risolto nelle seguenti versioni del software VxRail:
VxRail Package Software 7.0.320
VxRail Appliance Software 4.7.541
VxRail Appliance Software 4.5.471
Si consiglia di eseguire l'aggiornamento a una versione del software VxRail che include la correzione. Lo script è consigliato per i clienti che non riescono a eseguire immediatamente l'aggiornamento.
Nota: se il cluster VxRail 7.0.xxx è gestito da un'istanza di vCenter gestita dal cliente, fare riferimento al seguente articolo per ulteriori considerazioni potenzialmente valide:
Per risolvere il problema, attenersi alla seguente procedura:
Scaricare il file fixlog4j-CVE-2021-44228-CVE-2021-45046-v-1-1-2.zip allegato a questo articolo.
Eseguire l'upload del file .zip in VxRail Manager utilizzando un utente mystic su SCP (WinSCP è un esempio di client SCP che può essere utilizzato).
Accedere alla console della macchina virtuale VxRail Manager oppure tramite SSH utilizzando l'utente mystic.
Passare alla directory in cui è stato eseguito l'upload del file .zip ed estrarlo utilizzando il comando 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
Rendere eseguibile lo script utilizzando il comando chmod: mystic@vxrm:~> chmod +x fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
Accedere come utente root di VxRail Manager utilizzando il comando su: mystic@vxrm:~> su - Password:
Assicurarsi di essere nella stessa directory in cui è stato decompresso il pacchetto dello script: vxrm:~ # cd /home/mystic vxrm:/home/mystic #
Eseguire lo script: vxrm:/home/mystic # ./fixlog4j-CVE-2021-44228-CVE-2021-45046.sh
Esempio di output dello script: 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
Nota: la correzione di tutti i file e l'avvio dei servizi di VxRail Manager possono richiedere da 5 a 10 minuti.
Attendere almeno 10 minuti se si prevede di eseguire uno dei passaggi di convalida manuale riportati di seguito.
Esistono diverse versioni della libreria lib4j-core a seconda della versione di VxRail Manager.
Lo script è stato progettato per correggere VxRail Manager indipendentemente dalla versione di lib4j-core inclusa con la versione specifica di VxRail Manager.
L'output di cui sopra derivante dall'esecuzione dello script può mostrare l'aggiornamento di diversi file a seconda della versione di lib4j-core inclusa.
Nota: Se si esegue un aggiornamento di VxRail a un'altra build di VxRail che non contiene una correzione, questo script deve essere eseguito una seconda volta per applicare nuovamente la correzione.
NOTA: la mitigazione completa per VxRail richiede l'implementazione della soluzione alternativa di VMware per vCenter Server Appliance (vCSA) e della correzione su VxRail Manager eseguita da questo script.
Per risolvere il problema, lo script rimuove il file JndiLookup.class dai file JAR lib4j-core-*.
Un file JAR è un formato di compressione Java per includere più classi, metadati e altri programmi Java in un unico file. Il concetto è simile a quello di un file ZIP e si basa sul formato ZIP. L'esecuzione dello script verifica che ogni file JAR sia stato aggiornato correttamente.
Per eseguire una convalida manuale del funzionamento dello script, è possibile verificare se i file JAR log4j-core-* presenti in VxRail Manager contengono ancora il file JndiLookup.class interessato. Se lo script funziona, non viene visualizzato alcun output per i comandi riportati di seguito, a conferma del fatto che il file JndiLookup.class interessato non è più presente nel file JAR.
Convalida con comando automatizzato
È possibile utilizzare il comando seguente su VxRail Manager per eseguire la scansione di tutti i file log4j-core-xxxx.jar presenti in VxRail Manager e verificare se contengono il file JndiLookup.class interessato:
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
Output di esempio (sistema aggiornato):
/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
Nel precedente esempio, il file JndiLookup.class non è presente nel file JAR, quindi lo script funziona e la verifica ha esito positivo.
Di seguito è riportato l'output di esempio di un sistema interessato che deve essere aggiornato:
/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
Nell'esempio precedente, il file JndiLookup.class interessato è ancora presente nel file JAR log4j-core-2.13.3.jar.
Convalida con controllo manuale di ciascun file
Per identificare rapidamente ciascun file log4j-core-xxxx.jar presente in VxRail Manager, eseguire il comando seguente (l'output viene formattato in un comando utilizzabile):
vxrm:/home/mystic # find / -name log4j-core*jar -print |grep -v log4jbak | awk '{print("unzip -l " $1 "|grep JndiLookup.class")}'
Dall'output di esempio riportato sopra, eseguire ciascun comando manualmente per verificare se viene rilevato il file JndiLookup.class interessato:
vxrm:/home/mystic # unzip -l /mystic/connectors/eservice/lib/log4j-core-2.13.0.jar|grep JndiLookup.class vxrm:/home/mystic #
Nell'esempio precedente, il file JndiLookup.class non è presente nel file JAR, quindi lo script funziona e la verifica ha esito positivo.
Nota: i nomi dei file JAR nell'output di esempio riportato sopra possono variare a seconda della versione di VxRail Manager in uso. Utilizzare l'output di esempio ricevuto dal comando find precedente.
Esempio di output per un file JAR ancora interessato e contenente il file JndiLookup.class:
Nell'esempio precedente, il file JndiLookup.class interessato è ancora presente nel file JAR log4j-core-2.4.1.jar.
NOTA: ricordare sempre che la mitigazione completa per VxRail richiede l'implementazione della soluzione alternativa di VMware per vCenter Server Appliance (vCSA) e della correzione su VxRail Manager eseguita da questo script.