CVE-2024-4577: iniezione di argomenti in PHP-CGI, verifica e correzione
Ultimo aggiornamento:
PHP-CGI su Windows, con alcune code page (giapponese, cinese e altre), converte un soft hyphen (%AD) nella riga di comando in un trattino. Attraverso Apache, la query string arriva a PHP-CGI sulla riga di comando, quindi un URL come /?%ADd+allow_url_include%3d1 diventa un'opzione di PHP e porta all'esecuzione di codice.
La falla dipende da una conversione di caratteri di Windows: PHP su Linux non è colpito. Gli scanner mandano le stesse richieste a ogni server, Linux compreso, ed è per questo che le vedi nei tuoi log.
In sintesi
- CVE
- CVE-2024-4577
- Software
- PHP (PHP-CGI su Windows)
- Versioni colpite
- 8.3 prima di 8.3.8, 8.2 prima di 8.2.20, 8.1 prima di 8.1.29 e precedenti, su Windows
- Corretta in
- 8.1.29, 8.2.20, 8.3.8
- Punteggio CVSS
- 9.8 Critica (NVD, CVSS 3.1) ·
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CISA Known Exploited Vulnerabilities
- Sì, aggiunta il 12 giugno 2024
- Pubblicata da NVD
- 9 giugno 2024
- Patch virtuale InfraFence
vp-cve-2024-4577(ModSecurity id 9920003)
Cosa è colpito
PHP 8.3 prima di 8.3.8, 8.2 prima di 8.2.20, 8.1 prima di 8.1.29 e le versioni precedenti, su Windows, quando PHP gira come CGI (Action di Apache verso php-cgi.exe, o il binario di PHP raggiungibile da una cartella CGI). XAMPP per Windows esponeva PHP-CGI in modo predefinito. PHP come modulo di Apache, come FastCGI o PHP-FPM non è colpito.
Verificare se un server è vulnerabile
Su Linux non c'è nulla da correggere per questa CVE; per le altre tieni PHP su una release supportata e aggiornata. Puoi comunque vedere chi ci sta provando:
sudo grep -rhiE '\?(%AD|[^ ]*(\+|%20)%AD)[a-z]' --include='*access*' --exclude='*.gz' /var/log/apache2 /var/log/httpd 2>/dev/null | tail -20Su un server Windows controlla la versione di PHP e se Apache lo esegue come CGI:
php -vCorreggere (Windows)
- Aggiorna PHP a 8.3.8, 8.2.20 o 8.1.29 o successive. Le versioni fuori supporto non hanno ricevuto correzioni: passa a una supportata.
- Meglio ancora, smetti di eseguire PHP come CGI: usalo come modulo di Apache, FastCGI o PHP-FPM.
- Su XAMPP, se non ti serve PHP-CGI, commenta la riga
ScriptAlias /php-cgi/inapache/conf/extra/httpd-xampp.confe riavvia Apache.
Finché non puoi aggiornare, i ricercatori che hanno trovato la falla hanno pubblicato questa regola Apache temporanea per le localizzazioni colpite:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]Come InfraFence la blocca
La patch virtuale per CVE-2024-4577 è una regola ModSecurity sulla query string: blocca un soft hyphen (%AD o il byte grezzo) seguito da una lettera all'inizio della query string o dopo un + o uno spazio codificato, il modo in cui l'attacco passa un'opzione.
Nota: L'agente di InfraFence gira su Linux, dove PHP non è vulnerabile a questa CVE. Su un server Linux la patch blocca i tentativi e li segnala, così vedi le scansioni; non corregge nulla che fosse rotto.
Come viene applicata la patch
- L'agente annota quali porte SSH e quali siti rispondono.
- Scrive la regola (id ModSecurity 9920003) tra i propri marcatori nel suo file ModSecurity, esegue
apachectl configteste ricarica Apache in modo graceful. Se il test fallisce, rimette il file precedente. - Controlla che SSH e i siti rispondano ancora e, se non è così, rimuove la patch.
- Controlla che ModSecurity blocchi davvero con la regola, con una richiesta di prova locale innocua. Un ModSecurity in
DetectionOnlysi limita a registrare: la patch viene allora rimossa e segnalata come inefficace, mai come applicata.
Ogni richiesta bloccata dalla patch viene segnalata con CVE-2024-4577 (agente 1.0.37 o successivo): vedi i tentativi nell'attività del server e nella pagina Sfruttamento della dashboard, quindi sai che qualcuno sta provando la vulnerabilità contro di te.
Attenzione: Una patch virtuale blocca la forma nota dell'attacco nelle richieste che passano da Apache su quel server. Non sostituisce l'aggiornamento: installa la versione corretta, poi rimuovi la patch da Attività con Annulla se non ti serve più.
Le patch virtuali richiedono Apache con ModSecurity, l'impostazione Consenti modifiche alla configurazione del web server e nessun pannello di hosting o strumento di configuration management che gestisca il web server; fanno parte del piano Pro e di AutoMode. Le applica una persona a partire dall'analisi AI, oppure AutoMode. Vedi Patch virtuali.
Fonti
I dati di questa pagina vengono da queste fonti; controllale per eventuali aggiornamenti.
Provalo gratis su 1 server
Starter è gratuito per un server, con protezione completa e blocco automatico. Senza carta di credito.
Installa l'agent come root, con il tuo token al posto di <TOKEN>:
curl -fsSL https://github.com/infrafence/infrafence-agent/releases/latest/download/install.sh | sudo bash -s -- --token <TOKEN>Il token si crea nella dashboard, in Server › Aggiungi server.
