PHP 7.3.11, 7.1.33 ja 7.2.24 korrektsiooniversioonid, milles kriitiline (CVE-2019-11043) PHP-FPM (FastCGI protsessihalduri) laienduses, mis vĂ”imaldab kaugjuhtimise teel oma koodi sĂŒsteemis kĂ€ivitada. RĂŒnnakuks PHP-failide töötlemisel PHP-FPM-i ja Nginx-i kombinatsioonis on juba avaldatud .
RĂŒnnak on vĂ”imalik nginx-i konfigureerimistes, kus PHP-FPM-i suunamine toimub URL-i osade jagamisega «fastcgi_split_path_info» abil ning PATH_INFO keskkonnamuutuja mÀÀratlemisega, kuid ilma, et fail oleks eelnevalt kontrollitud direktiiviga «try_files $fastcgi_script_name» vĂ”i konstruktsiooniga «if (!-f $document_root$fastcgi_script_name)». Probleem on ka seadetes, mis on soovitatavad NextCloudi platvormile. NĂ€iteks on haavatavad konfiguratsioonid konstruktsioonide tĂŒĂŒbiga:
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Probleemi lahendamise jÀlgimine distributsioonides on vÔimalik lehtedel: , , , , , , . Kaitseks vÔib pÀrast rida «fastcgi_split_path_info» lisada kontrolli, et taotletud PHP-fail eksisteerib:
try_files $fastcgi_script_name =404;
Probleem on pÔhjustatud vigadest nÀidikutega töötamisel failis . Oleku mÀÀramisel eeldatakse, et PATH_INFO keskkonnamuutuj sissevoolus peab sisaldama esialgse PHP-faili teed.
Kui fastcgi_split_path_info direktiivis on mÀÀratud skripti tee jagamine regulaaravaldiste abil, mis on tundlik uue rea sĂŒmboli edastamise suhtes (nĂ€iteks paljudes nĂ€idetes soovitatakse kasutada «^(.+?\.php)(/.*)$»), siis vĂ”ib rĂŒndaja saavutada, et PATH_INFO keskkonnamuutujisse kirjutatakse tĂŒhi vÀÀrtus. Sellisel juhul, tĂ€iendavalt tĂ€itmisprotsessis oleks path_info[0] null ja kutse FCGI_PUTENV.
Kindlalt koostatud URL-i pĂ€rides vĂ”ib rĂŒndaja saavutada, et path_info nĂ€idik nihkub struktuuri «_fcgi_data_seg» esimesse baiti, ning nulli kirjutamine sellesse baidi toob kaasa nĂ€idiku «char* pos» nihkumise varasemasse mĂ€luosa. JĂ€rgnev FCGI_PUTENV kutse kirjutab sellesse mĂ€lusse andmed, mille ĂŒle rĂŒndaja vĂ”ib kontrolli omada. Sellises mĂ€lus hoitakse sealhulgas ka muid FastCGI muutujaid, ning kirjutades oma andmed, vĂ”ib rĂŒndaja luua vale PHP_VALUE muutuja ja saavutada oma koodi tĂ€itmise.
Allikas: opennet.ru
