korrektsed PHP 7.3.11, 7.1.33 ja 7.2.24 versioonid, milles kriitiline (CVE-2019-11043) PHP-FPM (FastCGI protsessihaldur) laiendis, mis vĂ”imaldab kaugjuhtimisega kĂ€ivitada oma koodi sĂŒsteemis. RĂŒnnaku jaoks serveritele, mis kasutavad PHP-FPM-i PHP-skriptide kĂ€ivitamiseks koos Nginxiga, on juba avalikult saadaval .
RĂŒnnak on vĂ”imalik Nginxi konfiguratsioonides, kus PHP-FPM-i suunamine toimub URL-i osade jagamise kaudu koos 'fastcgi_split_path_info' kasutamisega ning keskkonnamuutuja PATH_INFO mÀÀramisega, kuid ilma 'try_files $fastcgi_script_name' direktiivi vĂ”i konstruktsioonita 'if (!-f $document_root$fastcgi_script_name)'. Probleem esineb ka NextCloudi platvormi jaoks pakutavates seadetes. NĂ€iteks on haavatavad konfiguratsioonid, millel on jĂ€rgmised konstruktsioonid:
location ~ [^\/]\.php(\/|$) {
fastcgi_split_path_info ^(.+?\.php)(\/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Probleemi lahendamise jĂ€lgimiseks distributsioonides saab jĂ€lgida jĂ€rgmisi lehti: , , , , , , . Kaitse ĂŒmberpööramise meetodina, pĂ€rast 'fastcgi_split_path_info' rida, saab lisada kontrolli, et kontrollida, kas taotletud PHP-fail eksisteerib:
try_files $fastcgi_script_name =404;
Probleem on pÔhjustatud viga viidete kÀsitlemisel failis . Viidendi mÀÀramisel eeldatakse, et keskkonnamuutuja PATH_INFO vÀÀrtus sisaldab tingimata eelmist prefiksi, mis vastab PHP-skripti teele.
Kui 'fastcgi_split_path_info' direktiivis mÀÀratakse skripti tee jagamine regulaaravaldistega, mis on tundlikud reavahetuse sĂŒmboli ĂŒlekande suhtes (nĂ€iteks paljudes nĂ€idetes soovitatakse kasutada '^(.+?\.php)(\/.*)$'), siis rĂŒndaja vĂ”ib pĂ”hjustada PATH_INFO keskkonnamuutuja tĂŒhja vÀÀrtuse kirjutamist. Sel juhul mĂ”ningate edasiste kĂ€ivituste kaudu kirjutatakse path_info[0] null ja kutsutakse esile FCGI_PUTENV.
KĂŒsimise korral teatud viisil vormindatud URL-i kaudu vĂ”ib rĂŒndaja saavutada path_info viidete nihkumise struktuuri '_fcgi_data_seg' esimese baiti peale, ning nulli kirjutamine sellesse baiti viib 'char* pos' viidate nihkumiseni varem olnud mĂ€lupiirkonda. JĂ€rgmine jĂ€rgnev FCGI_PUTENV kirjutab selle mĂ€lus oleva vÀÀrtuse, mida rĂŒndaja saab kontrollida. Antud mĂ€lus hoitakse ka teisi FastCGI muutujaid ja kirjutades sinna oma andmed vĂ”ib rĂŒndaja luua vale PHP_VALUE muutuja, pĂ”hjustades oma koodi tĂ€itmise.
Allikas: opennet.ru
