PHP-fpm เชจเชฌเชณเชพเชˆ เชœเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ เชฐเชฟเชฎเซ‹เชŸ เช•เซ‹เชก เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจเชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡

เช‰เชชเชฒเชฌเซเชง เช›เซ‡ PHP 7.3.11, 7.1.33 เช…เชจเซ‡ 7.2.24 เชจเชพ เชธเซเชงเชพเชฐเชพเชคเซเชฎเช• เชชเซเชฐเช•เชพเชถเชจเซ‹, เชœเซ‡เชฎเชพเช‚ เชจเชพเชฌเซ‚เชฆ เช•เซเชฐเชฟเชŸเซ€เชšเซ‡เชธเซเช•เชพ เชจเชฌเชณเชพเชˆ (CVE-2019-11043) PHP-FPM (FastCGI เชชเซเชฐเซ‹เชธเซ‡เชธ เชฎเซ‡เชจเซ‡เชœเชฐ) เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชฎเชพเช‚, เชœเซ‡ เชคเชฎเชจเซ‡ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชคเชฎเชพเชฐเชพ เช•เซ‹เชกเชจเซ‡ เชฐเชฟเชฎเซ‹เชŸเชฒเซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. PHP เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ Nginx เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฃเชฎเชพเช‚ PHP-FPM เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชนเซเชฎเชฒเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเชพเชฐเซเชตเชœเชจเชฟเช• เชฐเซ‚เชชเซ‡ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เชถเซ‹เชทเชฃ.

nginx เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹เชฎเชพเช‚ เชนเซเชฎเชฒเซ‹ เชถเช•เซเชฏ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ PHP-FPM เชชเชฐ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเชตเชพเชจเซเช‚ "fastcgi_split_path_info" เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ URL เชจเชพ เชญเชพเช—เซ‹เชจเซ‡ เช…เชฒเช— เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ PATH_INFO เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซ‡เชฐเซ€เชเชฌเชฒเชจเซ‡ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เช•เชฐเซ€เชจเซ‡ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชชเชนเซ‡เชฒเชพ "try_files $fastcgi_script_name" เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชซเชพเช‡เชฒเชจเซเช‚ เช…เชธเซเชคเชฟเชคเซเชต เชคเชชเชพเชธเซเชฏเชพ เชตเชฟเชจเชพ. เชจเชฟเชฐเซเชฆเซ‡เชถเช• เช…เชฅเชตเชพ "if (!-f $) document_root$fastcgi_script_name)". เชธเชฎเชธเซเชฏเชพ เชชเชฃ เช›เซ‡ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เชจเซ‡เช•เซเชธเซเชŸเช•เซเชฒเชพเช‰เชก เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชฎเชพเชŸเซ‡ เช“เชซเชฐ เช•เชฐเซ‡เชฒเชพ เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชธ เชธเชพเชฅเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเซ‹ เชœเซ‡เชฎ เช•เซ‡:

เชธเซเชฅเชพเชจ ~ [^/]\.php(/|$) {
เชซเชพเชธเซเชŸเช—เซ€_เชธเซเชชเซเชฒเชฟเชŸ_เชชเชฅ_เช‡เช‚เชซเซ‹ o (. +??. เชชเซ€เชเชšเชชเซ€) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}

เชคเชฎเซ‡ เช† เชชเซƒเชทเซเช เซ‹ เชชเชฐ เชตเชฟเชคเชฐเชฃ เช•เซ€เชŸเชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพเชจเชพ เช‰เช•เซ‡เชฒเชจเซ‡ เชŸเซเชฐเซ…เช• เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹: เชกเซ‡เชฌเชฟเชฏเชจ, เช†เชฐเชเชšเชเชฒ, เช‰เชฌเซเชจเซเชŸเซ, SUSE/openSUSE, เชซเซเชฐเซ€เชฌเซ€เชเชธเชกเซ€, เช†เชฐเซเช•, Fedora. เช‰เช•เซ‡เชฒ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ "fastcgi_split_path_info" เชฒเชพเช‡เชจ เชชเช›เซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡เชฒ PHP เชซเชพเช‡เชฒเชจเชพ เช…เชธเซเชคเชฟเชคเซเชต เชฎเชพเชŸเซ‡ เชšเซ‡เช• เช‰เชฎเซ‡เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

try_files $fastcgi_script_name =404;

เชซเชพเชˆเชฒเชฎเชพเช‚ เชชเซ‹เชˆเชจเซเชŸเชฐเซเชธเชจเซ€ เชนเซ‡เชฐเชซเซ‡เชฐ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชธเชฎเชธเซเชฏเชพ เชญเซ‚เชฒเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฅเชพเชฏ เช›เซ‡ sapi/fpm/fpm/fpm_main.c. เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชธเซ‹เช‚เชชเชคเซ€ เชตเช–เชคเซ‡, เชเชตเซเช‚ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ PATH_INFO เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชตเซ‡เชฐเซ€เชเชฌเชฒเชจเชพ เชฎเซ‚เชฒเซเชฏเชฎเชพเช‚ เชเช• เช‰เชชเชธเชฐเซเช— เชนเซ‹เชตเซ‹ เชœเซ‹เชˆเช เชœเซ‡ PHP เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเชพ เชชเชพเชฅ เชธเชพเชฅเซ‡ เชฎเซ‡เชณ เช–เชพเชคเซ‹ เชนเซ‹เชฏ.
เชœเซ‹ fastcgi_split_path_info เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฟเชต เชจเชตเซ€ เชฒเชพเช‡เชจ-เชธเช‚เชตเซ‡เชฆเชจเชถเซ€เชฒ เชจเชฟเชฏเชฎเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเชพเชฅเชจเซ‡ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเชพเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‡ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช˜เชฃเชพ เช‰เชฆเชพเชนเชฐเชฃเซ‹ "^(.+?\.php)(/.*)$" เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชธเซ‚เชšเชตเซ‡ เช›เซ‡), เชคเซ‹ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡ เช•เซ‡ เช–เชพเชฒเซ€ เช•เชฟเช‚เชฎเชค PATH_INFO เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒ เชชเชฐ เชฒเช–เชพเชฏเซ‡เชฒ เช›เซ‡. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช†เช—เชณ เช…เชฎเชฒ เชธเชพเชฅเซ‡ เชนเชพเชฅ เชงเชฐเชตเชพเชฎเชพเช‚ path_info[0] เชจเซ‡ เชถเซ‚เชจเซเชฏ เชชเชฐ เชฒเช–เชตเซเช‚ เช…เชจเซ‡ FCGI_PUTENV เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเซเช‚.

เชšเซ‹เช•เซเช•เชธ เชฐเซ€เชคเซ‡ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช•เชฐเซ‡เชฒเชพ URLเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ€เชจเซ‡, เชนเซเชฎเชฒเชพเช–เซ‹เชฐ path_info เชชเซ‹เช‡เชจเซเชŸเชฐเชจเซ‡ "_fcgi_data_seg" เชธเซเชŸเซเชฐเช•เซเชšเชฐเชจเชพ เชชเซเชฐเชฅเชฎ เชฌเชพเช‡เชŸเชฎเชพเช‚ เชถเชฟเชซเซเชŸ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เช† เชฌเชพเช‡เชŸ เชชเชฐ เชถเซ‚เชจเซเชฏ เชฒเช–เชตเชพเชฅเซ€ "char* pos" เชจเซ€ เชนเชฟเชฒเชšเชพเชฒ เชฅเชถเซ‡. เช…เช—เชพเช‰ เชธเซเชฅเชฟเชค เชฎเซ‡เชฎเชฐเซ€ เชตเชฟเชธเซเชคเชพเชฐ เชฎเชพเชŸเซ‡ เชจเชฟเชฐเซเชฆเซ‡เชถเช•. FCGI_PUTENV เชจเชพเชฎเชจเซเช‚ เช†เช—เชฒเซเช‚ เช† เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚เชจเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชเชตเชพ เชฎเซ‚เชฒเซเชฏ เชธเชพเชฅเซ‡ เช“เชตเชฐเชฐเชพเชˆเชŸ เช•เชฐเชถเซ‡ เช•เซ‡ เชœเซ‡เชจเซ‡ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชจเชฟเชฏเช‚เชคเซเชฐเชฟเชค เช•เชฐเซ€ เชถเช•เซ‡. เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชฎเซ‡เชฎเชฐเซ€ เช…เชจเซเชฏ FastCGI เชšเชฒเซ‹เชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‡ เชชเชฃ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‹ เชกเซ‡เชŸเชพ เชฒเช–เซ€เชจเซ‡, เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เช•เชพเชฒเซเชชเชจเชฟเช• PHP_VALUE เชšเชฒ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เช•เซ‹เชกเชจเซ‹ เช…เชฎเชฒ เชนเชพเช‚เชธเชฒ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹