Lo scorso 10 dicembre 2021 i media per la sicurezza hanno riportato la scoperta della vulnerabilità “CVE-2021-44228” nella libreria Apache Log4j. Questa vulnerabilità ha un livello molto altro di criticità (CVSSv3 Range: 9.0-10.0).
Per aggiornamenti continui sui prodotti impattati, vi rimando al bollettino di “VMware” e del “CSIRT” (Agenzia per la Cybersicurezza Nazionale).
In questo articolo ci occupiamo di applicare il workaround rilasciato da VMware per mitigare questa criticità sui vCenter 7.0, 6.7 e 6.5.
La soluzione prevede l’esecuzione di due script.
- Script Phyton “vmsa-2021-0028-kb87081.py“.
- Script Phyton “remove_log4j_class.py“.
ENTRAMBI GLI SCRIPT sono necessari per la risoluzione della vulnerabilità. VMware sta lavorando per unificarli.
Esecuzione del Primo Script “vmsa-2021-0028-kb87081.py”
Nota: in questo articolo, ho deciso di non utilizzare WinSCP per copiare i file. Il motivo viene descrittto nella nota a fondo pagina.
Procedura:
- Collegarsi tramite PuTTY in SSH al vCenter:
- Eseguire l’accesso con l’utente “root”:
- lanciare BASH inserendo il comando “Shell” e premere il tasto invio:
- Creare nella “/temp” del vCenter un file vuoto con il nome “vmsa-2021-0028-kb87081.py“ eseguendo il comando:
vi /tmp/vmsa-2021-0028-kb87081.py
…file vuoto:
Nel passaggio successivo, andremo a copiare il contenuto del file Phyton rilasciato da VMware, nel file vuoto appena creato.
- Scaricare il file “vmsa-2021-0028-kb87081”:
- Aprire il file scaricato con notepad++
- Con il tasto destro del mouse cliccare su “Select All” per selezionare tutto il contenuto:
…file selezionato:
- Con il tasto destro del mouse cliccare su “Copy”:
- Ritornare nella schermata di PuTTY (sul file vuoto) e cliccare con il pulsante destro del mouse per incollare il contenuto dello script appena copiato:
- Salvare il contenuto usando i tasti “Esc” e poi “:wq!” seguito dal tasto Invio:
- Eseguire il seguente comando per iniziare la procedura:
python /tmp/vmsa-2021-0028-kb87081.py
- Confermare premendo il tasto “Y”:
…inizio della procedura:
FIne del primo script.
Esecuzione del Secondo Script “Remove_log4j_class.py“
Rimanendo sempre nella schermata PuTTY, dello scritp precedente, eseguiamo il secono file Phyton.
Procedura:
- Creare nella “/temp” un file vuoto con il nome “remove_log4j_class.py “ eseguendo il comando:
vi /tmp/remove_log4j_class.py
…file vuoto:
Nel passaggio successivo, andremo a copiare il contenuto del file Phyton, nel file vuoto appena creato.
- Scaricare il file “remove_log4j_class.py”:
https://kb.vmware.com/sfc/servlet.shepherd/version/download/0685G00000cR1f8QAC
- Aprire il file scaricato con notepad++
- Con il tasto destro del mouse cliccare su “Select All” per selezionare tutto il contenuto:
…file selezionato:
- Con il tasto destro del mouse cliccare su “Copy”:
- Ritornare nella schermata di PuTTY (sul file vuoto) e cliccare con il pulsante destro del mouse per incollare il contenuto dello script appena copiato:
- Salvare il contenuto usando i tasti “Esc” e poi “:wq!” seguito dal tasto Invio:
- Eseguire il seguente comando per iniziare la procedura:
python /tmp/remove_log4j_class.py
- Confermare premendo il tasto “Y”:
…inizio della procedura:
Procedura conclusa:
Verifiche del Primo Script “vmsa-2021-0028-kb87081.py”
1) Verificare che i servizi ”vMon” siano stati avviati con il nuovo parametro:
-Dlog4j2.formatMsgNoLookups=true
- eseguire il commando:
ps auxww | grep formatMsgNoLookups
2) Verificare che le modifiche di “Update Manager” siano visualizzate in “System Properties” nell’output dei due comandi seguenti:
- eseguire il primo comando per accedere alla cartella “/jetty“:
cd /usr/lib/vmware-updatemgr/bin/jetty/
- Eseguire il secondo commando per verificare la “System Properties”:
System Properties:
——————
log4j2.formatMsgNoLookups = true (/usr/lib/vmware-updatemgr/bin/jetty/start.ini)
…tornare nella root principale
3) Verificare se il servizio “Analytics” è cambiato dallo stato “1” allo stato “0”
- Eseguire il comando:
grep -i jndilookup /usr/lib/vmware/common-jars/log4j-core-2.8.2.jar | wc -l
NOTA: Solo per iI vCenter 6.5 le verifiche da fare sono due invece che tre. Precisamente la prima e la terza delle verifiche descritte sopra:
Verifiche per il Secondo Script “remove_log4j_class.py”
- Verificare che lo script abbia rimosso correttamente JndiLookup.class da tutti i file java con il seguente comando:
python /tmp/remove_log4j_class.py -r
A titolo informativo, riporto l’impostazione dei paramentri prima dell’esecuzione degli script Phyton.
- Prima Verifica:
- Seconda Verifica:
- Terza Verifica:
Al momento della stesura di questo documento, l’esecuzione dei due script Phyton è l’unica soluzione per mitigare la vulnerabilità “Log4j” sui vCenter. Se ci saranno ulteriori aggiornamenti, l’articolo verrà adattato alle nuove modifiche.
Nota: i due file Phyton possono essere copiati nella “/tmp” del vCenter utilizzando WinSCP (attivando “BASH Shell”), tuttavia può succedere che non si riesca a copiarli e che venga visualizzato un errore tipo:
Host is not communicating for more than 15 seconds. If the problem repeats, try turning off ‘Optimize connection buffer size’.
Oppure questo messaggio:
kB 2107727: Error when uploading files to vCenter Server Appliance using WinSCP (2107727)
Per ovviare a questo inconveniente, nel mio articolo, ho preferito far creare un file vuoto nella “/tmp” e copiare il contenuto del file Phyton al suo interno. In questo modo si bypassano tutti i possibili inconvenienti.
Alessandro Romeo