Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Критические уязвимости CVE-2026-109618 и CVE-2026-109619 в PHP: детали и защита

Критические уязвимости CVE-2026-109618 и CVE-2026-109619 в PHP: детали и защита

В конце октября были обнародованы две опасные уязвимости языка PHP, получившие индексы CVE-2026-109618 и CVE-2026-109619, с наивысшим баллом опасности по шкале CVSS. Обнаруженные критические уязвимости PHP позволяют злоумышленникам выполнять произвольный код на сервере без прохождения аутентификации, обладая правами запущенного веб-сервера. Под удар попадают все конфигурации и версии интерпретатора, начиная с ветки 5.4. Примечательно, что сами брешь-факторы были выявлены с применением современных систем искусственного интеллекта, а размер официального исправления превысил десять тысяч строк исходного кода.

Информационный фон вокруг проблемы начал стремительно нарастать после публикации первых отчетов безопасности. Специалисты крупных облачных провайдеров и сервисов защиты зафиксировали миллионы попыток сканирования и атак на инфраструктуру клиентов.

Критические уязвимости CVE-2026-109618 и CVE-2026-109619 в PHP: детали и защита — изображение 3
Критические уязвимости CVE-2026-109618 и CVE-2026-109619 в PHP: детали и защита — изображение 4

В чем суть уязвимостей

Основной замысел атакующего заключается в принудительном вызове фатальной ошибки в интерпретаторе во время обработки входящего HTTP-запроса, например исчерпания оперативной памяти типа Out-of-memory. Проблемы безопасности связаны с тем, что механизм обработки данных может ошибочно воспринимать новый массив как полностью проинициализированный, хотя из-за нехватки ресурсов этот процесс не был завершен корректно.

Реклама

За счет отправки специально сформированных пакетов данных злоумышленник добивается того, что под разные массивы выделяется один и тот же участок памяти. В результате поврежденная структура данных содержит ссылки и указатели, оставшиеся от предыдущих операций. При последующей очистке памяти интерпретатор обращается по адресам, которые уже контролируются внешней стороной. Поскольку в современных системах действует рандомизация адресного пространства ASLR, для успешного проведения атаки требуется дополнительно реализовать утечку памяти и определить точное расположение системных функций.

Методы и векторы эксплуатации

Глубокая природа дефектов, связанных с распределением памяти в интерпретаторе, допускает несколько различных сценариев реализации атак. Каждый вектор опирается на определенные особенности обработки входящего трафика и внутренних структур данных.

Использование форм x-www-form-urlencoded

Необходимый объем выделяемой памяти достигается за счет передачи параметров с огромной глубиной вложенности имен. Интерпретатор начинает учитывать элемент массива заблаговременно, а копирование длинной строки в процессе разбора запроса приводит к превышению лимита memory_limit и аварийному завершению. Ошибочно распознав подложные байты, система выполняет вредоносный код при попытке очистить память.

Отслеживание загрузки файлов

Второй сценарий задействует механизм мониторинга загрузки через параметр PHP_SESSION_UPLOAD_PROGRESS при обработке многочастных запросов. Большое количество пустых полей с вложенными именами также провоцирует нехватку оперативной памяти. После сбоя указатель на распределенную память может сохраниться, а последующий запрос обращается к нему повторно, реализуя сценарий use-after-free. Взаимодействие со структурой сессии позволяет через заголовок Set-Cookie добиться утечки данных и запустить исполнение команд.

Обработка отчетов о сбоях в ветке PHP 8.5

В актуальной ветке по умолчанию активен специальный флаг сохранения стека вызовов на момент фатального сбоя. После завершения запроса память освобождается, но сохраненный указатель продолжает существовать. Новое сообщение об ошибке заставляет интерпретатор повторно обратиться к устаревшему участку памяти, что открывает дополнительный вектор для атак типа use-after-free.

Реклама

Сетевые признаки и активность злоумышленников

Для единственной полностью реализованной цепочки атак характерен явный маркер в виде параметра отслеживания прогресса в теле запроса. На успешную эксплуатацию указывает аномально длинное значение идентификатора сессии в заголовке ответа, содержащее закодированные байты памяти. Тем не менее универсального сетевого индикатора, применимого ко всем возможным вариациям эксплойтов, на данный момент не существует.

Практический интерес к уязвимостям проявился сразу после их обнародования. Подразделения кибербезопасности фиксировали подозрительную активность за несколько дней до официального релиза патчей, а после публикации количество заблокированных запросов в защищенных сетях исчислялось миллионами.

Способы защиты и устранения уязвимостей

Единственным гарантированным способом полностью закрыть обе бреши является обновление программного обеспечения до актуальных защищенных версий. Разработчики выпустили исправления для всех поддерживаемых веток.

Рекомендуемые версии для обновления

Необходимо обновить интерпретатор до версий 8.2.35, 8.3.36, 8.4.27, 8.5.12 или более поздних модификаций соответствующей ветки.

Временные защитные меры

До момента установки обновлений снизить риски несанкционированного доступа помогают следующие конфигурационные параметры, которые должны применяться до начала разбора запроса:

  • Отключение параметра сессионного мониторинга загрузок с помощью директивы session.upload_progress.enabled=0.
  • Деактивация сохранения стеков ошибок через настройку fatal_error_backtraces=0 в версиях семейства 8.5.
  • Введение строгих ограничений на размер и общую сложность входящих HTTP-запросов на уровне веб-сервера или обратного прокси.

Для смягчения последствий первой уязвимости также рекомендуется устанавливать безлимитное значение памяти в конфигурации совместно с жесткими ограничениями на уровне контейнеров или групп ресурсов операционной системы, однако данные меры носят исключительно вспомогательный характер.

Критические уязвимости CVE-2026-109618 и CVE-2026-109619 в PHP: детали и защита
01.