CISA добавила в KEV-каталог уязвимости PHP с удалённым выполнением кода

Cybersecurity and Infrastructure Security Agency, CISA

CISA внесла в каталог Known Exploited Vulnerabilities (KEV - перечень уязвимостей с подтверждённой эксплуатацией в реальных атаках) две уязвимости интерпретатора PHP. Обе позволяют удалённо выполнить произвольный код на сервере, где работает PHP. Затронуты ветки 8.2, 8.3, 8.4 и 8.5. Попадание в KEV означает, что уязвимости уже применяют в атаках, а не только описывают в теории.

CVE-2026-109618 и CVE-2026-109619 в PHP

Обе записи опубликованы 21 октября 2026 года, источник сведений - группа PHP (PHP Group). Характеристики у уязвимостей одинаковые: 9.2 из 10 по шкале CVSS версии 4.0, уровень Critical. Атака идёт по сети, учётные данные не нужны, участие пользователя не требуется. Сложность реализации при этом высокая: дефект памяти проявляется лишь при определённом состоянии запроса. Каталог KEV ведёт CISA, включение в него обязывает федеральные агентства США закрывать уязвимость в срок, а остальным организациям даёт сигнал о реальной эксплуатации.

PHP - интерпретатор, который выполняет код сайтов и приложений на стороне сервера. Поэтому дефект в нём затрагивает не одно приложение, а все, что работают на этой сборке. В обеих записях перечислены родственные категории проблем: использование памяти после освобождения, обращение к неинициализированному указателю и некорректная обработка исключительных ситуаций. Указатель - это адрес блока памяти; если он не заполнен, программа обращается по случайному адресу.

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

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

Исправленные выпуски уже вышли. Ветки закрыты версиями 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Уязвимы предыдущие сборки каждой ветки: 8.2 до 8.2.35, 8.3 до 8.3.36, 8.4 до 8.4.27 и 8.5 до 8.5.12. Проверить установленную сборку можно средствами самого интерпретатора или в панели хостинга.

Обходных мер, которые снимали бы риск, в записях нет. Администраторам нужно сверить ветку и номер сборки на каждом сервере с PHP, а затем поставить исправленный выпуск. Если обновление сразу невозможно, остаётся следить за публикацией новых сведений по этим записям.

Значимость уязвимостей определяют два фактора: они уже эксплуатируются в реальных атаках и дают удалённое выполнение кода без учётных данных. Исправления доступны, поэтому основной риск связан с задержкой обновления на серверах с публично доступным PHP.

Ссылки

Комментарии: 0