
Una vulnerabilità di OS Command Injection nel programma CGI di Zyxel
Una vulnerabilità di OS Command Injection nel programma CGI di Zyxel
La vulnerabilità, scoperta per la prima volta il 13 aprile 2022, ha causato l'esecuzione remota di codice nei prodotti firewall di Zyxel. Questa importante vulnerabilità con un punteggio CVSS di 9,8 è stata bloccata con l'aggiornamento rilasciato da Zyxel 15 giorni dopo la sua emersione. In questo processo sono stati colpiti almeno 20.800 modelli, principalmente in Europa. La vulnerabilità è dovuta al comando "setWanPortSt" all'interno dell'applet di provisioning zero-touch. L'accesso al comando "setWanPortSt" avviene tramite l'endpoint /ztp/cgi-bin/handler. Non sono stati osservati exploit da quando Zyxel ha portato un aggiornamento al proprio modello per la vulnerabilità. La versione software dei modelli interessati è stata aggiornata alla v5.30 ed è stato sottolineato che l'aggiornamento automatico del software dovrebbe essere attivo per prevenire la vulnerabilità.
Il 13 aprile 2022 Rapid7 ha segnalato una vulnerabilità che interessa i dispositivi firewall di Zyxel, consentendo agli aggressori di iniettare comandi arbitrari da remoto come utente "nobody" senza autenticazione. Questa vulnerabilità è stata gestita a livello critico e il punteggio CVSS è stato determinato come 9,8. Zyxel ha poi risolto la vulnerabilità emettendo un aggiornamento di sicurezza il 28 aprile 2022. Il 12 maggio 2022 Rapid7 ha pubblicato un advisory e un modulo Metasploit per questa vulnerabilità.
I ricercatori di ShadowServer hanno iniziato a monitorare i tentativi di sfruttare CVE-2022-30525. Almeno 20.800 dei modelli firewall Zyxel interessati sono stati esposti online durante le indagini. È stato notato che la maggior parte dei modelli interessati si trovava in Francia e Italia.

La vulnerabilità deriva dall'uso di "os.system" con dati forniti dall'aggressore. L'endpoint /ztp/cgi-bin/handler viene utilizzato per lanciare l'attacco. Handler è uno script Python in grado di eseguire una serie di comandi diversi. Jake Baines, che per primo ha segnalato l'errore, ha spiegato la vulnerabilità nel suo blog come segue: "Rapid7 ha scoperto e segnalato una vulnerabilità che interessa i firewall Zyxel che supportano il Zero Touch Provisioning (ZTP), che include la serie ATP, la serie VPN e la serie USG FLEX (inclusi USG20-VPN e USG20W-VPN). La vulnerabilità, identificata come CVE-2022-30525, consente a un aggressore remoto non autenticato di ottenere l'esecuzione di codice arbitrario come utente nobody sul dispositivo interessato." Il problema nasce da un comando chiamato "setWanPortSt" all'interno dell'implementazione del zero touch provisioning, che consente al provisioning remoto di modificare le impostazioni IP delle porte del firewall.
Un PoC è stato pubblicato per comprendere meglio come viene effettuato lo sfruttamento. Victorian Machinery è un exploit proof of concept per CVE-2022-30525. La vulnerabilità è una vulnerabilità di command injection remota non autenticata che interessa i firewall Zyxel che supportano il zero touch provisioning.
Prima, il bersaglio viene sfruttato utilizzando un listener netcat e viene catturata una reverse shell. Per impostazione predefinita, "nc" viene eseguito fornendo "nc-path". In Python, una copia del processo principale viene creata utilizzando l'operazione "os.fork()". Quindi, se l'id del processo è 0, viene effettuata una richiesta POST all'indirizzo URL specificato. L'URL contiene rispettivamente il protocollo, l'indirizzo remoto da sfruttare, la porta remota e l'endpoint "/ztp/cgi-bin/handler". Grazie all'endpoint /ztp/cgi-bin/handler qui, è possibile accedere alla funzionalità del comando "setWanPortSt", che consente di modificare le impostazioni IP delle porte del firewall. Quando si esamina il payload, si vede che il bersaglio del comando è la porta 1270 del protocollo DHCP. In questo modo, gli aggressori possono ottenere l'esecuzione remota di codice come utente nobody.
La Shadowserver Foundation, il gruppo che indaga sull'exploit a livello mondiale, non ha rivelato ulteriori informazioni sui tentativi di sfruttamento osservati e le loro caratteristiche. È stato annunciato che non ci sono stati tentativi di abuso da lunedì 16 maggio 2022, ma le indagini continuano.
Agli amministratori dei dispositivi interessati si consiglia di aggiornare il firmware alla V5.30 il prima possibile. Jake Baines ha anche detto di abilitare gli aggiornamenti automatici del firmware se possibile. Zyxel è stato criticato per aver gestito la vulnerabilità in silenzio, ma nella dichiarazione è stato spiegato che ciò era dovuto a "un’errata comunicazione durante il processo di coordinamento della divulgazione". Ai dipendenti interni è stato detto che la creazione di una nuova policy "HTTP Protocol Signatures" creando un dizionario per la mitigazione manuale può prevenire lo sfruttamento.
In conclusione, questa vulnerabilità, verificatasi nei prodotti firewall Zyxel, ha colpito molti modelli a livello critico. Sebbene il problema sia stato affrontato in breve tempo, l'impatto dello sfruttamento è stato piuttosto ampio. Il fatto che non siano stati trovati exploit per molto tempo dimostra che gli aggiornamenti possono chiudere la falla di sicurezza per ora.