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

Доступны корректирующие релизы PHP 7.3.11, 7.1.33 и 7.2.24, в которых i eliminuar kritike vulnerabiliteti (CVE-2019-11043) в расширении PHP-FPM (менеджер процессов FastCGI), позволяющая удалённо выполнить свой код в системе. Для атаки на серверы, использующие для запуска PHP-скриптов PHP-FPM в связке с Nginx, уже публично доступен рабочий 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..

Атака возможна в конфигурациях nginx, в которых проброс в PHP-FPM осуществляется c разделением частей URL при помощи «fastcgi_split_path_info» и определением переменной окружения PATH_INFO, но без предварительной проверки существования файла директивой «try_files $fastcgi_script_name» или конструкцией «if (!-f $document_root$fastcgi_script_name)». Проблема в том числе shfaqet в настройках, предлагаемых для платформы NextCloud. Например, уязвимы конфигурации с конструкциями вида:

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

Проследить за устранением проблемы в дистрибутивах можно на данных страницах: Debian, RHEL, Ubuntu, SUSE/openSUSE, FreeBSD, Arch, Fedora. В качестве обходного метода защиты после строки «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 пустого значения. В этом случае далее по ходу выполнения po realizohet запись в path_info[0] нуля и вызов FCGI_PUTENV.

Запросив определённым образом оформленный URL атакующий может добиться смещения указателя path_info на первый байт структуры «_fcgi_data_seg», а запись нуля в этот байт приведёт к перемещению указателя «char* pos» на ранее идущую область памяти. Вызываемый следом FCGI_PUTENV перезапишет данные в этой памяти значением, которое может контролировать атакующий. В указанной памяти в том числе хранятся значения других переменных FastCGI и записав свои данные атакующий может создать фиктивную переменную PHP_VALUE и добиться выполнения своего кода.

Burimi: opennet.ru

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster