Vulnerabilità php-fpm che consente l'esecuzione remota di codice sul server

Disponibili rilasci correttivi per PHP 7.3.11, 7.1.33 e 7.2.24, in cui risolto critica una vulnerabilità (CVE-2019-11043) nell'estensione PHP-FPM (gestore dei processi FastCGI), che consente l'esecuzione remota del proprio codice nel sistema. Per attaccare i server che utilizzano PHP-FPM in combinazione con Nginx per l'esecuzione di script PHP, è già disponibile pubblicamente funzionante sfrutta.

L'attacco è possibile nelle configurazioni di nginx in cui il passaggio a PHP-FPM avviene con la separazione delle parti dell'URL tramite 'fastcgi_split_path_info' e la definizione della variabile d'ambiente PATH_INFO, ma senza un controllo preliminare dell'esistenza del file tramite la direttiva 'try_files $fastcgi_script_name' o la costruzione 'if (!-f $document_root$fastcgi_script_name)'. Il problema interessa anche si manifesta le impostazioni proposte per la piattaforma NextCloud. Ad esempio, sono vulnerabili le configurazioni con strutture come:

location ~ [^\/]\.php(\/|$) {
fastcgi_split_path_info ^(.+?\.php)(\/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}

Puoi monitorare la risoluzione del problema nelle distribuzioni su queste pagine: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, Arch, Fedora. Come metodo alternativo di protezione dopo la riga 'fastcgi_split_path_info', puoi aggiungere un controllo dell'esistenza del file PHP richiesto:

try_files $fastcgi_script_name =404;

Il problema è causato da un errore nella manipolazione dei puntatori nel file sapi/fpm/fpm/fpm_main.c. Durante l'assegnazione del puntatore, si presume che il valore della variabile d'ambiente PATH_INFO debba necessariamente contenere un prefisso che corrisponde al percorso dello script PHP.
Se la direttiva fastcgi_split_path_info specifica la separazione del percorso dello script utilizzando un'espressione regolare sensibile al passaggio del carattere di nuova riga (ad esempio, in molti esempi viene proposto di utilizzare '^(.+?\.php)(\/.*)$'), l'attaccante può ottenere l'assegnazione di un valore vuoto alla variabile d'ambiente PATH_INFO. In questo caso, nel proseguimento dell'esecuzione viene effettuato l'assegnazione in path_info[0] di zero e la chiamata a FCGI_PUTENV.

Richiedendo un URL formattato in un certo modo, l'attaccante può ottenere uno spostamento del puntatore path_info al primo byte della struttura '_fcgi_data_seg', e l'assegnazione di zero a quel byte porterà a uno spostamento del puntatore 'char* pos' in un'area di memoria precedente. La chiamata successiva a FCGI_PUTENV sovrascriverà i dati in quella memoria con un valore che può essere controllato dall'attaccante. In quella memoria si trovano anche i valori di altre variabili FastCGI e scrivendo i propri dati, l'attaccante può creare una variabile PHP_VALUE fittizia e ottenere l'esecuzione del proprio codice.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster