Fortinet ha chiuso una vulnerabilità critica da pochi giorni, l’installazione della patch è urgente perché c’è già un exploit pubblico.
Autore: Redazione SecurityOpenLab
Ci sono voluti meno di quattro giorni per realizzare un exploit proof-of-concept per la patch di una delle vulnerabilità critiche di FortiNAC e FortiWeb corrette da Fortinet il 16 febbraio. Fortunatamente questo PoC non è stato prodotto dal cybercrime ma da un gruppo di ricercatori per la sicurezza; i cyber criminali potrebbero non farsi attendere a lungo. Le cronache cyber di casi analoghi avvenuti in passato narrano infatti di exploit pubblicati a tempo di record per attaccare dispositivi dei quali erano appena state divulgate le vulnerabilità con relative patch. Soprattutto quando le falle riguardano appliance di rete. In linea generale le patch per le falle relative ai dispositivi di rete dovrebbero essere installate rapidamente. A maggiore ragione in questo caso, dato che le vulnerabilità identificate da Fortinet hanno punteggio CVSS critici.
Monitorata con la sigla CVE-2022-39952, la falla di FortiNAC ha un punteggio CVSS v3 di 9.8 su 10. È nota dal 16 febbraio e potrebbe essere sfruttata da un attaccante non autenticato per scrivere file arbitrari sul sistema e ottenere l'esecuzione di codice da remoto con i privilegi più elevati. Riguarda FortiNAC, la soluzione di controllo degli accessi alla rete che aiuta le organizzazioni a ottenere visibilità della rete in tempo reale, applicare policy di sicurezza e rilevare e mitigare le minacce.
Come indicato dal vendor, le versioni affette sono FortiNAC 9.4.0, le release dalla 9.2.0 alla 9.2.5, quelle dalla 9.1.0 alla 9.1.7 e tutte le release delle edizioni 8.8, 8.7, 8.6, 8.5 e 8.3. Per chiudere la falla è necessario procedere con gli aggiornamenti alle versioni 9.4.1 o successive, 9.2.6 o successive, 9.1.8 o successive e 7.2.0 o successive.
Una seconda falla, identificata con la sigla CVE-2021-42756, ha un punteggio CVSS v3 di 9.3 (sempre critico). Si tratta di una vulnerabilità multipla di buffer overflow basata su stack [CWE-121] nel daemon proxy di FortiWeb e può consentire a un attaccante remoto non autenticato di eseguire codice arbitrario tramite richieste HTTP appositamente predisposte.
FortiWeb è una soluzione WAF (Web Application Firewall) progettata per proteggere le applicazioni Web e le API da cross-site scripting (XSS), SQL injection, attacchi bot, DDoS (Distributed Denial of Service) e altre minacce online.
Le versioni interessate di FortiWeb sono tutte quelle con sigla 5.x, le 6.0.7 e precedenti, 6.1.2 e precedenti, 6.2.6 e precedenti, 6.3.16 e precedenti e tutte le release con sigla 6.4. Per risolvere il problema è necessario eseguire l’aggiornamento a FortiWeb 7.0.0 o successiva, 6.3.17 o successiva, 6.2.7 o successiva, 6.1.3 o versione successiva e 6.0.8 o successiva.
Come accennato, l’exploit PoC relativo alla falla di FortiNAC è stato realizzato dai ricercatori della società di sicurezza informatica Horizon3. Su GitHub è pubblicato un post tecnico che descrive in dettaglio la vulnerabilità e come può essere sfruttata, oltre al codice del PoC. È interessante dare un’occhiata perché consente di comprendere il lavoro che viene fatto dagli attaccanti quando devono realizzare un exploit di una falla di cui esiste la patch.
Si tratta di un lavoro certosino di reverse engineering. I ricercatori hanno analizzato il codice della patch ufficiale pubblicata da Fortinet e hanno scoperto che rimuove keyUpload.jsp. Si tratta di un endpoint che analizza le richieste per un parametro "key", lo scrive su un file di configurazione e quindi esegue lo script bash configApplianceXml, che a sua volta esegue il comando unzip. È proprio unzip il problema, perché, come spiega Horizon3, “consente di inserire file in qualsiasi percorso purché non attraversino la directory di lavoro corrente".
È l’informazione che serve per realizzare l’exploit: un codice permette a un attaccante di creare un archivio ZIP che contiene il payload, specificando dove deve essere estratto, e quindi inviarlo all'endpoint vulnerabile utilizzando il parametro key. Tale parametro assicura che la richiesta dannosa raggiunga keyUpload.jsp, ovvero l'endpoint non autenticato che è stato rimosso da Fortinet con la patch.