
Уязвимости PHP 8.4: что известно и как защитить сайт
Отдельной «дыры» в PHP 8.4 нет, но CVE в ветке исправляют патч-релизами. Как проверить версию, обновиться до свежей 8.4.x и снизить риски.
Уязвимости PHP 8.4: реальная картина без паники
Единой критической уязвимости «PHP 8.4» не существует: в ветке, как и в любой другой, время от времени находят отдельные CVE, и их закрывают патч-релизами 8.4.x. Защита сводится к трём действиям: держать последнюю 8.4.x, укрепить конфигурацию и следить за зависимостями.
Запрос «уязвимость PHP 8.4» обычно появляется после тревожной новости, письма от хостинга или сообщения сканера безопасности. Разберём, откуда берутся такие уязвимости, как проверить свой сервер и что сделать в первую очередь. Статья пригодится владельцам сайтов на WordPress, 1С-Битрикс, Laravel и Symfony, а также администраторам и разработчикам.
Что на самом деле значит «уязвимость PHP 8.4»
PHP 8.4 вышел 21 ноября 2024 года и принёс заметные новшества: хуки свойств (property hooks), асимметричную видимость свойств, новый DOM-API с разбором HTML5 и ряд устареваний. Любой крупный релиз добавляет много нового кода, а новый код неизбежно содержит ошибки. Их находят исследователи, команда PHP и участники программ вознаграждения за найденные баги.
Каждой найденной проблеме присваивают идентификатор CVE, и она исправляется в очередном патч-релизе 8.4.x. Поэтому формулировка «в PHP 8.4 есть уязвимость» без номера CVE и номера патч-релиза мало что говорит. Нужно знать, какая именно версия уязвима и в каком релизе проблему закрыли.
Стоит помнить и о другом. Иногда громкие уязвимости относятся к другим веткам. Например, известная проблема CVE-2024-4577 в PHP-CGI на Windows затрагивала ветки 8.1–8.3, но не 8.4. Тем не менее в заголовках её нередко связывали с «новыми версиями PHP». Всегда сверяйтесь с первоисточником.
Первый стабильный релиз ветки с property hooks и новым DOM-API.
До этой даты выходят исправления ошибок и безопасности.
После этой даты ветка перестаёт получать даже критические патчи.
Какие проблемы находили в ветке 8.4
Уязвимости в ранних релизах 8.4.x в основном относились к нескольким классам.
Обработка HTTP-потоков. В релизе 8.4.5 (март 2025 года) исправили группу ошибок в обёртке HTTP: некорректный разбор свёрнутых заголовков (CVE-2025-1217), заголовки без двоеточия (CVE-2025-1734), слишком длинные учётные данные и адреса перенаправлений (CVE-2025-1736 и CVE-2025-1861), неверный заголовок Content-Type при перенаправлении (CVE-2025-1219). Все они связаны с тем, как PHP обрабатывает ответы внешних серверов. Это важно, если ваш код ходит на сторонние адреса через file_get_contents или потоки.
Ошибки работы с памятью. Типичные для языка на C проблемы вроде use-after-free и переполнений в расширениях. Они исправляются патчами, а эксплуатация обычно требует определённых условий.
Новый функционал. Свежие компоненты, такие как новый DOM-API, проходят «обкатку» в первых патч-релизах, и именно там чаще всего находят ошибки.
Номера CVE и состав исправлений в каждом релизе всегда проверяйте в официальном списке изменений (changelog) на php.net и в базах NVD и БДУ ФСТЭК: список пополняется, а эта статья фиксирует лишь типичные примеры.
Почему важна именно последняя патч-версия
Исправления безопасности в PHP выходят в составе регулярных патч-релизов 8.4.x. Они не ломают совместимость: смена 8.4.3 на 8.4.х с более высоким номером обычно проходит без правок кода. Поэтому оставаться на «первой версии, которую поставил хостинг» нет никакого смысла.
У этого правила есть нюанс для тех, кто работает на Linux-серверах. Debian, Ubuntu, Astra Linux, ALT и другие дистрибутивы часто переносят исправления в свои пакеты, не меняя номер версии (так называемый backport). Сканер безопасности может ругаться на «старую» версию, хотя патч уже установлен. И наоборот, при установке из сторонних репозиториев вы получаете оригинальную версию с php.net. Смотрите changelog пакета, а не только вывод php -v.
На виртуальном хостинге с панелью ISPmanager, Plesk или Hestia версию PHP обычно переключают в настройках сайта. Если нужной патч-версии нет в списке, напишите в поддержку хостинга.
| Ветка PHP | Активная поддержка до | Исправления безопасности до | Что делать |
|---|---|---|---|
| 8.1 | завершена (ноябрь 2023) | завершены (31.12.2025) | срочно мигрировать |
| 8.2 | завершена (31.12.2024) | 31.12.2026 | планировать переход на 8.3 или 8.4 |
| 8.3 | 31.12.2025 | 31.12.2027 | работать, готовить переход |
| 8.4 | 31.12.2026 | 31.12.2028 | рекомендуемая ветка для новых проектов |
Что это значит для вашего проекта
Если ваш сайт работает на PHP 8.0 и старше, вы остаётесь без исправлений безопасности: любые найденные уязвимости там уже не закрывают. Для 8.1 срок поддержки безопасности вышел 31 декабря 2025 года, для 8.2 истекает в конце 2026 года. Вопрос в том, когда вы будете переезжать, и лучше это сделать по плану, а не в аварийном режиме после взлома.
Для новых проектов 8.4 даёт самый длинный срок поддержки: исправления безопасности до конца 2028 года. Но переходить нужно осознанно: проверить совместимость плагинов, тем и библиотек, особенно в CMS вроде WordPress и 1С-Битрикс, где часть расширений может отставать от свежих версий PHP.
Как безопасно обновить PHP до последней 8.4.x
- 01
Узнайте текущую версию: команда php -v в консоли, phpinfo() в закрытой от посторонних странице или раздел настроек PHP в панели хостинга. Отдельно проверьте версию для веб-сервера (php-fpm) и для консольных скриптов: они могут различаться.
- 02
Сделайте полную резервную копию файлов и базы данных и убедитесь, что из неё действительно можно восстановиться.
- 03
Сверьте свою версию с последним релизом на php.net и прочитайте список изменений: нужно понять, какие CVE закрыты в новых версиях.
- 04
Обновите PHP на тестовой копии сайта. В Docker это новая версия образа php:8.4-fpm, на сервере — обновление пакета или переключение версии в панели.
- 05
Запустите тесты и пройдите ключевые сценарии вручную: оформление заказа, авторизацию, формы, выгрузки, cron-задачи. Просмотрите лог ошибок на предмет предупреждений об устаревших конструкциях (deprecated).
- 06
Выполните composer audit и обновите библиотеки с известными уязвимостями. Команда проверяет зависимости проекта по базе уязвимостей.
- 07
Выкатите обновление на боевой сервер в период минимальной нагрузки, затем 1–2 дня следите за логами, ошибками 5xx и отчётами Яндекс Метрики или Google Analytics: резкий рост ошибок или падение конверсии выдаст проблему.
Обновление версии — это только половина защиты
Даже последняя 8.4.x не спасёт, если конфигурация сервера «по умолчанию», а код сайта строит запросы без проверки данных. Большинство реальных взломов происходит не из-за экзотических уязвимостей интерпретатора, а из-за устаревших плагинов, слабых паролей, открытых служебных файлов и ошибок в самом коде приложения.
Поэтому обновление PHP нужно сочетать с базовым укреплением (hardening). Начать можно с нескольких настроек php.ini: они занимают минут десять, но заметно сокращают поверхность атаки. Особенно полезно отключить allow_url_fopen там, где сайт не обращается к внешним адресам через файловые функции: это сужает круг сценариев, в которых могут сработать проблемы HTTP-обёртки.
expose_php = Onверсия PHP видна в заголовках ответаdisplay_errors = Onпути и ошибки видны посетителямallow_url_fopen = Onфайловые функции открывают внешние адресаsession.cookie_httponly = 0cookie доступна из JavaScript
expose_php = Offверсия скрыта от постороннихdisplay_errors = Offошибки пишутся только в лог (log_errors = On)allow_url_fopen = Offесли сайту не нужны внешние запросы такого типаsession.cookie_httponly = 1плюс session.use_strict_mode = 1
Типичная ошибка: «скрыл версию PHP — значит, я защищён»
Как делать не стоит
- Скрыть версию в заголовках и не обновлять PHP годами.
- Оставить display_errors включённым на боевом сайте и показывать посетителям пути к файлам.
- Ставить обновление сразу на боевой сервер без резервной копии и проверки на тестовой копии.
- Игнорировать устаревшие плагины и библиотеки, потому что «сам PHP же свежий».
Как правильно
- 01
Регулярно ставить последние патч-релизы 8.4.x и сверять changelog с известными CVE.
- 02
Сочетать обновления с настройкой php.ini, правами на файлы и ограничением опасных функций (disable_functions) и каталогов (open_basedir).
- 03
Проверять зависимости командой composer audit и обновлять плагины CMS.
- 04
Настроить мониторинг: журналы ошибок, отчёты безопасности в Яндекс Вебмастере и Google Search Console.
Как уязвимости PHP отражаются на SEO
Взлом сайта опасен не только утечкой данных. Злоумышленники внедряют скрытые ссылки и спам-страницы, подменяют содержимое для поисковых роботов (клоакинг), перенаправляют мобильных посетителей на сторонние ресурсы. Поисковые системы замечают такие изменения. Яндекс Вебмастер и Google Search Console могут показать предупреждение о нарушениях безопасности, а позиции в выдаче и доверие пользователей падают.
Восстановление после взлома обычно занимает куда больше времени и денег, чем плановое обновление. Поэтому подключите сайт к Яндекс Вебмастеру и Google Search Console, включите уведомления и регулярно просматривайте разделы, которые касаются безопасности и индексирования.
php -v и сравнение с последним релизом 8.4.x на php.net.
Ваша ветка ещё получает исправления безопасности?
composer audit, обновление плагинов и тем CMS.
expose_php, display_errors, allow_url_fopen, параметры сессий.
Свежая копия файлов и базы и проверка восстановления.
Разделы безопасности в Яндекс Вебмастере и Google Search Console.
Итоги: как относиться к уязвимостям PHP 8.4
- 01
Отдельной «уязвимости PHP 8.4» нет: CVE находят в разных релизах и закрывают в патчах 8.4.x.
- 02
Держите на сервере последнюю 8.4.x и проверяйте changelog, особенно если используете пакеты дистрибутива с backport.
- 03
Ветки 8.1 и старше уже не получают исправлений безопасности, а 8.2 перейдёт в этот статус в конце 2026 года: планируйте миграцию заранее.
- 04
Сочетайте обновление с настройкой php.ini, проверкой зависимостями через composer audit и резервными копиями.
- 05
Подключите Яндекс Вебмастер и Google Search Console: они помогут заметить проблемы безопасности до того, как пострадают позиции.
Не ждите тревожной новости, чтобы проверить сайт. Раз в месяц сверяйте версию PHP с последним релизом, а раз в квартал проводите короткий аудит конфигурации и зависимостей. Такая рутина обходится дешевле любого восстановления после взлома.
Часто задаваемые вопросы
Одной «фирменной» уязвимости у ветки 8.4 нет. Как и в любой версии PHP, в ней находят отдельные CVE, и их исправляют в патч-релизах 8.4.x. Поэтому на сайте должна стоять последняя доступная 8.4.x, а не первая версия ветки.
Выполните php -v и сравните номер с последним релизом на php.net. Затем найдите свою версию в списке изменений (changelog) и в базах уязвимостей: NVD, MITRE и БДУ ФСТЭК. На Debian, Ubuntu, Astra Linux и ALT дистрибутив может переносить исправления в пакет без смены номера версии, поэтому смотрите changelog пакета.
Нужно следить за сроками поддержки. По официальному графику php.net исправления безопасности для 8.1 закончились 31 декабря 2025 года, для 8.2 заканчиваются 31 декабря 2026 года. Для 8.4 они выпускаются до 31 декабря 2028 года. Чем позже вы мигрируете, тем меньше времени останется на спокойный переход.
Да. Заражённый сайт может попасть в список небезопасных. Яндекс Вебмастер и Google Search Console показывают такие проблемы в разделах о безопасности, а поисковики могут понизить позиции или пометить ресурс предупреждением. Чем быстрее вы закроете уязвимость, тем меньше потеряете в трафике.
Критичные исправления устанавливайте в течение нескольких дней, остальные патч-релизы — по регулярному графику, например раз в месяц. Сначала проверьте обновление на тестовой копии сайта и сделайте резервную копию.
Проверим ваш сайт на уязвимости PHP и безопасно обновим версию
Определим версию PHP, найдём устаревшие зависимости и подготовим план перехода на актуальную 8.4.x
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Проверяем версии, конфиги и зависимости



