Критические уязвимости PHP: вышло исправление
Материал обновлён 21 октября после выхода исправления. Предварительные данные, на которые опирались первые публикации — включая нашу, — не подтвердились: уязвимости оказались не в отслеживании прогресса загрузки файлов, а в работе PHP с памятью. Это меняет и оценку обходных мер: они снижают риск, но не защищают.
Исправление вышло. 21 октября 2026 года команда PHP выпустила версии 8.2.35, 8.3.36, 8.4.27 и 8.5.12. Они закрывают две уязвимости с оценкой 9,2 из 10 по CVSS v4.0, каждая из которых позволяет выполнить чужой код на сервере без авторизации. Обновляться нужно немедленно — других надёжных мер разработчики не называют.
Что это за уязвимости
CVE-2026-109618 — порча памяти при нехватке памяти. Когда PHP упирается в лимит памяти, он аварийно прерывает запрос. В некоторых точках обработки память запроса уже выделена, но ещё не заполнена до конца — и процедура завершения запроса принимает эти недостроенные данные за корректные. Исчерпать память снаружи несложно: достаточно особым образом составленного multipart-запроса — без корректной длины, с большим числом заголовков в части, с пустыми файловыми полями или вложенными именами полей.
CVE-2026-109619 — устаревшее состояние между запросами. Часть внутреннего состояния PHP — ошибки, сессии, объекты, данные расширений — переживает освобождение памяти своего запроса и достаётся следующему запросу того же рабочего процесса. Обращение к уже освобождённой памяти при подготовленной раскладке кучи приводит к выполнению кода.
Обе уязвимости дают удалённое выполнение кода с правами веб-процесса. Пользователь сайта, форма и авторизация для этого не нужны.
Где риск выше всего
| Как работает PHP | Риск |
|---|---|
| Apache с mod_php | Максимальный: рабочий эксплойт показан именно для него, на настройках по умолчанию |
| PHP-FPM | Уязвим по анализу исходного кода, полный эксплойт не продемонстрирован |
| FrankenPHP | Вероятно уязвим: завершение запроса вызывается так же безусловно |
| LiteSpeed (LSAPI) | Вероятно уязвим, детально не проверялся |
Если сайт работает на Apache с модулем PHP — а так до сих пор устроены многие серверы с 1С-Битрикс и коробочным Битрикс24 — это первоочередная задача на сегодня, а не на ближайший плановый регламент.
Кого это касается
| Что у вас | Затронуто | Кто исправляет |
|---|---|---|
| Облачный Битрикс24 | Нет, портал обновляет Битрикс24 | От вас ничего не требуется |
| Приложения из Маркетплейса Битрикс24 | Зависит от сервера разработчика | Разработчик приложения |
| Коробочный Битрикс24 или 1С-Битрикс: Управление сайтом | Да | Ваш администратор сервера |
| Сайт на WordPress, Joomla, Drupal, Magento, OpenCart, Laravel и других PHP-системах | Да | Ваш администратор или разработчик |
| Виртуальный хостинг (общий сервер с панелью) | Да | Хостинг-провайдер, уточните у него сроки |
| Отдельный сервер или VPS с PHP | Да | Ваш администратор сервера |
Что сделать
Передайте эти шаги администратору сервера или хостинг-провайдеру.
- Узнайте версию PHP и файл настроек. На сервере это команды
php -vиphp --ini. В административной панели 1С-Битрикс версия видна в «Проверке системы». У веб-сервера файл настроек может быть свой, отличный от консольного, — проверяйте именно тот, который видит сайт. - Обновите PHP до исправленной версии своей ветки: 8.2.35, 8.3.36, 8.4.27 или 8.5.12.
- Перезапустите веб-сервер и PHP — Apache, php-fpm или LiteSpeed. Без перезапуска старый код остаётся в памяти рабочих процессов. Если перед PHP стоит nginx, перезапускать его бесполезно: PHP живёт в Apache или в php-fpm, перезапускать нужно именно их.
- Убедитесь, что сайт работает на новой версии, а не только консоль. Проще всего посмотреть в системной информации панели управления или в «Проверке системы» Битрикса.
- Проверьте сайт: вход в личный кабинет и админку, формы, загрузку файлов, отправку почты, работу CRM и обмен с 1С. Если серверов несколько, обновлять и проверять нужно каждый.
Не ищите на сервере ровно эти номера. Debian, Ubuntu и другие дистрибутивы переносят исправления в свои сборки, не меняя версию целиком: в системе останется, например, 8.2.28, но с уже закрытой уязвимостью. Ориентируйтесь не на номер, а на то, установлено ли обновление безопасности для пакета PHP.
Если PHP ставится из репозитория дистрибутива или из панели хостинга, пакет с исправлением появляется не сразу — обычно в течение суток после релиза. Пока его нет, обновление сводится к ожиданию: следите за обновлениями репозитория и примените, как только пакет выйдет. Порядок обновления пакетов и смены версии PHP на сервере с веб-окружением мы разбирали в отдельной инструкции.
Перед обновлением сделайте резервную копию — это пять минут, которые экономят вечер. Если есть тестовая копия сайта, прогоните обновление сначала на ней.
Если у вас коробочный Битрикс24 или сайт на 1С-Битрикс
Уязвимость не в продуктах 1С-Битрикс, а в самом PHP, поэтому обновление платформы её не закрывает. Несколько частных моментов, на которых обычно спотыкаются.
- Обновление через SiteUpdate не поможет. Оно обновляет сам продукт, а не системный PHP. Версию PHP меняет администратор сервера или хостинг-провайдер.
- На веб-окружении BitrixVM после обновления пакетов перезапустите Apache:
systemctl restart httpd.service. В стандартной сборке PHP работает именно под ним. - В контейнерах обновлять пакеты внутри работающего контейнера бессмысленно: обновите или пересоберите образ и пересоздайте контейнеры, сохранив конфигурацию и тома. Перед этим проверьте, не осталось ли нужных данных в записываемом слое.
- После обновления посмотрите версию PHP в «Проверке системы» — там же видно, что именно использует сайт, а не консоль.
Если обновиться прямо сейчас нельзя
Все меры ниже — временные. Разработчики PHP прямо пишут, что общей конфигурационной защиты не существует: эти настройки закрывают отдельные пути атаки, но не саму проблему.
memory_limit = -1, заданный административно для всех пулов и приложений. Это основная мера против первой уязвимости, но не полная: если память не сможет выделить уже система, уязвимый путь снова откроется.session.upload_progress.enabled = 0с перезапуском рабочих процессов. Закрывает продемонстрированные сценарии через сессии во второй уязвимости. Задавать её нужно вphp.iniили в настройках пула PHP-FPM, для Apache с модулем PHP подойдёт.htaccess. Черезini_set()в коде настройка не меняется — она применяется до запуска скрипта; на.user.iniхостинг-провайдеры в этом случае полагаться не советуют. Выключенной её имеет смысл держать и после обновления, если прогресс загрузки сайту не нужен.- Ограничение размера запросов. Если сайт не принимает файлы,
post_max_size = 8M; если принимает — порядка32M, аupload_max_filesizeсделайте меньшеpost_max_size. Туда же — лимиты на число частей multipart, заголовков, входных переменных и вложенность массивов. Если приложение вообще не работает с multipart, такие запросы проще заблокировать на фронтенде. - Для PHP 8.5 —
fatal_error_backtraces = 0с перезапуском процессов: убирает путь, через который показан рабочий эксплойт. - Чего делать нельзя: ограничивать память через
RLIMIT_ASиRLIMIT_DATA. Это как раз приводит к сбою выделения памяти и запускает уязвимый сценарий.
Если у вас PHP 8.1 или старше
Эти ветки проект больше не поддерживает, готовых сборок для них нет. Для 7.4, 8.0 и 8.1 опубликованы минимальные патчи в исходном коде: их может применить ваш дистрибутив или администратор, который собирает PHP самостоятельно. Уточните у хостинг-провайдера, планирует ли он выпустить обновление.
Правильное решение — переход на поддерживаемую версию. Заодно учтите, что PHP 8.2 перестаёт получать исправления безопасности 31 декабря 2026 года: если вы сейчас обновляетесь до 8.2.35, переезд на 8.3 или 8.4 всё равно стоит поставить в план на ближайшие месяцы. Перед переходом проверьте совместимость сайта на тестовой копии.
Если сервер на CentOS 7 или другой системе без поддержки
Это отдельный и самый неприятный случай. CentOS 7 снята с поддержки 30 июня 2024 года, обновлений безопасности для неё не выпускают. Репозиторий remi, из которого на такие серверы обычно ставили свежий PHP, закрыт для EL7 тогда же: последние сборки там — PHP 8.1.29, 8.2.20 и 8.3.8 весны 2024 года. Это значит, что привычное обновление пакетов исправленную версию не принесёт, и сервер придётся считать уязвимым.
Варианты, по убыванию разумности.
- Перенести сайт на поддерживаемую систему. AlmaLinux 9, Rocky Linux 9, Debian 13 — для Битрикса это веб-окружение BitrixVM девятой ветки. Единственный вариант, который закрывает не только эту уязвимость: на CentOS 7 не обновляются ещё и ядро, OpenSSL и веб-сервер.
- Собрать PHP из исходников с официальными патчами. Для 7.4, 8.0 и 8.1 команда PHP опубликовала минимальные исправления, их можно применить к исходному коду. Нужен администратор, который соберёт PHP и дальше будет сам поддерживать эту сборку — разовой операцией дело не ограничится.
- Коммерческая расширенная поддержка. Платные программы вроде TuxCare ELS выпускают исправления для снятых с поддержки систем и версий PHP. Прежде чем покупать, уточните у поставщика, покрывает ли подписка вашу версию PHP и конкретно эти две уязвимости.
- Если ни один вариант не доступен сегодня — ограничьте доступ к сайту снаружи: закройте админку по IP или через VPN, поставьте перед сайтом веб-фаервол, примените временные меры из раздела выше и усильте наблюдение за логами. Это не защита, а способ прожить до переезда.
И главное: переезд с CentOS 7 придётся делать в любом случае. Разница только в том, пройдёт он по плану или в ночь после взлома.
Как понять, что сервер уже атаковали
В ближайшие дни попросите администратора проверять сервер по этому списку. Любой пункт — повод разобраться сразу.
- В логах веб-сервера и PHP участились аварийные завершения:
Segmentation fault,zend_mm_heap corrupted, «дочерний процесс завершён сигналом». - Выросло число ошибок о нехватке памяти (
Allowed memory size exhausted) на страницах, где их раньше не было. - В логах доступа появились необычные multipart-запросы: без корректной длины, с огромным числом полей или заголовков, на адреса, которые файлы обычно не принимают.
- От имени пользователя веб-сервера запущены непривычные программы: командная оболочка,
curl,wget,nc,perl,python, майнеры с высокой загрузкой процессора. - В каталогах сайта появились новые или изменённые PHP-файлы, которые никто из сотрудников не выкладывал, — особенно в папках загрузок и временных файлов.
- В админке сайта или в планировщике заданий появились незнакомые пользователи или задания.
Если признаки есть, не удаляйте логи и подозрительные файлы: сделайте резервную копию, смените пароли и ключи доступа к серверу и базе данных и обратитесь к специалисту по безопасности или к хостинг-провайдеру. Обновление PHP само по себе не выгоняет того, кто уже закрепился на сервере.
Источники
- Анонс релизов PHP 8.2.35, 8.3.36, 8.4.27 и 8.5.12, 21 октября 2026 года.
- GHSA-w8hw-w9fx-j79w — CVE-2026-109618, порча памяти при нехватке памяти.
- GHSA-6wmf-4rv5-p3rp — CVE-2026-109619, устаревшее состояние между запросами.
- Разбор Центра кибермониторинга 1С-Битрикс — порядок обновления для серверов с Битриксом.
Если нужна помощь с обновлением — напишите нам: посмотрим конфигурацию, обновим PHP без простоя сайта и проверим сервер на следы атаки.
Частые вопросы
Исправление вышло. Что делать в первую очередь?
Обновить PHP до исправленной версии своей ветки — 8.2.35, 8.3.36, 8.4.27 или 8.5.12 — и перезапустить веб-сервер и php-fpm. Без перезапуска рабочие процессы продолжают выполнять старый код.
У нас Ubuntu и версия PHP 8.2.28. Значит, мы уязвимы?
Не обязательно. Debian, Ubuntu и другие дистрибутивы переносят исправления безопасности в свои сборки, не меняя номер версии целиком. Ориентируйтесь не на номер, а на то, установлено ли обновление безопасности пакета PHP: примените доступные обновления и перезапустите веб-сервер.
Мы обновили Битрикс через SiteUpdate. Этого достаточно?
Нет. SiteUpdate обновляет сам продукт 1С-Битрикс, а уязвимость в системном PHP, который стоит на сервере. Версию PHP меняет администратор сервера или хостинг-провайдер, после чего нужен перезапуск Apache или php-fpm.
Мы уже выключили session.upload_progress. Этого достаточно?
Нет. Эта настройка закрывает только часть сценариев одной из двух уязвимостей. Разработчики PHP прямо пишут, что полной конфигурационной защиты не существует. Выключенной её можно оставить и после обновления, но считать защитой нельзя.
Где задавать session.upload_progress.enabled?
В php.ini или в настройках пула PHP-FPM; для Apache с модулем PHP подойдёт .htaccess. Через ini_set() в коде настройка не меняется — она применяется до запуска скрипта. После правки перезапустите все рабочие процессы, иначе старое значение останется в памяти.
Как понять, насколько у нас высокий риск?
Главный признак — как запускается PHP. Для Apache с mod_php рабочий эксплойт продемонстрирован на настройках по умолчанию, это максимальный риск. PHP-FPM, FrankenPHP и LiteSpeed уязвимы по анализу кода, но готового эксплойта для них не показано.
В репозитории нашего дистрибутива исправления ещё нет. Что делать?
Обычно пакет появляется в течение суток после релиза. До его выхода примените временные меры (административный memory_limit=-1, ограничение размера и состава запросов) и следите за обновлениями репозитория — это не защита, а способ снизить риск на время ожидания.
У нас PHP 8.1 или старше. Что с ней?
Проект эти ветки не поддерживает, готовых сборок нет. Для 7.4, 8.0 и 8.1 опубликованы минимальные патчи в исходном коде — их может применить дистрибутив или администратор, который собирает PHP сам. Уточните планы у хостинг-провайдера и закладывайте переход на поддерживаемую версию.
У нас CentOS 7, обновлений для неё нет. Что делать?
Штатно обновить PHP не получится: система снята с поддержки в июне 2024 года, репозиторий remi для EL7 закрыт тогда же. Правильное решение — перенос на поддерживаемую систему, для Битрикса это веб-окружение BitrixVM девятой ветки. Временно можно собрать PHP из исходников с официальными патчами или купить расширенную поддержку, а до переезда — ограничить доступ к сайту снаружи.
Хватит ли фаервола или антивируса?
Нет. Атака идёт обычным HTTP-запросом к сайту и не отличается по форме от легитимного трафика. Веб-фаервол может отсечь часть грубых попыток, но закрывает проблему только обновление.
У нас облачный Битрикс24. Нужно что-то делать?
Нет. Серверы облачного Битрикс24 обновляет сам вендор. Вас касается только то, что работает на ваших собственных серверах и хостинге, включая коробочный портал и сайты на 1С-Битрикс.