Критическая уязвимость в PHP: удаленное выполнение кода через функцию var_destroy()

vulnerability

В начале мая 2026 года в Банке данных угроз безопасности информации (BDU) была зарегистрирована новая критическая уязвимость, затрагивающая интерпретатор языка PHP. Проблема получила идентификатор BDU:2026-06302 и касается всех версий PHP от 8.2.12 до 8.5.5 включительно. Речь идет об ошибке в функции var_destroy(), которая открывает возможность для удаленной атаки на серверы, работающие под управлением этого популярного языка.

Детали уязвимости

Согласно данным из BDU, уязвимость связана с двумя типами ошибок: переполнением буфера в динамической памяти (CWE-122) и использованием памяти после ее освобождения (CWE-416). На практике это означает, что злоумышленник, действующий удаленно, может отправить специально сформированный запрос, который заставит интерпретатор PHP обратиться к уже освобожденному участку оперативной памяти. В результате нарушитель получает возможность выполнить произвольный код на целевой системе.

Оценка опасности по международной шкале CVSS максимально высокая. Базовая оценка CVSS версии 2.0 составляет 10 баллов из 10 возможных. По версии 3.1 уязвимость получила 9,8 балла. Обе оценки соответствуют критическому уровню опасности. При этом вектор атаки - сетевой, то есть для эксплуатации не требуется физического доступа к устройству. Аутентификация не нужна, а сложность атаки оценивается как низкая.

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

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

Как именно работает атака? Функция var_destroy() используется внутри PHP для уничтожения переменных и освобождения памяти. Из-за ошибки в реализации этой функции после завершения одного цикла очистки определенные ссылки на уже освобожденную память остаются активными. Если в этот момент другой процесс или тот же скрипт снова обратится к этим данным через функции var_push или var_access, он получит доступ к освобожденному участку. Злоумышленник может воспользоваться этим, чтобы подменить данные или внедрить собственный код.

Разработчики PHP Group уже подтвердили уязвимость и ведут работы по ее устранению. На момент публикации точные версии с исправлением не указаны. Однако в BDU приведены компенсирующие меры, которые могут снизить риск до выхода патча. Альтернативный вариант защиты заключается в обнулении определенных переменных структуры данных после завершения цикла освобождения памяти. Если администратор сервера имеет доступ к исходному коду и может внести изменения, рекомендуется сбросить указатели (*var_hashx)->entries.next и (*var_hashx)->last после выполнения фазы очистки. Это не позволит повторно войти в освобожденную цепочку даже при использовании вредоносных запросов.

Однако для большинства системных администраторов и владельцев сайтов такой вариант малоприменим. Им остается только следить за выходом официальных обновлений от разработчиков PHP. Рекомендуется как можно скорее обновить интерпретатор до последней стабильной версии, как только патч будет выпущен.

Стоит отметить, что подобные уязвимости класса "использование памяти после освобождения" традиционно считаются одними из самых опасных. В истории кибербезопасности такие ошибки приводили к крупным инцидентам: от взлома корпоративных сетей до компрометации целых облачных платформ. Поскольку PHP лежит в основе множества систем управления контентом, таких как WordPress, Joomla или Drupal, а также фреймворков Laravel и Symfony, потенциальное количество целей огромно.

Пока официальные патчи не выпущены, специалистам по информационной безопасности стоит усилить мониторинг сетевого трафика и обращать внимание на подозрительные запросы к скриптам PHP. Особое внимание - на запросы, содержащие длинные строки или нестандартные структуры данных. Кроме того, стоит временно ограничить выполнение функций var_destroy() и связанных с ней, если это возможно без нарушения работы приложений.

В заключение: уязвимость BDU:2026-06302 - это серьезный сигнал для всех владельцев серверов под управлением PHP. Критический уровень опасности, наличие готового эксплойта и отсутствие официального обновления делают атаку не только возможной, но и вероятной в ближайшее время. Рекомендуется принять все доступные меры защиты и быть готовыми к экстренному обновлению. Безопасность информационных систем зависит от своевременной реакции на подобные угрозы.

Ссылки

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