wp2shell в дикой природе: цепочку RCE для WordPress нашёл ИИ за 25 долларов, эксплойты уже в ходу

История с wp2shell — критической доавторизационной RCE в ядре WordPress — получила продолжение, и оно тревожное. Под угрозой около 500 миллионов сайтов, эксплойты уже гуляют по сети, а саму уязвимость нашёл не человек, а ИИ-модель — примерно за 25 долларов.

Две CVE и как они связаны

  • CVE-2026-63030 (рассинхронизация batch-API), CVSS 7.5, CWE-436. Batch-эндпоинт /wp-json/batch/v1 проверяет и выполняет запросы в разных циклах, а из-за неверной логики continue индексы массивов расходятся. В итоге параметры запроса N исполняются обработчиком запроса N+1, минуя санитизацию. Баг живёт в коде с WordPress 5.6 (2020 год).
  • CVE-2026-60137 (SQL-инъекция), CVSS 9.1, CWE-89. Параметр author__not_in в WP_Query обычно чистит значения через absint(), но если передать его скалярной строкой, а не массивом, санитизация пропускается и значения попадают прямо в SQL. Сам по себе этот путь недостижим — его открывает как раз рассинхронизация batch-API.

Уязвимые и исправленные версии

До 6.8.0 — безопасно. Ветки 6.8.0–6.8.5 подвержены только SQL-инъекции. А вот 6.9.0–6.9.4, 7.0.0–7.0.1 и 7.1 beta уязвимы для всей цепочки до RCE. Патчи вышли 17 июля 2026 года: WordPress 6.8.6, 6.9.5, 7.0.2 и 7.1 Beta 2.

Уязвимость нашёл ИИ

Самое примечательное — метод обнаружения. Исследователь Адам Кьюс из команды Assetnote (Searchlight Cyber) нашёл дыру с помощью модели GPT-5.6 Sol Ultra от OpenAI. Модель шесть часов параллельно анализировала код, не заглядывая в changelog и историю git, вышла на доавторизационную SQL-инъекцию с первых принципов, а примерно за 10 часов раскрутила её до полной RCE. Затраты на вычисления — около 25 долларов в пересчёте с месячной подписки. Для контекста: за цепочки такой сложности брокеры эксплойтов исторически платили до 500 тысяч долларов.

Как из SELECT-инъекции получают полный захват

ИИ выстроил многоступенчатую эскалацию: отравление кеша постов в памяти через UNION-инъекцию, злоупотребление кешем oembed (WordPress не проверяет существование поста), эксплуатация того, что кешированные в памяти значения приоритетнее базы, угон customize_changeset с подделкой user_id = 1 для временных прав администратора, гаджет на детекторе циклов родительских постов и, наконец, повтор хука parse_request уже с правами админа для создания постоянной учётной записи администратора. Дальше — загрузка вредоносного ZIP-плагина и полное выполнение кода на сервере.

Эксплуатация уже идёт

В течение суток после патча на GitHub появились публичные PoC, причём ещё до этого полную цепочку независимо воспроизвели две команды — Calif и Hacktron. Реальные атаки подтверждают несколько вендоров: watchTowr (Бенджамин Харрис — «первые признаки эксплуатации в дикой природе»), Hexastrike (Морис Филенбак — «несколько подтверждённых и подозрительных инцидентов»). Cloudflare раскатала защиту WAF на все тарифы, включая бесплатный. Одни эксплойты вытаскивают хеши паролей администратора через SQLi и брутфорсят их офлайн, другие бьют всю доавторизационную цепочку RCE без всякого подбора.

Что делать

Обновиться до 7.0.2, 6.9.5 или 6.8.6 в зависимости от ветки. Убедиться, что принудительное автообновление реально применилось (отключённые автообновления и кастомные развёртывания могут его блокировать). Проверить сайт бесплатным сканером wp2shell[.]com. Временно, до апдейта: закрыть /wp-json/batch/v1 и ?rest_route=/batch/v1 на уровне WAF или веб-сервера, поставить плагин, отсекающий анонимные batch-запросы через хук rest_pre_dispatch, и просмотреть логи на предмет подозрительных запросов, новых админов, незнакомых плагинов и изменений в таблицах wp_posts и wp_options. Надёжное решение одно — обновление ядра.