PHP-fpm kwetsberens dy't it útfieren fan koade op ôfstân op 'e tsjinner mooglik makket

Beskikber korrektive releases fan PHP 7.3.11, 7.1.33 en 7.2.24, wêryn eliminearre kritysk kwetsberens (CVE-2019-11043) yn 'e PHP-FPM (FastCGI Process Manager) tafoeging, wêrtroch jo jo koade op ôfstân kinne útfiere op it systeem. Om tsjinners oan te fallen dy't PHP-FPM brûke yn kombinaasje mei Nginx om PHP-skripts út te fieren, is it al iepenbier beskikber wurkman eksploitearje.

De oanfal is mooglik yn nginx-konfiguraasjes wêryn trochstjoeren nei PHP-FPM wurdt útfierd troch dielen fan 'e URL te skieden mei "fastcgi_split_path_info" en it definiearjen fan de PATH_INFO omjouwingsfariabele, mar sûnder earst it bestean fan it bestân te kontrolearjen mei de "try_files $fastcgi_script_name" rjochtline of de "if (!-f $) document_root$fastcgi_script_name)". It probleem is ek ferskynt yn 'e ynstellings oanbean foar it NextCloud-platfoarm. Bygelyks, konfiguraasjes mei struktueren lykas:

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

Jo kinne de oplossing fan it probleem folgje yn distribúsjekits op dizze siden: Debian, RHEL, ubuntu, SUSE/openSUSE, FreeBSD, Bôge, Fedora. As oplossing kinne jo in kontrôle tafoegje foar it bestean fan it frege PHP-bestân nei de line "fastcgi_split_path_info":

try_files $fastcgi_script_name =404;

It probleem wurdt feroarsake troch in flater by it manipulearjen fan pointers yn in bestân sapi/fpm/fpm/fpm_main.c. By it tawizen fan in oanwizer wurdt oannommen dat de wearde fan 'e PATH_INFO omjouwingsfariabele in foarheaksel befetsje moat dat oerienkomt mei it paad nei it PHP-skript.
As de fastcgi_split_path_info-rjochtline spesifisearret it splitsen fan it skriptpaad mei in newline-gefoelige reguliere ekspresje (in protte foarbylden suggerearje bygelyks it brûken fan "^(.+?\.php)(/.*)$"), dan kin in oanfaller soargje dat in lege wearde wurdt skreaun nei de PATH_INFO omjouwingsfariabele. Yn dit gefal, fierder by de útfiering útfierd skriuwe path_info[0] nei nul en rop FCGI_PUTENV.

Troch it oanfreegjen fan in URL op in bepaalde manier opmakke, kin in oanfaller in ferskowing fan 'e path_info-oanwizer berikke nei de earste byte fan 'e "_fcgi_data_seg"-struktuer, en it skriuwen fan in nul nei dizze byte sil liede ta de beweging fan 'e "char * pos" oanwizer nei in earder leit ûnthâld gebiet. De folgjende neamd FCGI_PUTENV sil de gegevens yn dit ûnthâld oerskriuwe mei in wearde dy't de oanfaller kin kontrolearje. It spesifisearre ûnthâld bewarret ek de wearden fan oare FastCGI-fariabelen, en troch har gegevens te skriuwen, kin in oanfaller in fiktive PHP_VALUE-fariabele oanmeitsje en de útfiering fan har koade berikke.

Boarne: opennet.ru

Add a comment