opravy PHP 7.3.11, 7.1.33 a 7.2.24, ve kterých kritická (CVE-2019-11043) v rozšíření PHP-FPM (manažer procesů FastCGI), které umožňuje vzdálené spuštění vlastního kódu v systému. Pro útok na servery, které používají PHP-FPM k spuštění PHP skriptů ve spojení s Nginx, je již veřejně dostupný .
Útok je možný v konfiguracích Nginx, kde je předat do PHP-FPM realizováno s rozdělením částí URL pomocí „fastcgi_split_path_info“ a definováním proměnné prostředí PATH_INFO, ale bez předchozí kontroly existence souboru direktivou „try_files $fastcgi_script_name“ nebo konstrukcí „if (!-f $document_root$fastcgi_script_name)“. Problém se týká také nastavení nabízených pro platformu NextCloud. Například jsou zranitelné konfigurace s konstrukcemi typu:
location ~ [^\/]\.php(\/|$) {
fastcgi_split_path_info ^(.+?\.php)(\/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
Problematiku oprav v distribucích lze sledovat na následujících stránkách: , , , , , , . Jako obranou metodou ochrany po řádku „fastcgi_split_path_info“ lze přidat kontrolu existence požadovaného PHP souboru:
try_files $fastcgi_script_name =404;
Problém je způsoben chybou při manipulaci s ukazateli v souboru . Při přiřazení ukazatele se předpokládá, že hodnota proměnné prostředí PATH_INFO obsahuje prefix, které se shoduje s cestou k PHP skriptu.
Pokud je v direktivě fastcgi_split_path_info uvedeno rozdělení cesty ke skriptu pomocí regulárního výrazu, citlivého na přenos znaku nového řádku (například v mnoha příkladech je doporučeno použít „^(.+?\.php)(\/.*)$“), útočník může dosáhnout zapsání prázdné hodnoty do proměnné prostředí PATH_INFO. V tomto případě dál po provádění zápis do path_info[0] nula a vyvolání FCGI_PUTENV.
Útočník, který požaduje určitým způsobem formátovaný URL, může dosáhnout posunutí ukazatele path_info na první byte struktury „_fcgi_data_seg“, a zápis nuly do tohoto byte způsobí posunutí ukazatele „char* pos“ do dříve používané paměti. Následné FCGI_PUTENV přepíše data v této paměti hodnotou, kterou může útočník ovládat. V uvedené paměti jsou také uloženy hodnoty dalších proměnných FastCGI, a zápisem svých dat může útočník vytvořit fiktivní proměnnou PHP_VALUE a dosáhnout spuštění svého kódu.
Zdroj: opennet.ru
