Ailagbara PHP-fpm ti o fun laaye ipaniyan koodu latọna jijin lori olupin naa

Wa awọn idasilẹ atunṣe ti PHP 7.3.11, 7.1.33 ati 7.2.24, ninu eyiti imukuro lominu ni ailagbara (CVE-2019-11043) ni itẹsiwaju PHP-FPM (FastCGI Process Manager), eyiti o fun ọ laaye lati mu koodu rẹ ṣiṣẹ latọna jijin lori eto naa. Lati kọlu awọn olupin ti o lo PHP-FPM ni apapo pẹlu Nginx lati ṣiṣe awọn iwe afọwọkọ PHP, o ti wa tẹlẹ ni gbangba ṣiṣẹ lo nilokulo.

Ikọlu naa ṣee ṣe ni awọn atunto nginx ninu eyiti fifiranšẹ si PHP-FPM ṣe nipasẹ yiya sọtọ awọn apakan ti URL nipa lilo “fastcgi_split_path_info” ati asọye iyipada ayika PATH_INFO, ṣugbọn laisi iṣayẹwo akọkọ aye ti faili ni lilo “try_files $ fastcgi_script_name” itọsọna tabi “ti (!-f $) document_root$ fastcgi_script_name)”. Iṣoro naa tun jẹ pроявляется ninu awọn eto ti a nṣe fun NextCloud Syeed. Fun apẹẹrẹ, awọn atunto pẹlu awọn ẹya bii:

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

O le tọpinpin ipinnu iṣoro naa ni awọn ohun elo pinpin lori awọn oju-iwe wọnyi: Debian, RHEL, Ubuntu, SUSE/ṣiiSUSE, FreeBSD, to dara, Fedora. Gẹgẹbi iṣẹ ṣiṣe, o le ṣafikun ayẹwo fun aye ti faili PHP ti o beere lẹhin laini “fastcgi_split_path_info”:

try_files $ fastcgi_script_name = 404;

Iṣoro naa jẹ nitori aṣiṣe nigbati o ba n ṣe ifọwọyi awọn itọka ninu faili kan sapi/fpm/fpm/fpm_main.c. Nigbati o ba n yan itọka kan, a ro pe iye ti iyipada ayika PATH_INFO gbọdọ ni ìpele kan ti o baamu ọna si iwe afọwọkọ PHP.
Ti itọsọna fastcgi_split_path_info ba ṣalaye pipin ọna iwe afọwọkọ nipa lilo ikosile deede ti o ni imọlara laini tuntun (fun apẹẹrẹ, ọpọlọpọ awọn apẹẹrẹ daba lilo “^ (.+?\.php)(/.*)$”), lẹhinna ikọlu le rii daju pe ohun iye ofo ni a kọ si PATH_INFO oniyipada ayika. Ni idi eyi, siwaju sii pẹlu ipaniyan ti gbe jade kikọ path_info[0] si odo ati pipe FCGI_PUTENV.

Nipa bibere URL ti a ṣe ni ọna kan, ikọlu le ṣaṣeyọri iyipada ti itọka ọna_info si baiti akọkọ ti eto “_fcgi_data_seg”, ati kikọ odo si baiti yii yoo yorisi gbigbe ti “char * pos” itọka si agbegbe iranti ti o wa tẹlẹ. Nigbamii ti a pe ni FCGI_PUTENV yoo tun kọ data naa sinu iranti yii pẹlu iye ti olutayo le ṣakoso. Iranti pàtó kan tun tọju awọn iye ti awọn oniyipada FastCGI miiran, ati nipa kikọ data wọn, ikọlu le ṣẹda oniyipada PHP_VALUE kan ati ṣaṣeyọri ipaniyan koodu wọn.

orisun: opennet.ru

Fi ọrọìwòye kun