Проект WordPress выпустил экстренное обновление безопасности, исправляющее критическую уязвимость удаленного выполнения кода до аутентификации (Pre-Auth RCE), затрагивающую ядро и позволяющую анонимному злоумышленнику запускать код в ванильной установке без плагинов.
В релизе WordPress 7.0.2, выпущенном в пятницу, устранены две взаимосвязанные уязвимости: SQL-инъекция в WP_Query, затрагивающая WordPress 6.8 и выше, и баг с пакетной маршрутизацией REST API, затрагивающий версии 6.9 и выше, которые открывают неаутентифицированным злоумышленникам путь к удаленному выполнению кода.
WordPress.org включил принудительное автоматическое обновление для затронутых сайтов.
В разработке обновления принимали участие представитель WordPress Security Team Джон Блэкборн и главный системный менеджер Automattic Барри Абрахамсон.
Уязвимости
Критическая уязвимость под названием wp2shell была обнаружена Адамом Куэсом из Assetnote, который сообщил о ней через программу HackerOne для WordPress.
Технический анализ, опубликованный исследователем безопасности Patchstack Чаззом Уолкоттом, показывает, как эксплуатируются эти два бага. SQL-инъекция в параметре author__not_in функции WP_Query обычно недоступна для анонимных пользователей, поскольку REST API проверяет входные данные как массив целых чисел. Но ошибка в эндпоинте batch (/wp-json/batch/v1) REST API приводит к несовпадению индексов между его внутренними массивами, поэтому проверка выполняется с использованием неправильного обработчика. Вредоносная часть полностью обходит проверку целых чисел и попадает в БД в виде необработанного SQL-запроса.
Эндпоинт /wp-json/batch/v1 существует в WordPress с версии 5.6, выпущенной в ноябре 2020 года. Баг маршрутизации, сделавший путь уязвимым, появился только в версии 6.9.
Уолкотт заявил, что Patchstack уже зафиксировал попытки эксплуатации в своих логах.
О высокоуровневой SQL-инъекции сообщили независимо исследователи TF1T, dtro и haongo.
Фактор объектного кэширования
Одна из деталей, не упомянутых в первоначальных публичных сообщениях, заключается в том, что уязвимость RCE, по-видимому, затрагивает только сайты, которые не используют постоянный объектный кэш. Сайты, работающие на Redis или Memcached, могут не быть уязвимы для всей цепочки RCE.
Компания Блэкборна подтвердила эту деталь изданию The Repository, заявив, что она была намеренно опущена в первоначальном анонсе, чтобы побудить всех владельцев сайтов обновиться независимо от обстоятельств.
Многие управляемые хостинги WordPress по умолчанию используют постоянный объектный кэш, что может означать, что значительная часть затронутой базы установок была защищена от атак еще до выпуска патча.
Что должны делать владельцы сайтов
Если на вашем сайте включены автоматические фоновые обновления, патч, возможно, уже был установлен. WordPress.org также включил принудительные автоматические обновления для затронутых сайтов.
Исправлены версии 7.0.2, 6.9.5 и 6.8.6. Также исправлена версия WordPress 7.1 Beta 2. Версии до 6.8 не затронуты.
Мулленвег назвал этот релиз напоминанием о том, что «безопасность станет важной темой в этом году, поскольку технологическая индустрия осваивает невероятный прогресс ИИ-моделей». «Сейчас самое время пересмотреть свои планы и процессы, уделить внимание деталям, инвестировать в обслуживание и обнять своего сисадмина», — добавил он.
Мулленвег сказал, что он сталкивался с подобной уязвимостью за 23-летнюю историю WordPress всего однажды, и это было в 2021 году, когда была исправлена инъекция объекта PHPMailer.
Источник: https://www.therepository.email
