PHP ещё жив? КРИТИЧЕСКАЯ проблема! Под угрозой почти каждый сайт

  • Beget режет загрузку файлов, Cloudflare видит атаки: что случилось с PHP
php остановись что ты делаешь?
php остановись что ты делаешь?

21 октября команда PHP выпустила экстренные обновления. Они закрывают две критические уязвимости, CVE-2026-109618 и CVE-2026-109619, которые вместе назвали PHP2Shell. Обе оценены в 9,2 балла из 10 по CVSS v4.0. Через них можно выполнить свой код на сервере без логина и пароля.

Кого касается

Любой установки PHP, которая обрабатывает веб-запросы: PHP-FPM, Apache с mod_php, php-cgi, FrankenPHP, LiteSpeed. Сильнее всего рискуют серверы с mod_php. По словам команды PHP, там уже показан рабочий эксплойт: атака срабатывает от одного запроса ещё до того, как запустится код самого сайта.

На PHP работают WordPress, Joomla, Drupal, Битрикс и большая часть интернет-магазинов. Так что речь почти обо всех сайтах на обычном хостинге.

В чём проблема

Обе ошибки связаны с памятью. Если запрос завершается аварийно, PHP может оставить память в испорченном состоянии.

  • CVE-2026-109618: при нехватке памяти внутренние данные запроса остаются заполненными наполовину, а PHP потом считает их корректными.
  • CVE-2026-109619: состояние от прошлого запроса переживает освобождение памяти, и следующий запрос в том же процессе им пользуется. Это даёт утечку памяти и выполнение кода.

Код запускается с правами веб-сервера. На практике это доступ к файлам сайта, базе и паролям в конфигах.

В Cloudflare сообщили, что первые атаки видели ещё до выхода патчей. Британский NCSC советует серверы, которые нельзя обновить сразу, временно отключить.

Что сделал Beget

Beget разослал клиентам предупреждение ещё до выхода исправлений. На виртуальном хостинге и администрируемых серверах провайдер ограничил механизм upload_progress и планировал временно ограничить POST-запросы multipart/form-data, через которые загружаются файлы. Поэтому формы и загрузка файлов на сайтах могут какое-то время работать с перебоями. Веб-доступ к Adminer и phpMyAdmin облачных баз данных тоже временно закрыт. Сам Beget пишет, что эти меры снижают риск, но полной защиты не дают.

Что делать

  1. Узнать версию PHP на каждом сайте и поддомене.
  2. Обновиться до исправленной версии: 8.5.12, 8.4.27, 8.3.36 или 8.2.35. После обновления перезапустить PHP-процессы и пересобрать контейнеры.
  3. На виртуальном хостинге Beget: панель, «Сайты», «Управление сайтами», шестерёнка у домена, выбрать PHP 8.2 или новее. Потом проверить формы и плагины.
  4. На своём VPS ставить пакеты из дистрибутива. Вендоры часто закрывают дыру без смены номера версии, ищите CVE в changelog. Репозиторий Remi в день релиза обновлений не получил.
  5. Если стоит PHP 8.1 или старше: официальных обновлений не будет. Для 7.4, 8.0 и 8.1 команда PHP выложила минимальные патчи для сборки из исходников, но правильнее переехать на 8.2+.

Итог

Обходного пути нет, разработчики PHP прямо говорят: помогает только обновление. Старые и заброшенные сайты на PHP 7 будут взламывать ещё долго. Если у вас такой есть, сегодня хороший день его обновить или выключить.

Источники: php.net/archive/2026.php, news-web.php.net/php.announce/509, beget.com/ru/news/2026/uyazvimost-v-php-ot-21-10-2026

55
22