GlobalProtect CVE-2024-5921: come risolvere?

Alla fine di novembre 2024, Palo Alto Networks ha pubblicato un avviso di sicurezza riguardante il client GlobalProtect, vale a dire l’applicazione che consente a client remoti di accedere al servizio VPN erogato dai firewall Palo Alto.

La vulnerabilità cui è soggetto il software, che consiste in una insufficiente validazione dei certificati SSL, espone i client al rischio di essere connessi a server VPN arbitrari, mascherati da server legittimi, al fine di installare software malevolo o di intercettare credenziali di accesso.

An insufficient certification validation issue in the Palo Alto Networks GlobalProtect app enables attackers to connect the GlobalProtect app to arbitrary servers. This can enable a local non-administrative operating system user or an attacker on the same subnet to install malicious root certificates on the endpoint and subsequently install malicious software signed by the malicious root certificates on that endpoint.

Tramite questa insufficiente validazione dei certificati, infatti, si può indurre il client vulnerabile a installare sul sistema dei certificati SSL self-signed e considerarli affidabili (trusted).

La caratteristica di questa vulnerabilià è che riguarda l’applicazione client, quindi non è sufficiente intervenire sul firewall per risolverla, ad esempio installando e attivando una versione non vulnerabile del bundle GlobalProtect. E’ necessario, invece, intervenire su tutti i client interessati al fine di:

  1. aggiornare l’applicazione GlobalProtect
  2. configurare l’applicazione in modalità FIPS-CC

Se l’aggiornamento può essere in qualche modo indotto tramite la configurazione inviata al client quando si connette al portale GlobalProtect, la configurazione in modalità FIPS-CC richiede necessariamente un intervento manuale, che dovrà essere eseguito da un utente con privilegi di amministratore di sitema.

Va sottolineato che il semplice aggiornamento o reinstallazione del software non risolve automaticamente il problema. Inoltre, alla data in cui scrivo non sono ancora disponibili versioni del client correttive per tutte le piattaforme.

Un ulteriore requisito necessario a permettere con successo il funzionamento in modalità FIPS-CC dei client è che il portale/gateway GlobalProtect utilizzi dei certificati SSL con determinate caratteristiche. In caso contrario, il client non riuscirà a connettersi con successo, mostrando un errore che spiega che non è stato possibile entrare in modalità FIPS-CC.

Abilitare la modalità FIPS-CC sul client

Se il client GP è già installato sul dispositivo, è necessario procedere al suo aggiornamento e poi eseguire una delle operazioni seguenti a seconda del sistema operativo in uso.

Windows

Su sistemi Windows è necessario modificare/aggiungere le seguenti chiavi al registro di sistema nella posizione HKEY_LOCAL_MACHINE\SOFTWARE\Palo Alto Networks\GlobalProtect\Settings e poi riavviare il dispositivo:

"cert-store"="machine"
"cert-location"="ROOT"
"full-chain-cert-verify"="yes"Code language: JavaScript (javascript)

L’immagine seguente mostra le modifiche apportate. Evidenziato in blu c’è il percorso in cui inserire/modificare le chiavi; in verde una chiave preesistente, che io ho lasciato inalterata, mentre in rosso le nuove chiavi aggiunte al registro (tutte di tipo REG_SZ):

In alternativa alla modifica del registro di sistema, si può procedere alla rimozione del client GlobalProtect per poi eseguire una nuova installazione lanciando l’installer con il seguente comando (ovviamente da command-line):

msiexec.exe /i GlobalProtect64.msi FULLCHAINCERTVERIFY="yes"Code language: JavaScript (javascript)

macOS

Su un sistema Apple macOS bisogna procedere alla modifica del file di property list (plist) com.paloaltonetworks.GlobalProtect.settings.plist che si trova nella directory /Library/Preferences aggiungendo la sezione seguente (quella compresa tra i commenti BEGIN/END):

<key>GlobalProtect</key>
<dict>
    (removed for brevity)
    <!-- BEGIN -->
    <key>Settings</key>
    <dict>
        <key>full-chain-cert-verify</key>
        <string>yes</string>
    </dict>
    <!-- END -->
</dict>Code language: HTML, XML (xml)

Correggere problemi al certificato del portale/gateway GlobalProtect

Dopo aver abilitato la modalità FIPS-CC su alcuni client di test, sono incorso nel problema citato in precedenza, ovvero il client non era in grado di entrare in modalità FIPS-CC a causa del certificato SSL offerto dal portale/gateway GlobalProtect.

Nel caso specifico stavo usando certificati rilasciati da una Certification Authority pubblica, quindi non self-signed. Il problema, osservato tramite il TSF (tech-support file) generato dal client GlobalProtect, era relativo all’uso dell’algoritmo SHA1 per uno dei certificati inclusi nella chain fornita dal portale.

Grazie all’articolo Troubleshoot CVE-2024-5921 Issues, aiutandomi con WireShark, ho individuato il certificato “colpevole”, ovvero il certificato root della certification authority. Questo certificato era compreso nel bundle fornito dall’ente che ha rilasciato il mio certificato SSL ma, di norma, non andrebbe mai incluso nella chain di certificati forniti da un server SSL (quindi anche dal portale/gateway GlobalProtect) perché già presente nel trust-store dei browser e dei sistemi operativi.

Per risolvere, ho proceduto alla rimozione del bundle della CA, cosa che ha richiesto anche la cancellazione (temporanea) di tutti i certificati SSL emessi dalla stessa CA, per poi ricaricarlo privato del certificato root. In questo modo la chain fornita dal portale/gateway non contiene più il certificato che usa l’algoritmo SHA1 e il client GlobalProtect riesce a connettersi in modalità FIPS-CC.

Per testare la correttezza della certificate chain, oppure per ottenere la chain corretta, è possibile utilizzare il sito What’s My Chain Cert?, minimale ma estremamente semplice ed utile.

Exploit

Le vulnerabilità dei servizi di VPN sono estremamente periocolose e fanno particolarmente gola a criminali e malintenzionati; negli ultimi anni, in particolare a partire dal tristemente noto caso Pulse Secure, gli attacchi mirati o a tappeto si sono intensificati e per questo motivo è essenziale la verifica continua dei propri sistemi.

Un articolo di AmberWolf descrive abbastanza dettagliatamente la vulnerabilità oggetto di questo articolo e lo stesso autore ha pubblicato un rogue VPN server (NachoVPN) per testare e sfruttare le vulnerabilità dei server VPN di alcuni dei vendor più diffusi (Cisco, Palo Alto, Pulse Secure e SonicWall).

Powered by atecplugins.com