InfraFenceInfraFence

Live Security Operations

Inizia

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:

Log di accesso di Apache
sudo grep -rhiE '\?(%AD|[^ ]*(\+|%20)%AD)[a-z]' --include='*access*' --exclude='*.gz' /var/log/apache2 /var/log/httpd 2>/dev/null | tail -20

Su un server Windows controlla la versione di PHP e se Apache lo esegue come CGI:

Prompt dei comandi di Windows
php -v

Correggere (Windows)

  1. 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.
  2. Meglio ancora, smetti di eseguire PHP come CGI: usalo come modulo di Apache, FastCGI o PHP-FPM.
  3. Su XAMPP, se non ti serve PHP-CGI, commenta la riga ScriptAlias /php-cgi/ in apache/conf/extra/httpd-xampp.conf e riavvia Apache.

Finché non puoi aggiornare, i ricercatori che hanno trovato la falla hanno pubblicato questa regola Apache temporanea per le localizzazioni colpite:

Configurazione di Apache
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

  1. L'agente annota quali porte SSH e quali siti rispondono.
  2. Scrive la regola (id ModSecurity 9920003) tra i propri marcatori nel suo file ModSecurity, esegue apachectl configtest e ricarica Apache in modo graceful. Se il test fallisce, rimette il file precedente.
  3. Controlla che SSH e i siti rispondano ancora e, se non è così, rimuove la patch.
  4. Controlla che ModSecurity blocchi davvero con la regola, con una richiesta di prova locale innocua. Un ModSecurity in DetectionOnly si 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.