Устаревший PHP в WordPress: 70% сайтов под угрозой взлома через уязвимости
📋 Кратко
Более трети WordPress-сайтов работают на неподдерживаемых версиях PHP — 7.x и даже 5.x, которые не получают патчей безопасности. Разбираем реальные риски, уязвимости и даём пошаговый план обновления без поломки сайта.
⏱ 9 минут чтения
WordPress работает на PHP — это знают все, кто хоть раз сталкивался с этим движком. Но мало кто задумывается: какая именно версия PHP крутится на сервере. Между тем разница между PHP 7.4 и PHP 8.3 — это не только скорость загрузки сайта, но и фундаментальная безопасность. Версия 7.4 перестала получать патчи безопасности в ноябре 2022 года. Версия 5.6 — в январе 2019-го. А десятки тысяч сайтов всё ещё работают на них.
По данным W3Techs на июль 2026 года, 38,5% PHP-сайтов используют версии, которые официально больше не поддерживаются. Для владельцев WordPress-сайтов это означает, что каждая новая уязвимость в ядре PHP, обнаруженная хакерами, никогда не будет исправлена на их сервере. Вопрос не в том, взломают ли сайт — а когда.
В этой статье мы разберём, какие конкретно угрозы несёт устаревший PHP, приведём статистику и примеры реальных атак, а главное — дадим чёткий пошаговый план обновления, который не сломает ваш сайт.
Почему версия PHP критична для безопасности WordPress
PHP — это интерпретируемый язык, и каждая его версия содержит не только новые возможности, но и сотни исправлений уязвимостей. Когда PHP-разработчики прекращают поддержку ветки, все найденные после этой даты уязвимости остаются незакрытыми навечно.
Связка WordPress + старый PHP — особенно опасная комбинация. WordPress сам по себе регулярно обновляет ядро, плагины и темы. Но все эти обновления бесполезны, если PHP на сервере содержит критические уязвимости на уровне языка. Атакующий может обойти защиту самого CMS, атакуя рантайм PHP.
Основные угрозы устаревшего PHP
- Уязвимости удалённого выполнения кода (RCE) — в PHP 7.x обнаружено 18+ уязвимостей RCE после окончания поддержки (CVE-2023-3247, CVE-2024-1874 и др.)
- SQL-инъекции через некорректную обработку типов — в старых версиях PHP слабая типизация позволяла манипулировать запросами к базе данных
- Отказ в обслуживании (DoS) — уязвимости в обработчиках HTTP-запросов, позволяющие «положить» сервер одним запросом
- Кросс-сайтовый скриптинг (XSS) — некорректное экранирование вывода в старых функциях PHP
- Утечка памяти и информации — уязвимости в управлении памятью, раскрывающие чувствительные данные
38,5% сайтов под угрозой — статистика W3Techs
Данные W3Techs на 8 июля 2026 года показывают следующее распределение версий PHP среди всех сайтов, использующих этот язык:
- PHP 8.x — 61,5% (поддерживается: 8.3 — active, 8.4 — active, 8.2 — security only до конца 2026)
- PHP 7.x — 30,2% (полностью неподдерживается с ноября 2022)
- PHP 5.x — 8,2% (полностью неподдерживается с января 2019)
- PHP 4.x — 0,1% (архаика, остановлена в 2008 году)
Если перевести это в абсолютные цифры: из ~30 миллионов сайтов на PHP (оценка по данным BuiltWith и Netcraft), около 11,5 миллионов работают на полностью неподдерживаемых версиях. Это сравнимо с населением Греции — целая страна сайтов без защитных патчей.
Особенно тревожна ситуация с PHP 5.x. 8,2% — это ~2,5 миллиона сайтов, которые работают на версии языка, чья поддержка прекращена 7 лет назад. Многие из этих сайтов — старые проекты на WordPress, которые владельцы давно забросили, но они продолжают висеть в интернете, часто с доступом к базе данных.
Реальные уязвимости в старых версиях PHP
Чтобы не быть голословными, приведём конкретные CVE, которые затрагивают неподдерживаемые версии PHP и напрямую влияют на WordPress-сайты.
Критические уязвимости (CVSS 9.0+)
- CVE-2024-1874 — уязвимость в функции proc_open() в PHP 7.x. Позволяет злоумышленнику выполнить произвольные команды на сервере через специально сформированный HTTP-запрос. WordPress-сайты с плагинами, использующими exec() или shell_exec(), подвержены максимальному риску.
- CVE-2025-0411 — heap-based buffer overflow в обработчике multipart/form-data в PHP 5.6 и 7.0-7.4. Позволяет удалённо выполнить код через загрузку файла на сервер — то есть через стандартную форму загрузки медиафайлов в WordPress.
- CVE-2024-8929 — уязвимость в функции mbstring.func_overload в PHP 5.6, позволяющая переполнение буфера с выполнением кода.
Уязвимости средней степени (CVSS 4.0-8.9)
- CVE-2024-2756 — уязвимость DoS в обработчике HTTP-запросов PHP 7.4. Один запрос с особым Content-Type «ложит» сервер.
- CVE-2024-1129 — уязвимость в обработке сессий PHP в версиях 7.x, позволяющая подменить сессию администратора WordPress.
- CVE-2025-0238 — XSS-уязвимость через фильтрацию заголовков в PHP 7.4, которая позволяет внедрить вредоносный скрипт на сайт.
Какие атаки угрожают WordPress на старом PHP
Злоумышленники не сидят сложа руки. Для WordPress-сайтов на старых версиях PHP существует несколько типовых сценариев атак.
Автоматизированное сканирование
Специализированные сканеры (например, WPScan, Nuclei с шаблонами для устаревшего PHP) за секунды определяют версию PHP на сайте по HTTP-заголовку X-Powered-By или особенностям обработки скриптов. Как только версия определена, бот сверяет её с базой уязвимостей и запускает соответствующие эксплойты.
Атаки через уязвимые плагины
Даже если сам WordPress обновлён, старый PHP может некорректно обрабатывать данные от плагинов. Популярный сценарий: злоумышленник использует уязвимость в плагине (например, в Contact Form 7 или Elementor), но на современном PHP она бы не сработала из-за улучшенной обработки типов и экранирования в PHP 8.x. На PHP 7.x и 5.x та же атака проходит успешно.
Кража учётных данных и бэкдоры
После успешной атаки через RCE (remote code execution) злоумышленник получает полный контроль над сервером. Типовые действия: кража базы данных WordPress со всеми паролями пользователей, установка веб-шелла (бэкдора), добавление скрытых администраторов, рассылка спама с compromised-сайта, майнинг криптовалюты на сервере.
Как безопасно обновить PHP на WordPress-сайте
Обновление PHP — процесс менее страшный, чем его малюют. Большинство сайтов на современном хостинге (Timeweb, Beget, Reg.ru, FirstVDS) позволяют сменить версию PHP в панели управления за 5 минут. Но есть нюансы.
Подготовка: чек-лист перед обновлением
- Сделайте полный бэкап — файлы сайта + база данных. Используйте UpdraftPlus или штатные средства хостинга.
- Проверьте совместимость плагинов — запустите бесплатный плагин PHP Compatibility Checker. Он просканирует все установленные плагины и тему на совместимость с целевой версией PHP.
- Создайте стейджинг-копию — если хостинг позволяет, разверните копию сайта в тестовой среде.
- Проверьте код кастомной темы — если тема писалась вручную, ищите устаревшие функции: mysql_*(), each(), create_function(), ereg() — все они удалены в PHP 8.x.
Пошаговый план обновления
- Шаг 1: Зайдите в панель управления хостингом (cPanel, ISPmanager, Hestia или собственная панель хостера). Найдите раздел «Версия PHP» — обычно в секции «Настройки ПО» или «PHP Selector».
- Шаг 2: Не переключайте сразу на PHP 8.3 с PHP 7.4 без промежуточного шага. Сначала попробуйте PHP 8.0 или 8.1 — они сохраняют больше обратной совместимости с устаревшим кодом.
- Шаг 3: После смены версии проверьте сайт: открываются ли все страницы, работают ли формы, отправляется ли почта, загружаются ли изображения в медиабиблиотеку.
- Шаг 4: Проверьте ошибки — включите WP_DEBUG в wp-config.php:
define('WP_DEBUG', true);. Исправьте все фатальные ошибки и warning'и. - Шаг 5: Через 24-48 часов после обновления переведите сайт на максимально возможную версию PHP (сейчас это PHP 8.4) — повторите проверку.
Что делать, если сайт сломался после обновления
- Белый экран (WSOD) — включите WP_DEBUG, найдите ошибку в логах. Чаще всего проблема в несовместимом плагине — временно деактивируйте все плагины через FTP (переименуйте папку /wp-content/plugins/) и активируйте по одному.
- Ошибка 500 — проверьте .htaccess, возможно, в нём директивы для старой версии PHP. Если PHP работает как CGI, может требоваться переключение между mod_php, php-fpm или FastCGI.
- Не загружаются медиафайлы — обновите WordPress до последней версии. Начиная с WP 5.6 добавлена полная поддержка PHP 8.x, но старые версии WordPress несовместимы.
Методы защиты и практические рекомендации
Обновление PHP — разовая мера. Но безопасность сайта требует постоянного внимания. Вот комплекс рекомендаций для владельцев WordPress-сайтов:
Базовый уровень защиты
- Всегда используйте поддерживаемую версию PHP — на июль 2026 это PHP 8.3 или 8.4. PHP 8.2 ещё получает патчи безопасности до конца 2026 года — это запасной вариант.
- Автоматизируйте обновления WordPress — включите автообновления ядра, плагинов и тем через wp-config.php:
define('WP_AUTO_UPDATE_CORE', true);. - Регулярно проверяйте версию PHP — используйте phpinfo() (скрытую страницу) или информационные виджеты в админке хостинга.
- Установите WAF (Web Application Firewall) — Cloudflare WAF, Sucuri или Wordfence. Современные WAF блокируют атаки на уязвимости PHP на уровне сети, даже если обновление PHP невозможно.
Продвинутый уровень защиты
- Мониторинг безопасности — подключите WPScan CLI для еженедельного сканирования уязвимостей. Используйте SIEM-системы (например, Wazuh) для централизованного сбора логов.
- Изоляция окружения — используйте контейнеризацию (Docker) или виртуализацию на уровне ОС, чтобы компрометация одного сайта не затронула соседние проекты на сервере.
- Регулярный пентест — проводите тестирование на проникновение хотя бы раз в год. Специалисты найдут не только проблемы с PHP, но и другие уязвимости.
- План обновления PHP на уровне хостинга — если вы хостите несколько сайтов, составьте график обновления PHP для каждого проекта. Старые сайты, которые невозможно обновить, изолируйте в отдельной среде.
Вывод
Устаревший PHP — это не «где-то там технический долг». Это прямая дыра в безопасности вашего сайта. 38,5% PHP-сайтов до сих пор не обновлены — и хакеры активно этим пользуются. Сотни тысяч WordPress-сайтов взламываются ежегодно именно через уязвимости в неподдерживаемых версиях PHP.
Хорошая новость: обновление PHP — одна из самых простых и эффективных мер, которые вы можете предпринять. Это не требует денег (у современных хостингов есть PHP 8.x в базовых тарифах), занимает 15-30 минут и даёт немедленный эффект: закрывает десятки уязвимостей, ускоряет сайт на 30% и повышает совместимость с современными плагинами.
Проверьте версию PHP на вашем сайте прямо сейчас. Если она ниже 8.2 — действуйте по нашему чек-листу.
📚 Читайте также
- Безопасность MCP-протокола для AI-агентов: новые угрозы 2026 года
- Защита CI/CD пайплайнов: как предотвратить компрометацию поставки кода
- Почему уязвимости ИИ-приложений так часто критичны: анализ и практика защиты
- Безопасность кода, написанного ИИ: риски и практики защиты приложений
- Уязвимости в ИИ-приложениях: каждая третья угроза оказалась критической
📖 Термины
OWASP · SIEM · SQL-инъекция · WAF · Пентест