Локальная root-уязвимость в PHP-FPM
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В PHP-FPM, менеджере процессов FastCGI, входящем в основную поставку PHP начиная с ветки 5.3, выявлена критическая уязвимость CVE-2021-21703, дающая возможность непривилегированному пользователю хостинга выполнить код с правами root. Проблема проявляется на серверах, использующих для организации запуска PHP-скриптов PHP-FPM, обычно применяемый в связке с Nginx. Выявившие проблему исследователи смогли подготовить рабочий прототип эксплоита.
Уязвимость вызвана сохранением указателей в область разделяемой памяти (scoreboard), применяемой для организации взаимодействия между дочерним и родительским процессом PHP-FPM. Основной процесс PHP-FPM, координирующий работу, запускается с правами root и порождает несколько дочерних процессов, которые выполняются под непривилегированным пользователем (обычно www-data или nobody) и непосредственно занимаются выполнением PHP-скриптов. Суть проблемы в том, что подконтрольный пользователю дочерний процесс может получить доступ к разделяемой памяти управляющего процесса и изменить указатели, используемые в основном процессе (в структуре scoreboard сохраняются указатели на вложенную структуру fpm_scoreboard_proc_s).
Указанная особенность позволяет атакующему, который имеет возможность запустить свой PHP-код на сервере, обойти sandbox-изоляцию интерпретатора и через подмену указателей в структуре fpm_scoreboard_s очистить область памяти основного процесса или изменить значение 32-разрядных целых значений с нуля на единицу. Для изменения значения атакующий записывает указатель на целочисленную переменную в массив scoreboard->procs и отправляет связанному с этим указателем обработчику сигнал SIGKILL.
Подобные манипуляции дают возможность через проявление ещё одной ошибки добиться выполнения своего кода в основном процессе. В частности, в памяти можно установить в 1 настройку catch_workers_output, которая по умолчанию имеет значение 0. Указанная настройка включает сохранение в лог stderr-вывода от рабочих процессов php-fpm. Поступающая информация буферизируется, а буфер создаётся в куче основного процесса, что позволяет атакующему разместить в куче до 1024 байт произвольных данных. Далее манипулируя возможностью менять 0 на 1 и очищать память, атакующий может изменить размера блока и добиться контролируемого переполнения кучи.
Уязвимость проявляется начиная с версии PHP 5.3.7, в которую был интегрирован PHP-FPM. Примечательно, что разработчики PHP были уведомлены о проблеме ещё в мае, но не спешили с подготовкой исправления. В итоге уязвимость была устранена в обновлениях PHP 7.3.32, 8.0.12 и 7.4.25 уже после раскрытия сведений о проблеме. Для веток PHP, поддержка которых уже прекращена, можно попытаться использовать патч. Основные дистрибутивы выпустили обновления пакетов с устранением уязвимости: Debian, RHEL, SUSE, Ubuntu, Fedora, Arch. В портах FreeBSD проблема пока не устранена.
В 2019 году похожая уязвимость, также связанная с хранением указателей в разделяемой памяти scoreboard, была исправлена в механизме управления дочерними процессами в Apache httpd. Уязвимость позволяла локальному злоумышленнику (например, пользователю хостинга), имеющему возможность выполнить свой скрипт под управлением web-сервера, добиться выполнения кода с правами управляющего процесса, обычно запускаемого с привилегиями root.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://www.openwall.com/lists...)
- OpenNews: Уязвимость php-fpm, позволяющая удалённо выполнить код на сервере
- OpenNews: Уязвимость, позволяющая совершить MITM-атаку через манипуляцию с HTTP-заголовком Proxy
- OpenNews: Обновление PHP 5.5.12 с устранением уязвимости в PHP-FPM
- OpenNews: Критическая уязвимость в PHP
- OpenNews: Релиз http-сервера Apache 2.4.39 с устранением опасных уязвимостей
Похожие новости:
- Уязвимость в PHP, позволяющая обойти ограничения, заданные в php.ini
- Выпуск nginx 1.21.3
- Выпуск nginx 1.21.2 и njs 0.6.2
- [PHP, Программирование] Что нового в PHP 8.1 (перевод)
- [Системное администрирование, PHP, MySQL, Программирование, Cisco] Автоматический и автоматизированный способы блокировки ресурсов по поисковой выдаче
- [PHP, Go, Тестирование веб-сервисов, Kubernetes] Как мы делали инструмент для QA, а сделали для всего техотдела
- [Настройка Linux, Системное администрирование, Nginx, *nix] Nginx. Фазы обработки запроса. Практика
- [JavaScript, Node.JS] Создаем свой сайт или блог на Ghost в образе Docker
- Выпуск nginx 1.21.1
- [Разработка веб-сайтов, PHP, Symfony, Yii, Laravel] Валидация в приложении на PHP (часть 1 — валидация доменного слоя)
Теги для поиска: #_phpfpm, #_php, #_nginx
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 23:12
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В PHP-FPM, менеджере процессов FastCGI, входящем в основную поставку PHP начиная с ветки 5.3, выявлена критическая уязвимость CVE-2021-21703, дающая возможность непривилегированному пользователю хостинга выполнить код с правами root. Проблема проявляется на серверах, использующих для организации запуска PHP-скриптов PHP-FPM, обычно применяемый в связке с Nginx. Выявившие проблему исследователи смогли подготовить рабочий прототип эксплоита. Уязвимость вызвана сохранением указателей в область разделяемой памяти (scoreboard), применяемой для организации взаимодействия между дочерним и родительским процессом PHP-FPM. Основной процесс PHP-FPM, координирующий работу, запускается с правами root и порождает несколько дочерних процессов, которые выполняются под непривилегированным пользователем (обычно www-data или nobody) и непосредственно занимаются выполнением PHP-скриптов. Суть проблемы в том, что подконтрольный пользователю дочерний процесс может получить доступ к разделяемой памяти управляющего процесса и изменить указатели, используемые в основном процессе (в структуре scoreboard сохраняются указатели на вложенную структуру fpm_scoreboard_proc_s). Указанная особенность позволяет атакующему, который имеет возможность запустить свой PHP-код на сервере, обойти sandbox-изоляцию интерпретатора и через подмену указателей в структуре fpm_scoreboard_s очистить область памяти основного процесса или изменить значение 32-разрядных целых значений с нуля на единицу. Для изменения значения атакующий записывает указатель на целочисленную переменную в массив scoreboard->procs и отправляет связанному с этим указателем обработчику сигнал SIGKILL. Подобные манипуляции дают возможность через проявление ещё одной ошибки добиться выполнения своего кода в основном процессе. В частности, в памяти можно установить в 1 настройку catch_workers_output, которая по умолчанию имеет значение 0. Указанная настройка включает сохранение в лог stderr-вывода от рабочих процессов php-fpm. Поступающая информация буферизируется, а буфер создаётся в куче основного процесса, что позволяет атакующему разместить в куче до 1024 байт произвольных данных. Далее манипулируя возможностью менять 0 на 1 и очищать память, атакующий может изменить размера блока и добиться контролируемого переполнения кучи. Уязвимость проявляется начиная с версии PHP 5.3.7, в которую был интегрирован PHP-FPM. Примечательно, что разработчики PHP были уведомлены о проблеме ещё в мае, но не спешили с подготовкой исправления. В итоге уязвимость была устранена в обновлениях PHP 7.3.32, 8.0.12 и 7.4.25 уже после раскрытия сведений о проблеме. Для веток PHP, поддержка которых уже прекращена, можно попытаться использовать патч. Основные дистрибутивы выпустили обновления пакетов с устранением уязвимости: Debian, RHEL, SUSE, Ubuntu, Fedora, Arch. В портах FreeBSD проблема пока не устранена. В 2019 году похожая уязвимость, также связанная с хранением указателей в разделяемой памяти scoreboard, была исправлена в механизме управления дочерними процессами в Apache httpd. Уязвимость позволяла локальному злоумышленнику (например, пользователю хостинга), имеющему возможность выполнить свой скрипт под управлением web-сервера, добиться выполнения кода с правами управляющего процесса, обычно запускаемого с привилегиями root. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 21-Ноя 23:12
Часовой пояс: UTC + 5