
21 октября команда PHP закрыла две критические уязвимости в ядре языка. Через них можно выполнить свой код на сервере без логина и пароля, и затронуты почти все версии PHP за последние 14 лет. Детали утекли за день до исправления, атаки начались ещё до выхода патча. Ниже по порядку: что сломалось, кого касается, как развивались события и что сделать прямо сейчас.
PHP обрабатывает сайт запрос за запросом. Под каждый запрос он берёт кусок памяти, раскладывает туда данные посетителя, а в конце всё убирает. Обе ошибки живут в этой уборке.
Самое неприятное: в некоторых конфигурациях атака срабатывает до того, как запускается код самого сайта. Команда PHP прямо пишет, что для mod_php есть рабочий эксплойт, где запрос без авторизации срабатывает раньше любого кода приложения. Значит, хорошо написанный сайт, плагины и пароли администратора здесь не спасают. Исследователи Wiz показали, что уязвима даже страница «Hello World», а кроме выполнения кода получили чтение памяти процесса, где лежат пароли, токены и ключи API.
| Ветка PHP | Безопасная версия | Что делать |
|---|---|---|
| 8.5 | 8.5.12 | обновить; до обновления выключить fatal_error_backtraces |
| 8.4 | 8.4.27 | обновить |
| 8.3 | 8.3.36 | обновить |
| 8.2 | 8.2.35 | обновить; поддержка ветки кончается 31 декабря 2026 |
| 8.1, 8.0, 7.4 | релизов нет | патч дистрибутива или переход на 8.2+; команда PHP выложила только исходные патчи на GitHub |
| 7.3 и старше, 5.x | релизов нет | переход на поддерживаемую версию или отключение от интернета |
Опаснее всего, по оценке команды PHP, Apache с mod_php. На PHP-FPM одну из цепочек атаки исследователи до конца не довели, но вторую подтвердили и там, поэтому FPM тоже нужно обновлять. Исследователи Calif, по данным Sansec, сообщили о рабочем взломе без авторизации на свежих Magento, WordPress, Drupal, Joomla, MediaWiki, Roundcube, phpMyAdmin, Nextcloud, Laravel, Symfony и WHMCS.
Сам облачный провайдер обычно не уязвим, уязвим ваш PHP у него. Google, например, обновил поддерживаемые среды App Engine standard автоматически, а образы в Cloud Run и GKE нужно пересобрать самим. Это общее правило для Docker: базовый образ с PHP сам не обновится.
Время указано по UTC (по Москве плюс три часа). Где источники расходятся, это отмечено.
Исследователи Calif находят в PHP несколько путей к удалённому выполнению кода (по таймлайну Sansec).
Calif сообщает о первой ошибке команде PHP и запускает скоординированное раскрытие.
Независимо от них Wiz Research находит первую уязвимость. Помогали ИИ-модели: Wiz называет Gemini 4 Argon и GPT-5.6 Sol, в процессе участвовал проект OpenAI Patch the Planet.
Wiz подтверждает взлом без авторизации на Drupal, потом на WordPress.
Wiz отправляет отчёт команде PHP.
По таймлайну Wiz, PHP подтверждает проблему и начинает готовить исправление. Дистрибутивы Linux и поставщики долгой поддержки получают патчи заранее.
Ловушка Amazon (MadPot) фиксирует первую попытку эксплуатации, за четыре дня до раскрытия. Как атакующий узнал о дыре, неизвестно.
Команда PHP публикует предупреждение: релиз безопасности выйдет 21 октября в 14:00 UTC, обе уязвимости оценены в 9,2.
Пользователь Hacker News выкладывает номера CVE, называет оценку 10 из 10 и дату раскрытия 22 октября. Пост потом удаляют, но его успевают разнести X и Mastodon. Оценка и дата из утечки оказались неверными.
watchTowr подтверждает, что уязвимости настоящие и одну из них удалось воспроизвести. Об утечке пишет Хабр.
Amazon видит первые эксплойты в открытом доступе и атаки с ними на свои ловушки, примерно за 12 часов до релиза.
CERT-EU и британский NCSC выпускают экстренные предупреждения. В Нидерландах на время уходят в офлайн DigiD, MijnOverheid, сайты парламента, NCSC и Tweakers. В Японии похожие меры принимают хостинги и онлайн-сервисы.
Cloudflare сообщает о первых атаках и выкатывает правила WAF для клиентов.
Выходят PHP 8.5.12, 8.4.27, 8.3.36 и 8.2.35, публикуются бюллетени на GitHub. CISA выпускает предупреждение и призывает обновляться немедленно. Сторонний репозиторий Remi в этот день обновлений не получает.
Глава Cloudflare Мэттью Принс пишет о десятках тысяч попыток атак за 45 минут после анонса, сотнях тысяч за два часа и, позже, миллионах.
В России о проблеме пишут iXBT, vc.ru и другие издания. По оценке, которую приводит iXBT со ссылкой на РБК, под угрозой могут быть десятки тысяч ресурсов Рунета. Методика оценки не раскрыта.
Rapid7: в сети несколько публичных эксплойтов, но каждый работает только на своём сочетании системы, версии PHP и веб-сервера. Надёжного универсального пока нет.
Sansec обновляет разбор: публичные эксплойты не работают против PHP с настройками по умолчанию, большинству нужна ещё и ошибка в самом сайте. Массовые взломы, по их оценке, менее вероятны, чем казалось в день релиза. Amazon, наоборот, пишет, что уязвимость уже широко эксплуатируют.
«Рег.ру» временно ограничивает загрузку файлов через панель управления (пользователи видят ошибку 403). Поддержка объясняет это защитой клиентских сайтов, пишут «Коммерсантъ» и iXBT.
На хостинге версия PHP видна в панели управления. На своём сервере проверьте и консольный PHP, и тот, что обслуживает сайт, они бывают разными:
php -v
php-fpm8.4 -v # или php-fpm -v, номер зависит от системы
apachectl -M | grep php # есть ли mod_php
Надёжнее всего посмотреть версию глазами самого сайта: временно положить файл с <?php echo PHP_VERSION;, открыть его и сразу удалить. Учтите, что дистрибутивы вроде RHEL и Ubuntu часто переносят исправление в старую версию, не меняя её номер. Поэтому, если PHP стоит из пакетов системы, сверяйтесь с бюллетенем безопасности своего дистрибутива, а не только с номером. В Debian 13, например, исправленный пакет называется 8.4.27-1~deb13u1.
session.upload_progress.enabled=0 в php.ini или в настройках пула FPM, затем перезапустить все процессы. Через ini_set() или .user.ini не сработает, это слишком поздно.fatal_error_backtraces=0 и перезапустить процессы.post_max_size = 8M, если сайт не принимает файлы, или 32M, если принимает, и upload_max_filesize меньше этого. Те же лимиты стоит выставить на веб-сервере или прокси. Если сайт не принимает формы с файлами, можно вообще не пускать multipart-запросы до PHP.memory_limit=-1 на уровне сервера, чтобы приложение не могло его поменять, а ограничение памяти перенести в контейнер. Это спорная мера: без контейнерного лимита один запрос может съесть всю память сервера.CISA советует смотреть, не запускают ли процессы PHP командную оболочку и не скачивают ли инструменты. Сюда же относятся новые незнакомые файлы .php в папках загрузок, новые администраторы в CMS и незнакомые задачи в cron. Отсутствие записей в логах ничего не доказывает. Раз через уязвимость можно читать память, разумно после обновления сменить пароли к базам и ключи API, которые лежат в настройках сайта. Это наш вывод, а не официальная рекомендация.
Источники: бюллетень и релизы PHP · GHSA по CVE-2026-109618 · GHSA по CVE-2026-109619 · CISA · Wiz Research · Sansec · Rapid7 · Google Cloud · Infosecurity: утечка · Infosecurity: атаки до раскрытия · ThreatLandscape · Patchstack · Хабр · iXBT · iXBT о «Рег.ру» · vc.ru