Vulnerabiliteti php-fpm, i cili lejon ekzekutimin e kodit nga distanca në server

Të disponueshme versionet korrigjuese PHP 7.3.11, 7.1.33 dhe 7.2.24, të cilat i eliminuar kritike vulnerabiliteti (CVE-2019-11043) në zgjerimin PHP-FPM (menaxheri i proceseve FastCGI), që lejon ekzekutimin e kodit tuaj në sistem nga distanca. Një exploit funksional është tashmë i disponueshëm publikuar për sulmet ndaj serverëve që përdorin PHP-FPM së bashku me Nginx për ekzekutimin e skripteve PHP. funksional lejon që të shkaktohet një crash përmes dërgimit të një stringu të gjatë (disa kilobajt) në komandën EHLO, por vulnerabiliteti mund të shfrytëzohet edhe përmes komandave të tjera, dhe potencialisht mund të përdoret për të organizuar ekzekutimin e kodit..

Sulmi është i mundur në konfigurimet nginx, ku kalimi në PHP-FPM bëhet me ndarje të pjesëve të URL-së përmes "fastcgi_split_path_info" dhe përcaktimin e variablit të mjedisit PATH_INFO, por pa verifikim paraprak të ekzistencës së skedarit nga direktiva "try_files $fastcgi_script_name" ose konstrukti "if (!-f $document_root$fastcgi_script_name)". Problemi gjithashtu shfaqet ndodhet në cilësimet e ofruara për platformën NextCloud. Për shembull, konfigurimet me konstrukte të natyrshme mjaft të rrezikshme janë:

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

Për të ndjekur zgjidhjen e problemit në shpërndarjet mund të vizitoni këto faqe: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, Arch, Fedora. Si një metodë për të mbrojtur pas linjës "fastcgi_split_path_info", mund të shtoni kontrollin e ekzistencës së skedarit PHP të kërkuar:

try_files $fastcgi_script_name =404;

Problemi shkaktohet nga një gabim në manipulimin e treguesve në skedarin sapi/fpm/fpm/fpm_main.c. Gjatë caktimit të treguesit supozohet se vlera e variablit të mjedisit PATH_INFO duhet të përmbajë një prefix që përputhet me rrugën e skriptit PHP.
Nëse në direktivën fastcgi_split_path_info është e specifikuar ndarja e rrugës së skriptit me një shprehje të rregullt, që është e ndjeshme ndaj kalimit të karakterit të ndërrimit të linjës (për shembull, në shumë raste rekomandohet të përdoret "^(.+?\.php)(\/.*)$"), atëherë sulmuesi mund të arrijë të shkruajë në variablit të mjedisit PATH_INFO një vlerë të zbrazët. Në këtë rast, gjatë ekzekutimit po realizohet do të ndodhi shkruhet në path_info[0] zero dhe thirrja e FCGI_PUTENV.

Duke kërkuar një URL të formuar në një mënyrë të caktuar, sulmuesi mund të arrijë të zhvendosë treguesin path_info në byte-in e parë të strukturës "_fcgi_data_seg", dhe shkruarja e zeros në këtë byte do të çojë në zhvendosjen e treguesit "char* pos" në një zonë më parë të memories. Thirrja që vjen më pas e FCGI_PUTENV do të mbushë të dhënat në këtë memorie me një vlerë që mund të kontrollojë sulmuesi. Në këtë memorie, gjithashtu ruhet vlera e variablave të tjerë FastCGI dhe duke shkruar të dhënat e tij, sulmuesi mund të krijohet një variabël fantazmë PHP_VALUE dhe arrin të ekzekutojë kodin e tij.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster