സെർവറിൽ റിമോട്ട് കോഡ് എക്‌സിക്യൂഷൻ അനുവദിക്കുന്ന 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, ഫ്രീബിഎസ് ഡി, വളവ്, ഫെഡോറ. ഒരു പരിഹാരമെന്ന നിലയിൽ, "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" ഘടനയുടെ ആദ്യ ബൈറ്റിലേക്ക് പാത്ത്_ഇൻഫോ പോയിന്ററിന്റെ മാറ്റം ഒരു ആക്രമണകാരിക്ക് നേടാനാകും, കൂടാതെ ഈ ബൈറ്റിൽ ഒരു പൂജ്യം എഴുതുന്നത് "char* pos"-ന്റെ ചലനത്തിലേക്ക് നയിക്കും. മുമ്പ് സ്ഥിതിചെയ്യുന്ന മെമ്മറി ഏരിയയിലേക്കുള്ള പോയിന്റർ. അടുത്തതായി വിളിക്കപ്പെടുന്ന FCGI_PUTENV, ആക്രമണകാരിക്ക് നിയന്ത്രിക്കാൻ കഴിയുന്ന ഒരു മൂല്യം ഉപയോഗിച്ച് ഈ മെമ്മറിയിലെ ഡാറ്റയെ പുനരാലേഖനം ചെയ്യും. നിർദ്ദിഷ്ട മെമ്മറി മറ്റ് FastCGI വേരിയബിളുകളുടെ മൂല്യങ്ങളും സംഭരിക്കുന്നു, കൂടാതെ അവരുടെ ഡാറ്റ എഴുതുന്നതിലൂടെ, ഒരു ആക്രമണകാരിക്ക് ഒരു സാങ്കൽപ്പിക PHP_VALUE വേരിയബിൾ സൃഷ്ടിക്കാനും അവയുടെ കോഡിന്റെ നിർവ്വഹണം നേടാനും കഴിയും.

അവലംബം: opennet.ru

ഒരു അഭിപ്രായം ചേർക്കുക