Перейти к содержимому

Утро добрым не бывает или две уязвимости в один день

21 октября 2026 года владельцам сайтов пришлось разбираться сразу с двумя инцидентами: критическими уязвимостями PHP и выполнением кода через обработчик изображений YOOtheme Pro. Для сайтов на YOOtheme Pro 5 потребовались два независимых обновления. А тем, кто зависел от сборок панели управления, пришлось решать ещё и вопрос доставки патча.

Коралловый жук ползёт по серверу в стойке; из боковой щели вылетают искры

Что совпало в один день

Команда PHP выпустила экстренные версии, закрывающие CVE-2026-109618 и CVE-2026-109619. Обе уязвимости получили CVSS v4.0 9.2. В тот же день появился YOOtheme Pro 5.0.53 с исправлением CVE-2026-102785. В обоих инцидентах речь идёт о возможности выполнить код без авторизации, но уязвимости находятся в разных компонентах. Сообщение PHP, changelog YOOtheme.

Совпадение дат увеличило объём срочной работы. Исправление среды PHP не устраняет ошибку в теме, а обновление темы не меняет установленный интерпретатор. Подтверждений того, что все три CVE использовались как единая цепочка атаки, в проверенных источниках нет.

Как развивались события

По отчёту PHP Foundation, первые признаки проблемы OOM обнаружили ещё в 2024 году. 11 августа 2026 года Calif сообщил о RCE с тем же корнем; в этот же день независимо поступил отчёт OpenAI. Это предыстория PHP, которую нельзя автоматически приписывать уязвимости YOOtheme.

  1. 20 октября, около 15:00 UTC / 18:00 МСК. Идентификаторы PHP CVE начали распространяться до согласованного раскрытия. Среди сообщений были неверные время релиза и оценка 10.0.
  2. 20 октября, около 19:30 UTC / 22:30 МСК. PHP опубликовал предварительное предупреждение. Релиз перенесли с 22 на 21 октября. После предупреждения в сеть попало преждевременно опубликованное демонстрационное видео Calif.
  3. 21 октября, 07:41 UTC / 10:41 МСК. По данным Foundation, Chainguard опубликовал образы с исправлением раньше согласованного срока.
  4. 21 октября, 14:00 UTC / 17:00 МСК. Наступило объявленное время экстренного релиза PHP. В этот же календарный день YOOtheme выпустил 5.0.53; официальный changelog не фиксирует точное время его публикации.

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

Первая проблема PHP: нехватка памяти повреждает состояние запроса

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

Для Apache с mod_php подтверждена атака по HTTP до запуска кода приложения. Защита внутри CMS на такой стадии ещё не выполняется. В FPM завершение worker при сбое начальной обработки обрывает этот конкретный путь, однако остаются риски после успешного старта запроса. Нельзя объявлять установку безопасной только потому, что она работает через FPM. Технический advisory CVE-2026-109618.

Нехватка памяти прерывает инициализацию; очистка использует неготовые данные

CVE-2026-109618: аварийное завершение при нехватке памяти нарушает безопасную очистку запроса.

Вторая проблема PHP: состояние переживает свою память

CVE-2026-109619 связана с жизненным циклом запросов. После ошибки или завершения запроса в долгоживущем worker может сохраниться ссылка на уже освобождённую память. Следующий запрос в том же процессе обращается к этому состоянию до обычной инициализации.

Условия зависят от версии, расширений и конфигурации. Подтверждённые варианты включают обработку ошибок и session upload progress. Отключение вывода предупреждений не исправляет обращение к устаревшим данным. Поэтому «у нас ошибки скрыты» не является защитой. Технический advisory CVE-2026-109619.

После освобождения памяти в worker остаётся ссылка, используемая следующим запросом

CVE-2026-109619: устаревшее состояние может перейти к следующему запросу в том же worker.

Кому нужно проверить PHP

Зона проверки охватывает установки, обслуживающие веб-запросы: FPM, mod_php, CGI и другие серверные интеграции. Различия в эксплуатации влияют на риск, но не отменяют необходимость исправления. Проверьте также забытые поддомены, тестовые копии и административные приложения.

Экстренные upstream-релизы PHP от 21 октября

ВеткаВерсия с исправлениями
8.2
8.2.35
8.3
8.3.36
8.4
8.4.27
8.5
8.5.12

У дистрибутива номер может отличаться: поставщик способен перенести исправления в прежнюю версию. Нужны сведения о конкретной ревизии пакета. Для 7.4, 8.0 и 8.1 команда PHP отдельно предоставила минимальные исходные backport-патчи. Полная поддержка этих веток от этого не возобновилась. Рекомендации по обновлению, сообщение о backport для 7.4.

Что произошло в YOOtheme Pro

Официальный changelog описывает CVE-2026-102785 как выполнение кода без авторизации через обработчик изображений. Исправление включено в YOOtheme Pro 5.0.53 от 21 октября. Поддержка YOOtheme указала, что пользователям ветки 5 нужно обновиться, а ветка 4 и ниже этой проблемой не затронута. Проверка касается сайтов на Joomla и WordPress. Исправление, разъяснение поддержки.

Обработчик изображений доступен в серверной части продукта, поэтому проверять только загрузку файлов через административный интерфейс недостаточно. Вместе с тем краткий changelog не позволяет установить весь механизм атаки, дополнительные условия и масштаб эксплуатации. Приписывать этой CVE особенности multipart-обработки PHP оснований нет.

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

Почему часть сайтов отключили

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

Open LMS сообщил об отключении клиентских сайтов на время установки исправлений. PDFsam объяснил временную остановку ожиданием исправленных сборок и проверкой серверов. Эти сообщения подтверждают защитные отключения; по ним нельзя заключить, что площадки были взломаны.

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

Наш опыт: PHP 7.4 в окружении FASTPANEL

В нашей инфраструктуре возникла дополнительная зависимость: FASTPANEL использует собственные сборки PHP. На момент нашей проверки в доступном нам канале пакетов не было исправлений ни для одной версии PHP, а доступные сборки датировались 2025 годом.

У нас было два варианта: ждать обновления от FASTPANEL, срок которого нам не был известен, либо самостоятельно собирать совместимые версии и организовать доставку пакетов. Мы выбрали собственную сборку PHP 7.4 с backport.

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

Собственная сборка означает ответственность за дальнейшее сопровождение. Нужно учитывать совместимость расширений, различия веб-обработчика и CLI, последующие обновления панели и возможность отката. Перенос конкретного исправления не делает PHP 7.4 поддерживаемой веткой. Миграция на актуальную ветку остаётся отдельной задачей.

Пакет с исправлением, изолированная проверка и установка на нескольких серверах

Наша последовательность: собственная сборка PHP 7.4 с backport, проверка в изолированной среде, замена штатной сборки на нескольких серверах.

Что делать владельцу сайта сейчас

  1. Установить, что реально обслуживает сайт. Зафиксировать версию и ревизию PHP у веб-обработчика, источник пакетов и версию родительской темы. Проверить все сайты и пулы на сервере; вывод CLI не заменяет эту проверку.
  2. Установить исправления обоих компонентов. Для PHP получить подтверждение закрытия двух CVE, для YOOtheme Pro 5 — обновиться до 5.0.53 или новее с этим исправлением. Перезапустить затронутые PHP workers и проверить фактическую смену исполняемого кода.
  3. Если пакета нет, ограничить публичный доступ. Решение принимать на уровне веб-сервера, прокси или сети. Страница обслуживания, которую продолжает выполнять PHP, не изолирует интерпретатор.
  4. Проверить работу и признаки проникновения. Пройти фронтенд, формы, изображения, административную часть и Builder. При подозрительных изменениях сохранить журналы и артефакты, изолировать систему и провести разбор.

Если приходится ждать пакет

В advisories PHP перечислены частичные меры: ограничения обработки запросов и отключение некоторых ранних путей session upload progress. Они перекрывают отдельные варианты, но не дают полной защиты. Рекомендация memory_limit=-1 тоже условна: она требует внешних ограничений ресурсов и не устраняет все причины отказа выделения памяти. Копировать такую настройку без оценки памяти сервера опасно для доступности. Применяйте временные меры только вместе с оценкой окружения по обоим advisories.

Если проникновение уже произошло

Закрытая уязвимость не удаляет записанный ранее бэкдор и не отзывает прочитанные секреты. Последствия зависят от прав веб-процесса и доступных ему данных. При подтверждённой компрометации потребуется восстановление из доверенного состояния и замена затронутых доступов. Это вывод из модели угроз, а не утверждение, что каждый уязвимый сайт уже взломан.

Начните с одного проверяемого результата: получите подтверждение, что обе PHP CVE и проблема YOOtheme Pro закрыты именно в компонентах, которые сейчас обслуживают ваш сайт.

Закажи разработку

Компоненты любой сложности для Joomla! и не только: интеграция сторонних сервисов; большие пакетные решения; e-commerce.