په php-fpm کې زیان منونکي چې په سرور کې د ریموټ کوډ اجرا کولو ته اجازه ورکوي

شتون لري د PHP 7.3.11، 7.1.33 او 7.2.24 اصلاحي خپرونه، په کوم کې له منځه وړل انتقادي زیانمنتیا (CVE-2019-11043) په PHP-FPM (FastCGI پروسې مدیر) توسیع کې، کوم چې تاسو ته اجازه درکوي په سیسټم کې خپل کوډ په لیرې توګه اجرا کړئ. په سرورونو برید کولو لپاره چې د پی ایچ پی سکریپټونو چلولو لپاره د نګینکس سره په ګډه PHP-FPM کاروي ، دا دمخه په عامه توګه شتون لري کارګر ګټه پورته کول.

برید د نګینکس ترتیبونو کې ممکن دی چې په کوم کې PHP-FPM ته لیږل د URL برخې جلا کولو سره د "fastcgi_split_path_info" په کارولو سره ترسره کیږي او د PATH_INFO چاپیریال متغیر تعریف کوي ، مګر پرته له دې چې لومړی د "try_files $fastcgi_script_name" په کارولو سره د فایل شتون چیک کړي. لارښود یا "که (!-f $)" جوړ کړي document_root$fastcgi_script_name)". ستونزه هم همدا ده ښکاري د NextCloud پلیټ فارم لپاره وړاندیز شوي تنظیماتو کې. د مثال په توګه، د جوړښتونو سره ترتیبونه لکه:

ځای ~ [^/]\.php(/|$) {
فاسټګی_سپلټ_پټ_فنو ^ (. +؟ \. php) (/.*) $؛
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php: 9000;
}

تاسو کولی شئ پدې پاڼو کې د توزیع کټونو کې د ستونزې حل تعقیب کړئ: Debian, RHEL, د وبنټو, SUSE/openSUSE, FreeBSD, Arch, فیډورا. د کار په توګه، تاسو کولی شئ د "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 ته زنګ وهل.

په یو مشخص ډول د یو آر ایل فارمیټ په غوښتنه کولو سره، برید کوونکی کولی شي د "_fcgi_data_seg" جوړښت لومړي بایټ ته د path_info پوینټر بدلون ترلاسه کړي، او دې بایټ ته د صفر لیکل به د "char* pos" حرکت لامل شي. د پخوانۍ حافظې ساحې ته اشاره کوي. بل چې FCGI_PUTENV نومیږي به پدې حافظه کې ډیټا د داسې ارزښت سره ولیکي چې برید کونکی یې کنټرولولی شي. ټاکل شوې حافظه د نورو FastCGI متغیرونو ارزښتونه هم ذخیره کوي ، او د دوی ډیټا لیکلو سره ، برید کونکی کولی شي جعلي PHP_VALUE متغیر رامینځته کړي او د دوی کوډ اجرا کړي.

سرچینه: opennet.ru

Add a comment