Pagkahuyang sa php-fpm nga nagtugot sa remote code execution sa server

Magamit correction releases sa PHP 7.3.11, 7.1.33 ug 7.2.24, diin giwagtang kritikal pagkahuyang (CVE-2019-11043) sa PHP-FPM (FastCGI Process Manager) nga extension nga nagtugot kanimo sa layo nga pagpatuman sa imong code sa sistema. Sa pag-atake sa mga server nga naggamit sa PHP-FPM sa pagpadagan sa mga script sa PHP inubanan sa Nginx, kini anaa na sa publiko workman pahimuslan.

Posible ang pag-atake sa mga configuration sa nginx diin ang pagpasa sa PHP-FPM gihimo pinaagi sa pagbahin sa mga bahin sa URL gamit ang "fastcgi_split_path_info" ug pagtino sa PATH_INFO environment variable, apan dili una susihon ang paglungtad sa file gamit ang "try_files $fastcgi_script_name" direktiba o ang "kon (!-f $ document_root$fastcgi_script_name)". problema lakip na makita sa mga setting nga gitanyag alang sa NextCloud nga plataporma. Pananglitan, ang mga pag-configure nga adunay mga konstruksyon sa porma huyang:

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

Mahimo nimong sundon ang pag-troubleshoot sa mga pag-apod-apod sa kini nga mga panid: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, arko, Fedora. Ingon usa ka solusyon sa seguridad, pagkahuman sa linya nga "fastcgi_split_path_info", mahimo nimong idugang ang usa ka tseke alang sa paglungtad sa gihangyo nga file sa PHP:

try_files $fastcgi_script_name =404;

Ang problema tungod sa usa ka sayup samtang nagmaniobra sa mga pointer sa file sapi/fpm/fpm/fpm_main.c. Kung mag-assign ug pointer, gituohan nga ang bili sa PATH_INFO environment variable kinahanglan nga adunay prefix nga motakdo sa agianan sa PHP script.
Kung ang fastcgi_split_path_info nga direktiba nagtino sa pagbahin sa agianan sa script gamit ang usa ka regular nga ekspresyon nga sensitibo sa pagpasa sa bag-ong linya nga karakter (pananglitan, sa daghang mga pananglitan gisugyot nga gamiton ang "^(.+?\.php)(/. *)$"), unya ang tig-atake makakab-ot pagsulat og walay sulod nga bili sa PATH_INFO environment variable. Sa kini nga kaso, dugang pa sa pagpatuman gidala sa gawas pagsulat sa path_info[0] ngadto sa zero ug pagtawag sa FCGI_PUTENV.

Pinaagi sa paghangyo ug URL nga giporma sa usa ka piho nga paagi, ang usa ka tig-atake mahimong mobalhin sa path_info pointer ngadto sa unang byte sa "_fcgi_data_seg" nga istruktura, ug ang pagsulat og sero niini nga byte mobalhin sa "char * pos" pointer ngadto sa kanhi nga memory area. Ang sunod nga gitawag nga FCGI_PUTENV mag-overwrite sa datos sa kini nga memorya nga adunay kantidad nga makontrol sa tig-atake. Ang piho nga panumduman nagtipig usab sa mga kantidad sa ubang mga variable sa FastCGI, ug pinaagi sa pagsulat sa ilang datos, ang tig-atake mahimo’g maghimo usa ka dummy PHP_VALUE variable ug makab-ot ang pagpatuman sa iyang code.

Source: opennet.ru

Idugang sa usa ka comment