
PHP 8.5.11 — критическая — удалённая — UAF — CVE-2026-109619 PHP2Shell. Фатальная трассировка в том же воркере, затем INI-диагностика на Apache mod_php. Лабораторная среда против 8.5.12. В рекомендациях предполагается RCE.
Любой в интернете может обращаться к вашему PHP-сайту так же, как это делает браузер, без пароля. На последней уязвимой версии PHP 8.5 он может заставить один запрос завершиться с фатальной ошибкой, а затем отправить второй запрос тому же воркеру. PHP 8.5 сохраняет backtrace от этой фатальной ошибки в памяти, глобальной для воркера, после того как куча запроса уже освобождена. Второй запрос читает его при применении оставшегося флага INI, прежде чем движок успевает сбросить своё состояние. В этой лаборатории такой второй запрос убивает дочерний процесс Apache. PHP Group показала, что тот же шаблон может привести к удалённому выполнению кода с правами веб-воркера.
Класс: UAF / Crash Доступ: Remote
PHP 8.5.11 (php:8.5.11-apache) против исправленной 8.5.12 - php.net
CVE-2026-109619 — это устаревшее состояние, глобальное для воркера. Лаборатория фиксирует Apache prefork на одном дочернем процессе, вызывает фатальную ошибку с fatal_error_backtraces=On, а затем использует её через per-dir php_flag auto_detect_line_endings on / report_memleaks off, применяемые до php_request_startup(). 8.5.11: producer возвращает 200 с фатальной ошибкой, consumer — сброс соединения, в логе Apache zend_mm_heap corrupted. 8.5.12: та же двухфазная последовательность остаётся работоспособной (consumer-ok). RCE с правами воркера Apache выводится из GHSA.
| ID | CVE-2026-109619 |
| Advisory | GHSA-6wmf-4rv5-p3rp |
| Класс | UAF / Crash (RCE выведено из advisory) |
| Доступ | Remote (неаутентифицированный HTTP, тот же воркер) |
| CWE | CWE-416 / CWE-825 |
| CVSS | Critical: 9.2 CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H (PHP Group) |
| Продукт | PHP |
| Уязвимы | PHP 8.2 до 8.2.35, 8.3 до 8.3.36, 8.4 до 8.4.27, 8.5 до 8.5.12 (в лаборатории зафиксирована 8.5.11, ветка backtrace — 8.5) |
| Исправлено | 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12 (21 октября 2026) |
| Аутентификация | нет |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1 |
Родственная уязвимость: CVE-2026-109618 OOM longjmp (пара PHP2Shell).
| Метод | Точка срабатывания | Привилегия |
|---|---|---|
Неаутентифицированный GET /producer.php, затем GET /consumer.php на том же дочернем процессе Apache prefork | fatal_error_backtraces в 8.5 никогда не сбрасывается при завершении; диагностика INI до php_request_startup() | Доступность (доказано в лаборатории): убить этот дочерний процесс (zend_mm_heap corrupted, сброс соединения) на 8.5.11. Целостность (выведено): висячий указатель backtrace; вендор показал RCE с правами www-data. Разведка (выведено): раскрытие остатков кучи запроса. |
| Та же двухфазная последовательность на 8.5.12 | полный сброс состояния | Закрыто (доказано в лаборатории): тело ответа consumer — consumer-ok, воркер продолжает работать. |
error_reporting / display_errors / @ | предупреждение всё равно использует устаревшее состояние | Закрыто как способ смягчения. Глобальное состояние читается до того, как PHP решает, сообщать ли о диагностике. |
.user.ini пула FPM | применяется после обычной инициализации | Закрыто как этот ранний потребитель. FPM требует фронтенд PHP_VALUE / PHP_ADMIN_VALUE. Прогресс загрузки сессии — вторая подтверждённая вендором ветка (mod_php и FPM); в этой лаборатории использовалась ветка backtrace 8.5. |
Логин, reverse shell, собственный .so | н/д | Закрыто. Попыток контроля RIP не предпринималось. |
Доказано в лаборатории vs выведено: UAF/crash на том же воркере против исправленного контроля доказан в лаборатории. RCE выведено из GHSA-6wmf-4rv5-p3rp.
Требуется: Apache apache2handler prefork, зафиксированный на одном воркере. PHP 8.5 fatal_error_backtraces=On. Per-dir диагностика INI. Официальные php:8.5.11-apache против php:8.5.12-apache.
python3 php-stale-global-uaf-Abraxas-Labs.py
или cd lab && ./run.sh. Loopback 127.0.0.1:18222 (8.5.11) против 127.0.0.1:18223 (8.5.12). Проект Compose cve-2026-109619. Свидетель CVE-2026-109619-UAF-WITNESS. Последняя строка:
SUCCESS CVE-2026-109619 vuln-uaf=yes vuln-crash=yes patched-ok=yes sapi=apache2handler pin=same-worker vuln-image=php:8.5.11-apache patched-image=php:8.5.12-apache how=backtrace crash=connection-reset CVE-2026-109619-UAF-WITNESS
Только авторизованная лаборатория. Взаимодействует с loopback.
Обновитесь до PHP 8.5.12 (или 8.2.35 / 8.3.36 / 8.4.27). До тех пор: fatal_error_backtraces=0 на 8.5 (только для этого производителя); session.upload_progress.enabled=0 (только для ветки сессий); откажитесь от устаревших INI-настроек для каждого запроса; pm.max_requests=1, если можете себе это позволить. Полного универсального способа смягчения настройками не существует.
Abraxas Labs [email protected]