24 сентября 2026 года в PHP исправили одиннадцать уязвимостей, получивших номера CVE, и ещё одну правку оставили без идентификатора. Обновления 8.2.34, 8.3.35, 8.4.26 и 8.5.11 устраняют ошибки в проверке сертификатов, в разборе сетевых сообщений, в работе с архивами и с файлами. Последствия разные: удалённый отказ в обслуживании, раскрытие данных, подмена данных и обход политики безопасности. Под угрозой сайты и внутренние сервисы на PHP, а с ними и системы управления контентом, которые на нём работают.
Детали уязвимостей
Самая заметная ошибка касается проверки имени сервера при защищённом соединении TLS (протокол шифрования, на котором держится HTTPS). Современный сертификат перечисляет допустимые имена хостов в отдельном поле, которое называют списком альтернативных имён. Если имя из этого списка не совпадает с тем, к которому подключается программа, проверка должна завершиться отказом. Вместо этого PHP откатывается к старому полю с общим именем и принимает сертификат, когда совпадение находится там. Из-за такого поведения злоумышленник с сертификатом на собственный домен выдаёт свой узел за чужой сервер и перехватывает трафик по схеме "человек посередине".
В той же подсистеме нашлась вторая уязвимость - переполнение буфера в куче при разборе шаблонных имён в сертификате сервера. Переполнение буфера означает запись за пределами выделенной области памяти. Обычно это приводит к аварийному завершению процесса, а иногда даёт возможность исполнить чужой код на сервере. Хватит одного защищённого соединения с узлом, чей сертификат подготовил атакующий.
Менеджер процессов FastCGI (FPM, прослойка между веб-сервером и PHP) неправильно сравнивает адреса IPv6 из списка разрешённых клиентов. Проверка идёт по части адреса, поэтому часть посторонних адресов её проходит. В результате к внутреннему порту подключается тот, кому доступ закрыт, и отправляет запрос на исполнение.
В драйвере для MySQL нашлись случаи чтения за границами буфера при разборе сетевых пакетов. Повреждённый или намеренно составленный ответ сервера базы данных роняет процесс либо выдаёт содержимое памяти. Драйвер задействуют подключения к MySQL и MariaDB, поэтому сбой затрагивает и веб-приложения, и фоновые задачи обслуживания.
SOAP (протокол обмена сообщениями на основе XML) пострадал дважды. Неограниченная рекурсия при очистке узлов приводит к исчерпанию памяти и отказу в обслуживании. В разборе HTTP-части целочисленное переполнение превращается в переполнение буфера.
Библиотека для работы с архивами Phar читает числовое поле в формате TAR и переполняет целое число. Из-за этого в архив можно внедрить поддельные записи. Приложение, которое распакует такой файл, получит не те данные, на которые рассчитывал автор. Риск выше у сервисов, принимающих архивы от пользователей: загрузка файла превращается в точку входа.
Ещё три ошибки затрагивают стандартную библиотеку. При перенаправлении на другой адрес обёртка HTTP-потока передаёт учётные данные чужому узлу. Если сервер отвечает перенаправлением без адреса, чтение уходит за границы буфера. Отдельный сбой возникает, когда в наборе символов переноса строки встречается нулевой байт.
Сборка для Windows не отклоняет зарезервированные имена устройств до операций ввода-вывода. Файл с именем вроде NUL или COM1 может увести запись в служебное устройство вместо диска. Разработчики здесь полагаются на то, что система отвергнет недопустимое имя, и не проверяют его сами. Уязвимость ломает это ожидание, хотя для использования нужен код, создающий файл по внешнему имени.
PHP стоит на большинстве сайтов, но напрямую с ним работают немногие. Код запускают системы управления контентом, фреймворки и панели хостинга. Поэтому рядовой пользователь чаще узнаёт о проблеме из обновления CMS или от провайдера, а не из бюллетеня разработчиков. Опасность зависит от того, какие данные обрабатывает приложение. Для отказа в обслуживании хватает открытого порта, для утечки учётных данных - одного перенаправления. Атака на TLS требует, чтобы сервис сам подключался к внешнему узлу. Так бывает, когда приложение ходит за платёжными данными или обращается к чужому API (программному интерфейсу для обмена данными между сервисами). Данных о применении этих уязвимостей в реальных атаках в бюллетене нет.
Исправленные версии - 8.2.34, 8.3.35, 8.4.26 и 8.5.11; обновляться нужно до них или до более свежих выпусков. В дистрибутивах Linux и на панелях хостинга патчи часто переносят в существующий пакет без смены номера версии. Поэтому сверяться стоит с бюллетенем сборщика, а не только с выводом проверки версии. Если обновление откладывается, помогает частичная изоляция: закрыть внутренние порты FPM от посторонних, не открывать архивы из недоверенных источников, ограничить исходящие соединения по TLS списком известных узлов.
Сентябрьский выпуск собрал ошибки из разных подсистем, от разбора сертификатов до работы с файлами. Два номера - CVE-2025-1218 и CVE-2025-14181 - относятся к прошлому году, значит, часть проблем ждала исправления дольше обычного. Остальные идентификаторы выданы в 2026 году. Ветки PHP обновляются часто, и держать рабочую версию на последнем патче дешевле, чем разбираться с каждой ошибкой по отдельности.
Ссылки