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 рд▓рд╛ рдлреЙрд░рд╡рд░реНрдб рдХрд░рдгреЗ URL рдЪреЗ рдХрд╛рд╣реА рднрд╛рдЧ рд╡реЗрдЧрд│реЗ рдХрд░реВрди тАЬfastcgi_split_path_infoтАЭ рд╡рд╛рдкрд░реВрди рдЖрдгрд┐ PATH_INFO рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реВрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдкрд░рдВрддреБ рдкреНрд░рдердо тАЬtry_files $fastcgi_script_nameтАЭ рд╡рд╛рдкрд░реВрди рдлрд╛рдЗрд▓рдЪреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рддрдкрд╛рд╕рд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп. рдирд┐рд░реНрджреЗрд╢ рдХрд┐рдВрд╡рд╛ "if (!-f $) document_root$fastcgi_script_name)". рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреАрд▓ рдЖрд╣реЗ рджрд┐рд╕рддреЗ рдиреЗрдХреНрд╕реНрдЯрдХреНрд▓рд╛рдЙрдб рдкреНрд▓реЕрдЯрдлреЙрд░реНрдорд╕рд╛рдареА рдСрдлрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдордзреНрдпреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рдВрд░рдЪрдирд╛рдВрд╕рд╣ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЬрд╕реЗ:

рд╕реНрдерд╛рди ~ [^/]\.php(/|$) {
рдлрд╛рд╕реНрдЯрдЧреА_рд╕реНрдкреНрд▓рд┐рдЯ_рдкрд╛рда_рдЗрдиреНрдлреЛ. (. +? \. рдкреАрдПрдЪрдкреА) (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}

рдЖрдкрдг рдпрд╛ рдкреГрд╖реНрдард╛рдВрд╡рд░ рд╡рд┐рддрд░рдг рдХрд┐рдЯрдордзреАрд▓ рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдЯреНрд░реЕрдХ рдХрд░реВ рд╢рдХрддрд╛: рдбреЗрдмрд┐рдпрди, рд░рд╣реЗрд▓, рдЙрдмрдВрдЯреВ, SUSE/openSUSE, FreeBSD, рдХрдорд╛рди, 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛