
Какие версии PHP уязвимы: список и как проверить сайт
Уязвимы все ветки PHP 8.0 и старше: для них нет патчей. Поддерживаемые 8.2–8.4 безопасны только с последним минорным обновлением.
Какие версии PHP уязвимы
Уязвимы все версии PHP, снятые с поддержки: ветки 8.0 и старше, включая популярные 7.4, 7.2 и 5.6. Поддерживаемые ветки тоже уязвимы, если на них не установлен последний патч-релиз.
Вопрос «какие версии PHP уязвимы» чаще всего задают после уведомления от хостинга, сообщения антивирусного сканера или предупреждения в панели CMS. Ниже разберём, как устроен жизненный цикл PHP, какие ветки сегодня опасны, какие конкретные CVE делают их мишенью для атак и что нужно сделать, чтобы проверить свой сайт и безопасно перейти на актуальную версию. Данные актуальны на 2025 год, а точные даты всегда стоит сверять на официальной странице поддерживаемых версий на php.net.
Как устроена поддержка версий PHP
У каждой минорной ветки PHP (например, 8.2 или 8.3) есть строго определённый срок жизни. С версии 8.1 действует схема «2+2»: первые два года ветка получает активную поддержку, то есть исправления ошибок и безопасности, а ещё два года выходят только патчи безопасности. После этого наступает статус EOL (end of life): разработчики прекращают выпускать любые исправления.
Именно статус EOL и определяет, уязвима ли версия. Когда в PHP находят новую брешь, её закрывают только в поддерживаемых ветках. Исследователи и злоумышленники при этом видят изменение в коде и точно знают, что аналогичная проблема есть в старых версиях, но исправлять её там никто не будет.
Второй важный момент: даже на поддерживаемой ветке уязвимость может быть в конкретном патч-релизе. Например, PHP 8.3.7 уже считается уязвимым, а 8.3.8 содержит исправление. Поэтому оценивать нужно не только ветку, но и номер патча после третьей точки.
От релиза до статуса EOL: четыре года
Релиз
Ветка выходит в ноябре. Начинается отсчёт четырёх лет.
Активная поддержка
2 года: исправляются баги и уязвимости, выходят патч-релизы.
Только безопасность
Ещё 2 года: выходят лишь критичные патчи безопасности.
EOL
Патчей нет. Любая новая CVE остаётся открытой навсегда.
| Ветка PHP | Статус | Поддержка безопасности до |
|---|---|---|
| 8.4 | Активная поддержка | 31 декабря 2028 |
| 8.3 | Активная поддержка | 31 декабря 2027 |
| 8.2 | Только безопасность | 31 декабря 2026 |
| 8.1 | Только безопасность, скоро EOL | 31 декабря 2025 |
| 8.0 | EOL, уязвима | 26 ноября 2023 |
| 7.4 | EOL, уязвима | 28 ноября 2022 |
| 7.0–7.3 | EOL, уязвимы | 2019–2021 |
| 5.6 и старше | EOL, критически уязвимы | 31 декабря 2018 и ранее |
Что означает EOL на практике
Если вы видите в таблице статус EOL, это не абстрактное предупреждение. Это значит, что команда PHP не будет выпускать для этой ветки исправления даже при обнаружении критической бреши с удалённым выполнением кода. Всё, что найдено после даты окончания поддержки, остаётся доступным для эксплуатации.
Особенно рискованны версии PHP 5.6 и 7.x: на них до сих пор работает множество сайтов на устаревших CMS, самописных проектах и старых интернет-магазинах. Автоматические сканеры ботнетов ищут именно такие сайты по заголовку X-Powered-By, по структуре ответов и по известным путям к уязвимым скриптам.
Отдельно отметим PHP 8.0. Многие считают его «ещё новым», но поддержка закончилась 26 ноября 2023 года. Формально это уже не безопасная версия, и миграция с неё на 8.2 или 8.3 обычно проходит заметно проще, чем с 7.x.
Три уязвимости, которые массово эксплуатировали
Внедрение аргументов в PHP-CGI на Windows
Затронуты 8.1 до 8.1.29, 8.2 до 8.2.20 и 8.3 до 8.3.8. Позволяет выполнить произвольный код на сервере.
Удалённое выполнение кода в PHP-FPM с nginx
Затронуты 7.1 до 7.1.33, 7.2 до 7.2.24 и 7.3 до 7.3.11 при определённой конфигурации nginx.
Параметры запроса как аргументы php-cgi
Затронуты 5.3 до 5.3.12 и 5.4 до 5.4.2. Приводит к раскрытию исходного кода и выполнению команд.
Номер версии — не всё: бэкпорты и дистрибутивы
Есть важный нюанс, из-за которого сканеры нередко дают ложные срабатывания. Поставщики дистрибутивов (Debian, Ubuntu, AlmaLinux и другие) могут переносить исправления безопасности в «старые» пакеты, не меняя основной номер версии. Поэтому PHP 7.4 из пакета дистрибутива с активной поддержкой может быть закрыт от известных CVE, а чистая сборка 7.4 с официального сайта PHP — нет.
Тот же принцип действует для платных программ расширенной поддержки: они выпускают патчи для веток после EOL. Это допустимый временный вариант, если срочная миграция невозможна, но не замена переходу на поддерживаемую ветку: такие патчи покрывают не все проблемы, а совместимость с новыми расширениями и библиотеками всё равно будет ухудшаться.
Поэтому при проверке сайта важно смотреть и на номер версии PHP, и на источник сборки, и на дату последнего обновления пакета на сервере.
Чем рискует сайт на уязвимой версии PHP
- 01
Удалённое выполнение кода: злоумышленник запускает собственные команды на сервере и получает контроль над хостингом.
- 02
Утечка данных: попадают в открытый доступ базы клиентов, заказы, пароли администраторов и ключи API.
- 03
Заражение и редиректы: на сайт внедряют вредоносные скрипты и спам-страницы, из-за чего он попадает под фильтры Яндекса и Google.
- 04
Блокировка хостингом: провайдер может приостановить аккаунт при обнаружении рассылки спама или участия в ботнете.
- 05
Потеря позиций и трафика: поисковики помечают заражённые сайты предупреждением, что снижает доверие и конверсию.
- 06
Несовместимость с новыми библиотеками: современные версии Composer-пакетов, плагинов и расширений уже не поддерживают PHP 7.x.
Как быстро определить версию PHP на своём сайте
Чтобы понять, нужно ли вам срочно что-то делать, достаточно узнать точный номер версии, включая патч. Самый надёжный способ — посмотреть версию именно той среды, в которой выполняется сайт, а не той, что установлена в консоли по умолчанию. На одном сервере часто работают сразу несколько версий PHP, и консольный php -v может показывать совсем другую ветку, чем FPM или модуль веб-сервера.
Удобнее всего проверять версию в панели хостинга: в большинстве панелей есть раздел выбора версии PHP для каждого домена. Вторая надёжная опция — временный файл с вызовом phpinfo(), который после проверки нужно сразу удалить, чтобы не раскрывать конфигурацию. Для WordPress, Битрикс и других CMS версия обычно отображается в административной панели в разделе диагностики.
Как проверить и безопасно обновить PHP
- 01
Узнайте точную версию: через панель хостинга, файл с phpinfo() или раздел диагностики CMS. Запишите номер полностью, например 7.4.33 или 8.2.18.
- 02
Сверьте ветку с таблицей поддержки. Если она в статусе EOL, обновление нужно планировать немедленно. Если ветка поддерживается, убедитесь, что установлен последний патч-релиз.
- 03
Сделайте полную резервную копию файлов и базы данных и проверьте, что её можно восстановить.
- 04
Создайте тестовую копию сайта (staging) и переключите на ней PHP на целевую версию: 8.3 или 8.4 для большинства проектов.
- 05
Обновите CMS, плагины, темы и зависимости Composer до версий, совместимых с новой веткой. Команда composer audit покажет известные уязвимости в пакетах проекта.
- 06
Просмотрите журналы ошибок и пройдите ключевые сценарии: заказ, форма обратной связи, личный кабинет, вход в админку.
- 07
Переключите PHP на рабочем сайте в период минимальной нагрузки и несколько дней следите за логами. Проверьте разделы безопасности в Яндекс Вебмастере и Google Search Console.
Почему «и так работает» — плохой аргумент
Самая частая причина, по которой владельцы откладывают обновление, — страх что-то сломать. Он понятен: при переходе с 7.x на 8.x действительно исчезли или изменили поведение некоторые функции, а старые плагины и самописный код могут выдавать ошибки.
Но стоимость миграции растёт со временем. Чем дольше сайт живёт на старой ветке, тем больше накапливается несовместимостей, и тем сложнее переходить сразу через несколько мажорных версий. Плановое обновление раз в 1–2 года обходится существенно дешевле, чем срочное восстановление после взлома.
Типичные ошибки при оценке уязвимости PHP
Как рассуждают
- «Мой сайт маленький, он никому не нужен»: атаки автоматизированы и сканируют адреса подряд.
- «Я скрыл версию PHP, значит, меня не найдут»: уязвимости проверяют перебором, а не только по заголовкам.
- «У меня 8.1, это новая версия»: поддержка заканчивается 31 декабря 2025 года, а старые патчи уязвимы.
- «Сайт работает стабильно, зачем трогать»: стабильность не отменяет открытых CVE.
Как правильно
- 01
Оценивайте и ветку, и номер патча, и источник сборки PHP.
- 02
Планируйте переход на поддерживаемую ветку заранее, за 6–12 месяцев до EOL.
- 03
Включите автоматические обновления безопасности ОС и пакетов PHP.
- 04
Используйте скрытие версии (expose_php = Off) только как дополнение к обновлению, а не вместо него.
Подготовка к обновлению: на что смотреть в первую очередь
Большинство проблем при переходе на новую версию PHP связано не с самим интерпретатором, а с окружением: устаревшими плагинами, неподдерживаемыми расширениями и кодом, который использует удалённые функции. Поэтому подготовку лучше провести заранее и последовательно, а не в день переключения.
Ниже собран короткий чек-лист, который помогает снизить риск простоя и не потерять данные. Его удобно пройти вместе с разработчиком или хостинг-провайдером.
Семь проверок до переключения версии PHP
- Резервная копияфайлов и базы данных, проверенная восстановлением
- Тестовая копиясайта с тем же набором плагинов и данных
- Версии CMS и плагиновобновлены до совместимых с PHP 8.x
- Composer-зависимостипроверены командой composer audit
- PHP-расширения(mysqli, gd, curl, mbstring) подключены для новой версии
- Журнал ошибокпроверен на предупреждения об устаревших функциях
- План откатана предыдущую версию на случай критичной ошибки
Итоги: какие версии PHP считать безопасными
- 01
Все ветки 8.0 и старше, включая 7.4 и 5.6, сняты с поддержки и уязвимы.
- 02
PHP 8.1 получает только патчи безопасности до 31 декабря 2025 года, поэтому переход нужно планировать заранее.
- 03
Даже поддерживаемая ветка уязвима без последнего патча, как показывает CVE-2024-4577.
- 04
Проверяйте и номер версии, и источник сборки: бэкпорты дистрибутивов меняют картину.
- 05
Обновление проводите по плану: резервная копия, тестовая копия, проверка зависимостей, мониторинг.
Проверьте версию PHP на своём сайте сегодня: это занимает пару минут, а цена откладывания — потенциальный взлом, потеря данных и просадка в поисковой выдаче Яндекса и Google. Если ваш проект работает на устаревшей ветке, лучше составить план миграции сейчас, пока есть время на спокойную проверку и тестирование.
Часто задаваемые вопросы
Да. Ветка 7.4 снята с поддержки 28 ноября 2022 года, патчи безопасности для неё официально не выпускаются. Любая новая уязвимость в ней остаётся неисправленной, если нет платного расширенного сопровождения или бэкпортов от поставщика дистрибутива.
Пока частично. Ветка получает только исправления безопасности до 31 декабря 2025 года, после чего перейдёт в статус EOL. Ветку 8.1 стоит заранее планово переводить на 8.3 или 8.4, а до перехода держать последний патч-релиз.
Выполните команду php -v в консоли сервера, создайте файл с функцией phpinfo() (после проверки удалите его) или откройте раздел PHP в панели хостинга. В WordPress версия указана в разделе «Инструменты → Здоровье сайта». Учтите, что консольная версия может отличаться от версии, под которой работает сайт.
Нет. Отключение expose_php убирает заголовок X-Powered-By и немного затрудняет разведку, но не закрывает уязвимости. Защищает только обновление до поддерживаемой ветки и своевременная установка патчей.
Составьте план миграции: обновите CMS и плагины до версий, совместимых с PHP 8.2–8.4, проверьте код на тестовой копии. Если срочно перейти нельзя, ограничьте доступ к сайту через WAF, закройте опасные функции в php.ini и рассмотрите коммерческую расширенную поддержку старой ветки.
Проверим версию PHP и безопасность вашего сайта за один день
Найдём устаревшие компоненты, подготовим безопасный план обновления без простоя и потери данных
Спасибо за заявку!
Мы свяжемся с вами в ближайшее время.
Более 100 сайтов переведены на PHP 8



