Vulnerabilità PHP-fpm chì permette l'esecuzione di codice remota in u servitore

Dispunibule versione correttiva di PHP 7.3.11, 7.1.33 è 7.2.24, in quale eliminatu criticu vulnerabilità (CVE-2019-11043) in l'estensione PHP-FPM (FastCGI Process Manager), chì vi permette di eseguisce remotamente u vostru codice in u sistema. Per attaccà i servitori chì utilizanu PHP-FPM in cunjunzione cù Nginx per eseguisce script PHP, hè digià dispunibule publicamente. travagliu sfruttà.

L'attaccu hè pussibule in cunfigurazioni nginx in quale l'invio à PHP-FPM hè realizatu sepandu parti di l'URL usendu "fastcgi_split_path_info" è definendu a variabile d'ambiente PATH_INFO, ma senza prima verificà l'esistenza di u schedariu utilizendu "try_files $fastcgi_script_name" direttiva o "if (!-f $) document_root$fastcgi_script_name)". U prublema hè ancu appare in i paràmetri offerti per a piattaforma NextCloud. Per esempiu, cunfigurazioni cù strutture cum'è:

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

Pudete seguità a risoluzione di u prublema in i kit di distribuzione in queste pagine: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, bue, Fedora. Comu solu solu, pudete aghjunghje un verificatu per l'esistenza di u schedariu PHP dumandatu dopu a linea "fastcgi_split_path_info":

try_files $fastcgi_script_name =404;

U prublema hè causatu da un errore durante a manipulazione di puntatori in un schedariu sapi/fpm/fpm/fpm_main.c. Quandu assignate un punteru, si assume chì u valore di a variabile di l'ambiente PATH_INFO deve cuntene un prefissu chì currisponde à u percorsu à u script PHP.
Se a direttiva fastcgi_split_path_info specifica a splitting the script path using a newline-sensitive regular expression (per esempiu, parechji esempi suggerenu di utilizà "^(.+?\.php)(/.*)$"), allora un attaccante puderia assicurà chì un valore viotu hè scrittu à a variabile d'ambiente PATH_INFO. In questu casu, più longu l'esekzione compiu scrivite path_info[0] à zero è chjamate FCGI_PUTENV.

Per dumandà un URL furmatu in un certu modu, un attaccu pò ottene un cambiamentu di l'indicatore path_info à u primu byte di a struttura "_fcgi_data_seg", è scrive un cero à questu byte porta à u muvimentu di u "char * pos" puntatore à una zona di memoria situata prima. U prossimu chjamatu FCGI_PUTENV soprascrive i dati in questa memoria cù un valore chì l'attaccu pò cuntrullà. A memoria specifica guarda ancu i valori di altre variabili FastCGI, è scrivendu e so dati, un attaccu pò creà una variabile PHP_VALUE fittizia è ottene l'esekzione di u so codice.

Source: opennet.ru

Add a comment