Workaround per vulnerabilità CVE-2021-44228 (VMSA-2021-0028) vCenter Server 7.0, 6.7 e 6.5

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.

  1. Script Phyton “vmsa-2021-0028-kb87081.py“.
  2. 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.

  • 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.

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:

FIne del secondo Script.

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