Осебпазирӣ дар php-fpm, ки имкон медиҳад коди дурдаст дар сервер иҷро карда шавад

Доступны Варақаҳои ислоҳии PHP 7.3.11, 7.1.33 ва 7.2.24, ки дар онҳо бартараф карда шуд танкидй осебпазирӣ (CVE-2019-11043) дар васеъшавии PHP-FPM (FastCGI Process Manager), ки ба шумо имкон медиҳад, ки коди худро дар система фосилаи дур иҷро кунед. Барои ҳамла ба серверҳое, ки PHP-FPM-ро барои иҷро кардани скриптҳои PHP дар якҷоягӣ бо Nginx истифода мебаранд, он аллакай дастрас аст коргар истисмор кардан.

Ҳамла дар конфигуратсияҳои nginx имконпазир аст, ки дар он интиқол дар PHP-FPM тавассути тақсим кардани қисмҳои URL бо истифода аз "fastcgi_split_path_info" ва муайян кардани тағирёбандаи муҳити PATH_INFO, аммо бидуни тафтиши аввал мавҷудияти файл бо "try_files $fastcgi_script_name" анҷом дода мешавад. дастур ё "агар (!-f $ document_root$fastcgi_script_name)". проблема, аз чумла аст дар танзимоти пешниҳодшуда барои платформаи NextCloud. Масалан, конфигуратсияҳо бо сохторҳои шакл осебпазиранд:

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

Шумо метавонед ҳалли мушкилотро дар тақсимот дар ин саҳифаҳо пайгирӣ кунед: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, гунбаз, Федора. Ҳамчун як роҳи ҳалли амният, пас аз сатри "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

Илова Эзоҳ