PHP-fpm ahultasuna zerbitzarian urruneko kodea exekutatzeko aukera ematen duena

Eskuragarri PHP 7.3.11, 7.1.33 eta 7.2.24 bertsio zuzentzaileak, zeinetan ezabatuta kritikoa zaurgarritasuna (CVE-2019-11043) PHP-FPM (FastCGI Process Manager) luzapenean, zure kodea sisteman urrunetik exekutatzeko aukera ematen duena. PHP-FPM Nginx-ekin batera PHP scriptak exekutatzeko erabiltzen duten zerbitzariei erasotzeko, dagoeneko publikoki eskuragarri dago. lanean ustiatu.

Erasoa posible da nginx konfigurazioetan, zeinetan PHP-FPM-ra birbidaltzea URLaren zatiak bereiziz "fastcgi_split_path_info" erabiliz eta PATH_INFO ingurune-aldagaia definituz, baina lehenik fitxategiaren existentzia egiaztatu gabe "try_files $fastcgi_script_name" erabiliz. zuzentaraua edo "if (!-f $) dokumentu_erroa$fastcgi_script_izena)". Arazoa ere bai agertzen da NextCloud plataformarako eskaintzen diren ezarpenetan. Adibidez, honelako egiturak dituzten konfigurazioak:

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

Arazoaren konponbidearen jarraipena egin dezakezu banaketa-kitetan orrialde hauetan: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, Arku, Fedora. Konponbide gisa, eskatutako PHP fitxategia dagoen egiaztatzeko gehi dezakezu "fastcgi_split_path_info" lerroaren ondoren:

try_files $fastcgi_script_name =404;

Arazoa fitxategi bateko erakusleak manipulatzean errore batek sortzen du sapi/fpm/fpm/fpm_main.c. Erakuslea esleitzean, PATH_INFO ingurune-aldagaiaren balioak PHP script-aren bidearekin bat datorren aurrizki bat izan behar duela suposatzen da.
fastcgi_split_path_info direktibak script-aren bidea zatitzea zehazten badu lerro berriekiko sentikorra den adierazpen erregular bat erabiliz (adibidez, adibide askok "^(.+?\.php)(/.*)$") erabiltzea iradokitzen du, erasotzaileak ziurta dezake balio hutsa PATH_INFO ingurune-aldagaian idazten da. Kasu honetan, exekuzioan aurrerago egindako path_info[0] zerora idatzi eta FCGI_PUTENV deituz.

Modu jakin batean formateatutako URL bat eskatuz, erasotzaileak path_info erakuslea "_fcgi_data_seg" egituraren lehen bytera aldatzea lor dezake, eta byte honetan zero bat idazteak "char* pos" mugimendua ekarriko du. aurretik kokatutako memoria-eremu batera erakuslea. FCGI_PUTENV izeneko hurrengoak memoria honetako datuak gainidatziko ditu erasotzaileak kontrola dezakeen balio batekin. Zehaztutako memoriak beste FastCGI aldagai batzuen balioak ere gordetzen ditu, eta haien datuak idatziz, erasotzaileak PHP_VALUE aldagai fikziozko bat sor dezake eta bere kodearen exekuzioa lor dezake.

Iturria: opennet.ru

Gehitu iruzkin berria