Уязвимости PHP 7.4: чем опасна версия и что делать
Белая изометрическая коробка на кольцевой подставке с распахнувшимся дном, из которого падает зелёный шарик

Уязвимости PHP 7.4: чем опасна версия и что делать

PHP 7.4 не получает патчей безопасности с 28 ноября 2022 года. Разбираем риски, известные CVE и безопасный переход на поддерживаемую версию PHP.

Уязвимость PHP 7.4: почему эта версия опасна

Да, PHP 7.4 уязвим: ветка снята с поддержки 28 ноября 2022 года, и новые уязвимости в ней больше не закрываются официально. Надёжное решение — перейти на поддерживаемую версию PHP 8.x.

Последний релиз ветки — PHP 7.4.33, вышедший в ноябре 2022 года. Всё, что найдено после, остаётся без официального исправления.

PHP 7.4 до сих пор стоит на тысячах сайтов: на старых CMS, самописных проектах и недорогих хостингах. Пока всё работает, обновление откладывают. Но с точки зрения информационной безопасности такая версия — открытая дверь. В статье разберём, какие уязвимости известны, чем рискует бизнес и как перейти на актуальную версию без простоя.

Что значит «PHP 7.4 снят с поддержки»

У каждой ветки PHP есть жизненный цикл. Сначала два года идёт активная поддержка: исправляются баги и уязвимости. Потом ещё год действует только поддержка безопасности. После этого ветка получает статус EOL (end of life), то есть «конец жизни»: разработчики языка не выпускают для неё никаких обновлений.

Для PHP 7.4 релиз состоялся 28 ноября 2019 года, активная поддержка закончилась 28 ноября 2021 года, а поддержка безопасности — 28 ноября 2022 года. Это не значит, что сайт перестанет работать. Он продолжит открываться, но при этом любая новая брешь в интерпретаторе, расширениях или стандартной библиотеке будет закрываться только в актуальных ветках.

Особенно неприятно то, что исследователи и злоумышленники анализируют исправления для новых версий. По патчу для PHP 8.x несложно понять, где ошибка, и проверить, затрагивает ли она старую ветку. Для 7.4 готового исправления уже нет.

жизненный цикл php 7.4
01 · 28.11.2019
Релиз PHP 7.4
Типизированные свойства, стрелочные функции, preloading.
02 · 28.11.2021
Конец активной поддержки
Баги больше не исправляются, остаются только патчи безопасности.
03 · 03.11.2022
Релиз 7.4.33
Последняя сборка ветки. Новых версий не будет.
04 · 28.11.2022
EOL: конец поддержки безопасности
Официальные патчи для новых уязвимостей не выпускаются.
05 · 2024
Новые CVE, например CVE-2024-4577
Исправления выходят только для поддерживаемых веток.

Какие уязвимости известны в PHP 7.4

Единого «убийственного бага» у PHP 7.4 нет. Проблема в том, что список проблем со временем только растёт, а закрывать его некому. Часть известных уязвимостей была исправлена до окончания поддержки (последний патч — 7.4.33), но если на сервере стоит более ранняя сборка вроде 7.4.3 или 7.4.16, эти дыры остаются открытыми.

Отдельная категория — уязвимости, обнаруженные уже после EOL. Яркий пример — CVE-2024-4577: инъекция аргументов в PHP-CGI на Windows, приводящая к удалённому выполнению кода. Разработчики PHP прямо заявили, что ветки 8.0 и старше, включая 7.4, не поддерживаются, поэтому для них исправлений нет. Остаётся только менять конфигурацию (отказаться от CGI) или обновляться.

УязвимостьСуть проблемыСтатус для PHP 7.4
CVE-2022-31625Use-after-free при работе с PostgreSQL в функции pg_query_params()Исправлено в 7.4.30, актуально для более ранних сборок
CVE-2022-31626Переполнение буфера в mysqlnd и pdo_mysql при подключении к вредоносному серверу MySQLИсправлено в 7.4.30, актуально для более ранних сборок
CVE-2024-4577Инъекция аргументов в PHP-CGI на Windows и удалённое выполнение кодаОфициального патча нет, нужно отключать CGI или переходить на новую ветку
Новые CVE после 2022 годаБреши в ядре, расширениях и сторонних библиотеках, поставляемых с PHPОфициальных исправлений не будет

Чем это грозит сайту и бизнесу

Для владельца сайта уязвимость интерпретатора — это не абстрактный «технический долг». Через неё злоумышленник может выполнить произвольный код на сервере, получить доступ к базе данных с заказами и персональными данными, встроить в страницы скрытые ссылки и редиректы либо превратить сервер в часть ботнета.

Последствия видны и в поиске. Яндекс Вебмастер и Google Search Console сообщают о заражении и выдают предупреждения, а Яндекс Браузер и Chrome показывают пользователям красный экран при попытке открыть сайт. Трафик падает за дни, а на восстановление репутации уходят недели. Добавьте штрафы за утечку персональных данных (152-ФЗ) и потерянные заказы.

Типичные ошибки владельцев сайтов на PHP 7.4

Чаще всего проблемы возникают не из-за незнания, а из-за ложного чувства безопасности.

Как рассуждают и поступают

  • «Сайт работает стабильно, значит, всё в порядке»
  • «Нас никто не взломает, мы небольшой проект»
  • Обновляют только плагины и CMS, а версию PHP не трогают
  • Оставляют на сервере файл с phpinfo() и открытую админку
  • Откладывают миграцию, пока не появится «свободный бюджет»

Как правильно

  1. 01

    Считать устаревшую версию PHP отдельным риском и вносить в план работ

  2. 02

    Помнить, что атаки автоматизированы: боты сканируют сайты по версиям ПО, а не по размеру бизнеса

  3. 03

    Обновлять стек целиком: PHP, CMS, плагины, расширения и Composer-зависимости

  4. 04

    Удалять отладочные файлы и закрывать доступ к служебным разделам по IP

  5. 05

    Заложить миграцию в ближайший спринт: чем дольше откладываете, тем она дороже

php 7.4 и актуальная ветка php 8.x
было · php 7.4
  • Патчей безопасности нет с ноября 2022
  • Новые библиотеки и CMS требуют 8.0+
  • Слабая типизация, больше скрытых ошибок
  • Медленнее на типичных нагрузках
  • Хостеры постепенно убирают версию из панели
стало · php 8.x
  • Регулярные обновления безопасности
  • Совместимость с актуальными фреймворками
  • Union types, enum, readonly-свойства, match
  • JIT-компиляция и общий прирост скорости
  • Строгие проверки, ошибки видны раньше

Можно ли остаться на PHP 7.4 временно

Иногда мгновенный переход невозможен: проект завязан на старую CMS, а плагин без поддержки не работает на PHP 8. В таком случае нужны компенсирующие меры, но это временное решение, а не стратегия.

Первый вариант — серверы с backport-патчами. Дистрибутивы вроде Debian (в рамках LTS) и Ubuntu (по подписке Ubuntu Pro) продолжают переносить исправления безопасности в свои пакеты PHP 7.4. Второй вариант — коммерческая расширенная поддержка от компаний, которые поддерживают устаревшие ветки PHP за плату. Третий — защитные слои вокруг приложения: WAF, запрет CGI, отключение опасных функций через disable_functions, ограничение open_basedir, изоляция сайта в контейнере и ежедневные резервные копии вне сервера.

Учтите: такие меры снижают риск, но не устраняют его. Кроме того, сроки поддержки дистрибутивов тоже ограничены, поэтому запланируйте миграцию заранее.

Что даёт переход с PHP 7.4 на актуальную версию

  1. 01

    Закрытые уязвимости и регулярные патчи безопасности от разработчиков языка

  2. 02

    Прирост производительности: страницы отдаются быстрее, а это плюс для Core Web Vitals и поведенческих факторов в Яндексе и Google

  3. 03

    Совместимость с актуальными версиями WordPress, 1С-Битрикс, Laravel, Symfony и других фреймворков

  4. 04

    Более строгая типизация и современный синтаксис, которые упрощают поддержку кода

  5. 05

    Меньше расходов на «костыли» и аварийные доработки в будущем

Как безопасно мигрировать с PHP 7.4 на PHP 8.x

  1. 01

    Проведите инвентаризацию: выясните точную версию PHP (php -v), список расширений, используемую CMS, плагины и Composer-зависимости.

  2. 02

    Сделайте полную резервную копию файлов и базы данных и проверьте, что её можно восстановить.

  3. 03

    Разверните копию сайта на тестовом окружении с целевой версией PHP. Не проверяйте обновление на боевом сервере.

  4. 04

    Прогоните код через анализаторы: PHP_CodeSniffer с набором PHPCompatibility, PHPStan или Psalm, а при необходимости используйте Rector для автоматического рефакторинга.

  5. 05

    Обновите CMS, плагины, темы и библиотеки до версий, которые заявляют поддержку PHP 8. Замените заброшенные модули.

  6. 06

    Исправьте типичные проблемы: удалённые функции, строгие сравнения, передачу null в параметры встроенных функций, фигурные скобки для смещения строк.

  7. 07

    Протестируйте ключевые сценарии: оформление заказа, формы, личный кабинет, интеграции с платёжными системами и CRM. Проверьте журнал ошибок.

  8. 08

    Переключите версию в панели хостинга или на сервере в период минимальной нагрузки, оставив возможность быстрого отката.

  9. 09

    После запуска неделю следите за логами, ошибками 5xx, скоростью ответа, а также отчётами Яндекс Вебмастера и Google Search Console.

На что обратить внимание при переходе

Самые частые сложности возникают не в вашем коде, а в сторонних модулях. Старые плагины, неподдерживаемые темы оформления и самописные расширения, написанные «под 7.4», могут выдавать предупреждения или падать с фатальными ошибками. Поэтому начинайте с аудита зависимостей, а не с переключения версии.

Выбирайте не самую свежую версию PHP, а ту, которая уже поддерживается вашей CMS и получает патчи ещё не меньше года-двух. Если проект большой, переходите поэтапно: сначала на 8.0 или 8.1, устранив предупреждения о deprecated, затем на более новую ветку. Так вы разделите риски и проще найдёте источник проблем.

экспресс-проверка: вы в зоне риска, если…
01php -v показывает версию 7.4.x
02Хостинг или сервер не обновлялся более года
03Работает PHP в режиме CGI, особенно на Windows (XAMPP)
04Плагины и темы без обновлений более двух лет
05Нет WAF, резервных копий вне сервера и мониторинга
06В Яндекс Вебмастере или Search Console есть уведомления о безопасности
Если вы отметили хотя бы два пункта из шести, назначьте аудит и план миграции на ближайшие недели. Не забудьте удалить файлы с phpinfo() после проверки версии.

Итоги: что делать с PHP 7.4 уже сейчас

PHP 7.4 — это версия без официальных патчей безопасности, и каждая новая уязвимость остаётся в ней открытой.
  1. 01

    Проверьте версию PHP на всех сайтах и серверах

  2. 02

    Составьте список CMS, плагинов и библиотек, которые мешают обновлению

  3. 03

    Протестируйте переход на PHP 8.x на копии сайта

  4. 04

    Если мигрировать пока нельзя, используйте backport-патчи, WAF, запрет CGI и резервные копии

  5. 05

    После обновления следите за логами и отчётами Яндекс Вебмастера и Google Search Console

Миграция с PHP 7.4 — не прихоть разработчиков, а базовая гигиена безопасности. Чем раньше вы её проведёте, тем меньше будут затраты и тем ниже вероятность потерять данные, трафик и репутацию. Начните с аудита: он покажет, насколько сложным будет переход именно в вашем проекте.

Часто задаваемые вопросы

Проверьте безопасность своего сайта на PHP 7.4 до взлома

Проведём аудит версии PHP, плагинов и конфигурации сервера и составим безопасный план миграции на PHP 8.

Бесплатный аудитПлан миграции за 24 часаБез простоя сайта

PHP 7.4 без патчей уже более двух лет

Политика конфиденциальности

При оставлении заявки на ресурсе «https://gurucontext.ru» пользователи предоставляют следующие сведения:

  • Имя
  • Контактный телефон или Telegram
  • Адрес сайта пользователя (не обязательно)

Также администрация сайта получает данные об IP-адресе посетителей, типе браузера, времени нахождения на сайте и прочие подобные сведения через сервисы статистики.

Использование информации

Вся полученная информация используется администрацией «https://gurucontext.ru» исключительно в целях связи с клиентом.

Защита персональных данных

Компания «https://gurucontext.ru» обязуется не разглашать сведения, полученные от пользователей, и хранит их в защищённом виде.

Предоставление данных третьим лицам

Полученные сведения не передаются третьим лицам, за исключением случаев исполнения обязательств перед клиентом (с его разрешения) и обоснованных требований закона.

Контакты

Телефон: +7 (499) 955-47-00.
E-mail: info@gurucontext.ru.