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
