Критическая уязвимость PHP-FPM (CVE-2019-11043)

Likvik
На сайте с 29.07.2010
Offline
132
1637

Критическая уязвимость PHP-FPM (CVE-2019-11043)

Стало известно о критической уязвимости PHP-FPM (CVE-2019-11043), которая позволяет удалённо выполнить вредоносный код на сервере.

Уже доступны корректирующие релизы PHP 7.3.11, 7.1.33 и 7.2.24, в которых устранена данная уязвимость. Найти их можно по ссылке.

https://www.php.net/archive/2019.php

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

Проблема вызвана ошибкой при манипуляции с указателями в файле sapi/fpm/fpm/fpm_main.c. При присвоении указателя предполагается, что значение переменной окружения PATH_INFO обязательно содержит префикс, совпадающий с путём к PHP-скрипту. Если в директиве fastcgi_split_path_info указано разделение пути к скрипту с использованием регулярного выражения, чувствительного к передаче символа перевода строки (например, во многих примерах предлагается использовать "^(.+?\.php)(/.*)$"), то атакующий может добиться записи в переменную окружения PATH_INFO пустого значения. В этом случае далее по ходу выполнения осуществляется запись в path_info[0] нуля и вызов FCGI_PUTENV.

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

А теперь вопрос: как обновить до PHP 7.3.11 на Debian 9 кроме как вручную?

На данный момент в стандартном репозитарии только PHP 7.3.10

UPD:
В качестве обходного метода защиты после строки "fastcgi_split_path_info" можно добавить проверку существования запрошенного PHP-файла:
try_files $fastcgi_script_name =404;

Незнание порождает уверенность.
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#1

в 10 дебиане 7.3.9-1~deb10u1

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
Lord Maverik
На сайте с 15.04.2003
Offline
471
#2

А если 5-й php шо делать?

RedMall.Ru (https://redmall.ru) - Товары из Китая (Таобао, Tmall) с проверкой качества, скидка для форумчан 7% Партнерская программа 2 уровня: 5% + 5%. Подробнее. (https://redmall.ru/about/partner/)
SI
На сайте с 03.12.2007
Offline
130
#3
Likvik:

...

А теперь вопрос: как обновить до PHP 7.3.11 на Debian 9 кроме как вручную?
На данный момент в стандартном репозитарии только PHP 7.3.10

UPD:
В качестве обходного метода защиты после строки "fastcgi_split_path_info" можно добавить проверку существования запрошенного PHP-файла:
try_files $fastcgi_script_name =404;

В Debian такая строка уже есть.

https://salsa.debian.org/nginx-team/nginx/blob/master/debian/conf/snippets/fastcgi-php.conf

-= Онлайн сервисы =-
HB
На сайте с 02.10.2014
Offline
75
#4
Lord Maverik:
А если 5-й php шо делать?

Радоваться отсутствию этой уязвимости.

SeVlad
На сайте с 03.11.2008
Offline
1609
#5
HelgaBorjoni:
Радоваться отсутствию этой уязвимости.

Отсутствие патчей для старых версий php говорит о том что они умерли, а не что там нет дыр:

My exploit works on all 7+ versions, but the core issue seems to exists since the mentioned code was written. I was able to reproduce the crash even on php 5.6.
Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#6

Версия 7.3.11 наконец появилась в стандартных репозиториях в дебиан 10 и убунту 19.10, теперь точно можно обновляться, кто еще не обновился.

RiDDi
На сайте с 06.06.2010
Offline
256
#7

Эксплойт с романтическим названием прилагается :)

---------- Добавлено 27.11.2019 в 02:43 ----------

HelgaBorjoni:
Радоваться отсутствию этой уязвимости.

В PHP5 все то же самое :)

Просто там нет функции оптимизации которую использует конкретно этот эксплойт.

Но есть другие..

Вебмастер отдыхает на бережках морей. Заработок в интернете - дело техники.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий