
Уязвимости PHP 8.2: что опасно и как защитить сайт
PHP 8.2 уязвим, если не обновлён до последней минорной версии: критичные CVE закрыты в 8.2.x. Разбираем риски, сроки поддержки и порядок защиты.
Уязвимости PHP 8.2: что известно и что делать
PHP 8.2 нельзя считать небезопасным «по умолчанию», но ранние сборки ветки содержат известные критичные уязвимости. Защищает только актуальная минорная версия 8.2.x с установленными патчами.
Запрос «уязвимость PHP 8.2» обычно появляется в двух случаях. Либо сканер безопасности или хостинг прислал тревожное уведомление, либо в новостях мелькнула очередная CVE. В обоих случаях нужен спокойный порядок действий: понять, затронуты ли вы, закрыть дыру и не допустить повторения. Ниже разобраны реальные уязвимости, сроки поддержки ветки и практический план защиты.
Почему в PHP 8.2 вообще находят уязвимости
PHP 8.2 вышел 8 декабря 2022 года. Это зрелая ветка, поэтому за её время исследователи и разработчики нашли и исправили заметное число проблем. Это нормальный процесс жизни любого крупного языка: новые CVE появляются, потому что код постоянно проверяют, а не потому, что ветка «плохая».
Уязвимости бывают разного масштаба. Часть из них касается только редких конфигураций, например специфичного режима запуска PHP или конкретного расширения. Другие затрагивают базовые функции, которыми пользуется почти каждый сайт: обработку cookie, хеширование паролей, работу с загруженными данными.
Поэтому вопрос звучит не «безопасен ли PHP 8.2 вообще», а «какая именно у меня сборка и какие патчи на ней стоят». Одна и та же ветка 8.2 с версией 8.2.3 и с версией 8.2.28 отличается по защищённости радикально.
Самые заметные уязвимости PHP 8.2
Ниже перечислены реальные CVE, которые затрагивали ветку 8.2 и уже исправлены в указанных релизах. Список не исчерпывающий: полный перечень всегда смотрите в официальном журнале изменений PHP.
Главное правило: если версия вашего PHP ниже указанной в таблице, обновление нужно ставить сразу, не дожидаясь планового окна.
| Идентификатор | Суть проблемы | Исправлено в версии |
|---|---|---|
| CVE-2024-4577 | Инъекция аргументов в PHP-CGI на Windows, возможно удалённое выполнение кода | 8.2.20 |
| CVE-2024-2756 | Обход защиты cookie с префиксами __Host- и __Secure- | 8.2.18 |
| CVE-2024-3096 | Функция password_verify может вернуть true для хеша, начинающегося с нулевого байта | 8.2.18 |
| CVE-2023-3824 | Переполнение буфера при чтении каталога в расширении phar | 8.2.8 |
Что опаснее всего: разбор CVE-2024-4577
Эта уязвимость получила максимальное внимание, потому что её оценка по шкале CVSS составляет 9.8 из 10. Проблема связана с тем, как PHP в режиме CGI на Windows обрабатывает определённые символы в запросе. Из-за особенностей преобразования кодировок злоумышленник может передать скрипту лишние аргументы и добиться выполнения произвольного кода.
Затронуты версии 8.1 до 8.1.29, 8.2 до 8.2.20 и 8.3 до 8.3.8. При этом риск прежде всего у тех, кто запускает PHP на Windows через CGI, например в связке с локальными пакетами вроде XAMPP. Типичная связка Linux с PHP-FPM под эту конкретную атаку не попадает, но обновляться всё равно нужно: остальные CVE никто не отменял.
После публикации информации о дыре начались массовые автоматические сканирования. Именно поэтому откладывать патч нельзя: на уязвимые серверы боты приходят в течение считанных дней.
Типичные ошибки при работе с уязвимостями PHP
Как делают неправильно
- Считают, что «восьмёрка — это новая версия, значит, дыр нет» и не смотрят на номер минорного релиза
- Ставят обновление сразу на боевой сервер без проверки на тестовом окружении
- Оценивают риск только по строке версии, не учитывая, что дистрибутив мог перенести патч в пакет без смены номера
Как правильно
- 01
Фиксировать точную версию (например, 8.2.28) и сравнивать её со списком исправленных CVE
- 02
Сначала обновлять стенд, прогонять тесты и только затем выкатывать на прод
- 03
Проверять статус CVE в трекере безопасности вашего дистрибутива (Debian, Ubuntu, AlmaLinux и других)
Как узнать, что у вас под угрозой
Начните с самого простого: выясните точную версию PHP на сервере. В консоли это команда php -v, а для веб-окружения нужно смотреть версию именно того PHP, который обслуживает сайт, поскольку в системе их может стоять несколько. На виртуальном хостинге версия указана в панели управления.
Дальше сопоставьте номер с таблицей исправлений. Если вы на Linux-дистрибутиве с долгой поддержкой, учтите бэкпорты: разработчики пакетов часто вносят исправление в старую версию, не меняя её номер. Строка 8.2.7 в таком случае может оказаться уже пропатченной. Точный ответ даёт официальный трекер безопасности вашего дистрибутива.
Не забудьте про зависимости. Уязвимости бывают не только в самом PHP, но и в библиотеках, которые подтягивает Composer. Команда composer audit показывает известные проблемы в установленных пакетах.
План защиты сервера на PHP 8.2
- 01
Определите точную версию PHP, которая обслуживает сайт, и режим запуска (PHP-FPM, Apache-модуль, CGI).
- 02
Сверьте версию с официальным журналом изменений PHP и трекером безопасности вашего дистрибутива.
- 03
Обновите стенд до последней доступной версии 8.2.x, прогоните автотесты и проверьте ключевые сценарии сайта.
- 04
Выкатите обновление на боевой сервер в период минимальной нагрузки и держите под рукой план отката.
- 05
Запустите composer audit и обновите библиотеки, в которых найдены известные уязвимости.
- 06
Ужесточите настройки: expose_php=Off, display_errors=Off, ограничьте опасные функции через disable_functions и по возможности откажитесь от PHP-CGI в пользу PHP-FPM.
- 07
Подключите WAF и мониторинг логов, а в Яндекс Вебмастере и Google Search Console включите уведомления о проблемах безопасности.
- 08
Запланируйте миграцию на PHP 8.3 или 8.4 заранее, до окончания поддержки ветки 8.2.
Почему после обновления нельзя расслабляться
Патч закрывает известную дыру, но не гарантирует, что в неё не успели войти раньше. Если ваш сервер был уязвим длительное время, проверьте признаки компрометации: неожиданные файлы в каталогах сайта, подозрительные задания cron, незнакомые учётные записи, странные исходящие соединения.
Отдельно просмотрите логи веб-сервера за период до обновления. Автоматические сканеры оставляют характерные следы: массовые запросы к одним и тем же адресам с необычными параметрами. Если нашли такое, меняйте пароли и ключи доступа, а затем сверяйте файлы сайта с чистой копией из репозитория.
Взлом сайта быстро отражается на видимости. Яндекс и Google помечают заражённые ресурсы предупреждениями и снижают их в результатах поиска. Сообщения об этом приходят в Яндекс Вебмастер и Google Search Console, поэтому оба сервиса стоит подключить заранее, а не после инцидента.
- 01Версия PHP не ниже последней доступной 8.2.x
- 02Режим запуска: PHP-FPM, а не PHP-CGI на Windows
- 03composer audit не показывает известных уязвимостей
- 04display_errors выключен, expose_php выключен
- 05Подключены Яндекс Вебмастер и Google Search Console
- 06Есть свежая резервная копия и проверенный план отката
Что даёт своевременное обновление PHP
- 01
Закрытие известных критичных уязвимостей, которые активно ищут автоматические сканеры
- 02
Защита пользовательских данных, паролей и сессий от кражи
- 03
Стабильная позиция сайта в Яндексе и Google без санкций за заражение
- 04
Меньше аварийных работ: плановое обновление дешевле ликвидации последствий взлома
- 05
Совместимость с современными библиотеками и фреймворками
Итоги: как жить с PHP 8.2 безопасно
- 01
Узнайте точную версию PHP и сравните её с известными CVE
- 02
Обновитесь до последней 8.2.x, предварительно проверив всё на стенде
- 03
Отключите PHP-CGI, где он не нужен, и закройте лишние функции
- 04
Проверяйте зависимости командой composer audit
- 05
Запланируйте переход на PHP 8.3 или 8.4 до конца 2026 года
Уязвимости в PHP не повод для паники, но повод для регулярной гигиены: следить за релизами, ставить патчи и держать мониторинг. Если не уверены в состоянии своего сервера или нет времени разбираться, специалисты проверят конфигурацию и подготовят безопасный план обновления.
Часто задаваемые вопросы
Сама ветка 8.2 получает исправления безопасности, но конкретные ранние сборки содержат известные уязвимости. Безопасной считается только актуальная минорная версия 8.2.x. Например, критичную CVE-2024-4577 закрыли в 8.2.20.
Активная поддержка PHP 8.2 завершилась 31 декабря 2024 года. Исправления безопасности выходят до 31 декабря 2026 года. После этой даты ветка перестанет получать любые патчи.
Сверьте точную версию PHP (команда php -v) с описанием CVE и официальным списком изменений на сайте php.net. На Debian и Ubuntu учитывайте, что дистрибутив может переносить исправления в пакет без смены номера версии. Статус проверяйте в трекере безопасности вашего дистрибутива.
Срочности нет, пока вы получаете патчи и ставите их вовремя. Но миграцию стоит запланировать заранее, до конца 2026 года. Тогда переход пройдёт спокойно, без аварийных правок кода.
Яндекс и Google помечают заражённые сайты предупреждениями и понижают их в выдаче. Уведомления о проблемах приходят в Яндекс Вебмастер и Google Search Console, поэтому подключите оба сервиса.
Проверим ваш сервер на уязвимости PHP до того, как это сделают другие
Оценим версию PHP, конфигурацию и зависимости, а затем составим план обновления по приоритетам.
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Более 300 проверенных PHP-проектов



