සේවාදායකයේ දුරස්ථ කේත ක්‍රියාත්මක කිරීමට ඉඩ සලසන PHP-fpm අවදානම

ඇත PHP 7.3.11, 7.1.33 සහ 7.2.24 නිවැරදි කිරීමේ නිකුතු ඉවත් කළා විවේචනාත්මක අවදානම (CVE-2019-11043) PHP-FPM (FastCGI ක්‍රියාවලි කළමණාකරු) දිගුව තුළ, ඔබේ කේතය දුරස්ථව පද්ධතිය මත ක්‍රියාත්මක කිරීමට ඔබට ඉඩ සලසයි. PHP ස්ක්‍රිප්ට් ධාවනය කිරීමට Nginx සමඟ එක්ව PHP-FPM භාවිතා කරන සේවාදායකයන්ට පහර දීමට, එය දැනටමත් ප්‍රසිද්ධියේ පවතී සේවකයා ගසාකනවා.

"fastcgi_split_path_info" භාවිතයෙන් URL හි කොටස් වෙන් කිරීම සහ PATH_INFO පරිසර විචල්‍යය නිර්වචනය කිරීම මගින් PHP-FPM වෙත යොමු කිරීම සිදු කරන nginx වින්‍යාසය තුළ ප්‍රහාරය සිදු කළ හැක, නමුත් පළමුව "try_files $fastcgi_script_ භාවිතා කර ගොනුවේ පැවැත්ම පරීක්ෂා නොකර. විධානය හෝ "if (!-f $) document_root$fastcgi_script_name)". ගැටලුව ද වේ ප්‍රකාශ වෙනවා NextCloud වේදිකාව සඳහා පිරිනමනු ලබන සැකසුම් තුළ. උදාහරණයක් ලෙස, ව්යුහයන් සහිත වින්යාසය:

ස්ථානය ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (. +? \. 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 පරිසර විචල්‍යයට ලියා ඇත. මෙම නඩුවේදී, තවදුරටත් ක්රියාත්මක කිරීම දිගේ සිදුකරන ලදී මාර්ගය_තොරතුරු[0] බිංදුවට ලිවීම සහ FCGI_PUTENV අමතන්න.

යම් ආකාරයකට ෆෝමැට් කරන ලද URL එකක් ඉල්ලා සිටීමෙන්, ප්‍රහාරකයෙකුට “_fcgi_data_seg” ව්‍යුහයේ පළමු බයිටයට path_info පොයින්ටරයේ මාරුවක් ලබා ගත හැකි අතර, මෙම බයිටයට බිංදුවක් ලිවීම “char* pos” චලනය වීමට හේතු වේ. කලින් ස්ථානගත වූ මතක ප්‍රදේශයකට දර්ශකය. මීළඟ FCGI_PUTENV ලෙස හඳුන්වන මෙම මතකයේ ඇති දත්ත ප්‍රහාරකයාට පාලනය කළ හැකි අගයක් සමඟ උඩින් ලියයි. නිශ්චිත මතකය අනෙකුත් FastCGI විචල්‍යවල අගයන් ද ගබඩා කරන අතර, ඒවායේ දත්ත ලිවීමෙන්, ප්‍රහාරකයෙකුට මනඃකල්පිත PHP_VALUE විචල්‍යයක් නිර්මාණය කර ඒවායේ කේතය ක්‍රියාත්මක කිරීමට හැකි වේ.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න