Gwendid PHP-fpm sy'n caniatáu gweithredu cod o bell ar y gweinydd

Ar gael datganiadau cywirol o PHP 7.3.11, 7.1.33 a 7.2.24, lle dileu kritiческая bregusrwydd (CVE-2019-11043) yn yr estyniad PHP-FPM (Rheolwr Proses FastCGI), sy'n eich galluogi i weithredu'ch cod ar y system o bell. I ymosod ar weinyddion sy'n defnyddio PHP-FPM ar y cyd â Nginx i redeg sgriptiau PHP, mae eisoes ar gael i'r cyhoedd gweithio ymelwa.

Mae'r ymosodiad yn bosibl mewn ffurfweddau nginx lle mae anfon ymlaen i PHP-FPM yn cael ei wneud trwy wahanu rhannau o'r URL gan ddefnyddio “fastcgi_split_path_info” a diffinio'r newidyn amgylchedd PATH_INFO, ond heb wirio bodolaeth y ffeil yn gyntaf gan ddefnyddio'r “try_files $ fastcgi_script_name” cyfarwyddeb neu'r "os (!-f $) document_root$ fastcgi_script_name)". Mae'r broblem hefyd yn ymddangos yn y gosodiadau a gynigir ar gyfer y platfform NextCloud. Er enghraifft, ffurfweddiadau gyda strwythurau fel:

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

Gallwch olrhain datrysiad y broblem mewn citiau dosbarthu ar y tudalennau hyn: Debian, RHEL, Ubuntu, SUS/openSUSE, FreeBSD, Arch, Fedora. Fel ateb, gallwch ychwanegu siec am fodolaeth y ffeil PHP y gofynnwyd amdani ar ôl y llinell “fastcgi_split_path_info”:

try_files $ fastcgi_script_name = 404;

Achosir y broblem gan wall wrth drin awgrymiadau mewn ffeil sapi/fpm/fpm/fpm_main.c. Wrth aseinio pwyntydd, rhagdybir bod yn rhaid i werth y newidyn amgylchedd PATH_INFO gynnwys rhagddodiad sy'n cyfateb i'r llwybr i'r sgript PHP.
Os yw'r gyfarwyddeb fastcgi_split_path_info yn pennu hollti'r llwybr sgript gan ddefnyddio mynegiant rheolaidd newydd-sensitif (er enghraifft, mae llawer o enghreifftiau'n awgrymu defnyddio "^(.+?\.php)(/.*)$"), yna gallai ymosodwr sicrhau bod gwerth gwag wedi'i ysgrifennu i'r newidyn amgylchedd PATH_INFO. Yn yr achos hwn, ymhellach ar hyd y gweithredu ei gynnal ysgrifennu path_info[0] i sero a galw FCGI_PUTENV.

Trwy ofyn am URL wedi'i fformatio mewn ffordd benodol, gall ymosodwr symud y pwyntydd path_info i beit cyntaf y strwythur “_fcgi_data_seg”, a bydd ysgrifennu sero i'r beit hwn yn arwain at symud y “char * pos” pwyntydd i ardal cof a leolwyd yn flaenorol. Bydd y nesaf o'r enw FCGI_PUTENV yn trosysgrifo'r data yn y cof hwn gyda gwerth y gall yr ymosodwr ei reoli. Mae'r cof penodedig hefyd yn storio gwerthoedd newidynnau FastCGI eraill, a thrwy ysgrifennu eu data, gall ymosodwr greu newidyn PHP_VALUE ffug a chyflawni ei god.

Ffynhonnell: opennet.ru

Ychwanegu sylw