но как конкретно они могут плучить доступ к моему сайту на WordPress?
Чтобы понять, как именно злоумышленник получает доступ, важно осознать одну ключевую вещь: **они не взламывают WordPress. Они взламывают сам PHP-интерпретатор до того, как WordPress вообще "проснется" и начнет выполнять свой код.**
Это как если бы вор не подбирал замок к двери вашей квартиры (защита плагинов WordPress), а просто сломал входную дверь всего подъезда (уязвимость в ядре PHP).
Вот пошаговый технический сценарий того, как происходит атака на ваш сайт (на основе анализа уязвимостей CVE-2026-109618 и CVE-2026-109619, известных как PHP2Shell):
### Шаг 1: Выбор цели и отправка триггера (без пароля)
Злоумышленнику не нужен логин или пароль администратора. Он отправляет на ваш сайт специально сформированный HTTP POST-запрос с заголовком `Content-Type: multipart/form-data` (этот формат используется браузерами для загрузки файлов).
Запрос может быть отправлен на **любой** PHP-файл WordPress, который доступен публично: `index.php`, `wp-admin/admin-ajax.php` или `xmlrpc.php`.
### Шаг 2: Искусственное переполнение памяти (OOM Corruption)
Внутри этого запроса содержатся сотни тысяч специально упакованных полей или гигантские заголовки. PHP начинает парсить этот запрос, быстро исчерпывает лимит памяти (`memory_limit`) и пытается аварийно завершить обработку (вызывает функцию `zend_bailout`).
Из-за первой дыры (CVE-2026-109618) при этом аварийном выходе память очищается некорректно. Возникает классическая уязвимость типа **Use-After-Free (UAF)**: PHP "забывает" освободить определенные структуры данных, и в памяти остаются "висячие" указатели (dangling pointers).
### Шаг 3: Отравление состояния воркера (State Pollution)
Веб-серверы обычно используют PHP-FPM, где один и тот же "воркер" (процесс PHP) обслуживает множество запросов подряд, чтобы не тратить ресурсы на постоянный перезапуск.
Из-за второй дыры (CVE-2026-109619) после аварийного завершения первого запроса глобальное состояние этого воркера (включая механизмы отслеживания загрузки файлов `session.upload_progress`) остается "подвешенным" и поврежденным. Воркер не умирает, он ждет следующий запрос.
### Шаг 4: Удаленное выполнение кода (RCE)
Злоумышленник немедленно отправляет **второй**, короткий и тщательно рассчитанный запрос тому же самому воркеру PHP-FPM.
Поскольку память повреждена, PHP думает, что выполняет легитимную внутреннюю функцию обработки сессии, но на самом деле он переходит по адресу, который контролирует атакующий. Это позволяет выполнить произвольный системный код (Shellcode) с правами пользователя, от которого запущен веб-сервер (обычно `www-data`).
---
### Что происходит после получения доступа (RCE)?
Как только злоумышленник получил возможность выполнять код на уровне сервера, WordPress для него становится просто набором текстовых файлов. За считанные секунды автоматизированный скрипт может:
1. **Создать скрытого администратора**: Дописать новую запись напрямую в базу данных MySQL или добавить код в `wp-config.php`, который создает пользователя с правами Administrator при каждом посещении сайта.
2. **Загрузить веб-шелл**: Создать файл (например, `wp-content/uploads/shell.php`), через который можно управлять сервером через браузер.
3. **Украсть данные**: Скачать дамп базы данных со всеми контактами клиентов, заказами и хэшами паролей.
4. **Превратить сервер в ботнет**: Использовать ресурсы вашего хостинга для DDoS-атак, рассылки спама или майнинга криптовалюты.
---
### Почему ваши текущие средства защиты бессильны?
* **Плагины безопасности (Wordfence, iThemes Security и др.)**: Они загружаются *после* того, как PHP уже обработал запрос. К моменту их запуска уязвимость уже сработала, и код злоумышленника уже выполняется.
* **Обычные WAF (межсетевые экраны)**: Многие из них не могут глубоко инспектировать содержимое `multipart/form-data` из-за риска ложных срабатываний и нагрузки, поэтому пропускают вредоносную нагрузку.
### Что вам нужно сделать прямо сейчас?
Поскольку атака не требует авторизации и нацелена на механизм загрузки, у вас есть два реальных пути защиты:
1. **Идеальный**: Обновить PHP на сервере до патченной версии (8.2.35, 8.3.36, 8.4.27 или 8.5.12) через панель управления хостингом (например, ISPmanager).
2. **Экстренный (если обновление невозможно)**: Зайти в настройки PHP и отключить `session.upload_progress.enabled = Off`. Это лишает эксплойт его основного "моста" для перехода от повреждения памяти к выполнению кода, ломая цепочку атаки [[53]].
Если вы используете общий (виртуальный) хостинг и у вас нет доступа к настройкам PHP, **немедленно напишите в техподдержку вашего хостинг-провайдера** с требованием применить эту меру или обновить PHP, так как промедление измеряется часами.
Comments
Post a Comment