В WordPress 7.1.2 устранена критическая уязвимость RCE; злоумышленники начали попытки эксплуатации спустя всего несколько часов после выхода релиза

Вышла версия WordPress 7.1.2, содержащая исправление критической уязвимости в ядре, которая позволяла неавторизованным злоумышленникам удаленно выполнять код на некоторых сайтах. По данным компании Patchstack, попытки эксплуатации этой уязвимости начались менее чем через пять часов после выхода обновления.

Работу над этим релизом, предназначенным исключительно для устранения проблем безопасности, возглавил Джон Блэкборн — представитель команды безопасности WordPress (WordPress Security Team), деятельность которой спонсируется компанией Human Made; он же и анонсировал выход обновления на сайте WordPress.org. В официальном бюллетене безопасности уязвимости присвоен рейтинг 9,2 (критический уровень) по шкале CVSS 4.0, а исправление было перенесено (бэкпортировано) во все версии, начиная с WordPress 4.7.

На сайтах с включенным механизмом автоматических фоновых обновлений уязвимость уже должна быть устранена; владельцам остальных ресурсов настоятельно рекомендуется установить обновление как можно скорее.

Уязвимость обнаружил инженер по информационной безопасности из Цюриха Роберт Рессл. Он сообщил о ней через программу WordPress на платформе HackerOne 20 июля — всего через два дня после экстренного выпуска версии WordPress 7.0.2, в которой была устранена уязвимость pre-auth RCE (удаленное выполнение кода).

В записи блога, опубликованной одновременно с выходом исправления, Рессл отметил, что изначально его отчету была присвоена иная категория, прежде чем его признали обоснованным, а о готовящемся исправлении он узнал 15 сентября. Этот двухмесячный период ожидания совпал с резким ростом числа отчетов, поступающих команде безопасности через HackerOne, — значительная их часть генерировалась с помощью ИИ.

Согласно бюллетеню безопасности, уязвимость связана с механизмом выбора файла шаблона (template file) при отображении страницы в WordPress. Анонимный посетитель может обмануть этот процесс и заставить систему загрузить PHP-файл, находящийся за пределами папок активной темы. В своем анализе специалисты Patchstack отметили, что в других частях того же кода WordPress уже предусмотрена проверка для предотвращения подобных манипуляций с путями, однако она не применялась к значению, получаемому из запроса посетителя.

В бюллетене указаны два условия, при которых этот баг может привести к выполнению произвольного кода (RCE): во-первых, активная тема должна содержать папку верхнего уровня с названием, начинающимся на `page-` (в качестве примеров приводятся стандартные темы Twenty Twelve и Twenty Fourteen, а также темы Neve, Hestia и Sydney); во-вторых, на сервере должен присутствовать PHP-файл, выполнение которого принесет пользу злоумышленнику.

Согласно опубликованному предупреждению, самый известный сценарий, позволяющий перейти от включения файла к выполнению произвольного кода, задействует файл из состава PEAR — устаревшего менеджера пакетов PHP; этот файл становится опасным при включенной настройке register_argc_argv. Уязвимости подвержены как официальный образ PHP в Docker, так и стандартные конфигурации cPanel, использующие версии PHP ниже 8.5. Рессл отметил, что не подсчитывал, какое количество действующих сайтов соответствует обоим этим условиям.

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

Исправление не только добавляет недостающую проверку, но и вводит более общее правило: любой файл шаблона, загружаемый WordPress, должен располагаться внутри соответствующей папки с темами. По мнению специалистов Patchstack, этот дополнительный шаг свидетельствует о том, что команда безопасности рассматривает проблему разрешения путей к шаблонам как «целый класс уязвимостей, а не как отдельный баг».

В своей публикации руководитель отдела исследований безопасности Patchstack Дэйв Йонг сообщил, что первые попытки сканирования были зафиксированы в логах компании во вторник в 17:44 UTC. По его словам, использованные вредоносные пейлоады точно соответствовали кодировке, исправленной в патче; это указывает на то, что их создатели опирались на опубликованный diff (разницу в коде), а не самостоятельно обнаружили уязвимость.

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

«Тот шаг, который действительно имеет значение — применение этого же механизма к файлу вроде pearcmd.php на хосте с включенной настройкой register_argc_argv, — в наших данных пока не зафиксирован, — отметил Йонг. — Мы ожидаем, что это произойдет после получения результатов сканирования; именно на выбор целей и стоит обращать внимание».

Релиз WordPress 7.1.2 состоялся менее чем через неделю после выхода версии 7.1.1, содержавшей 11 исправлений безопасности. Этот выпуск также прервал сложившуюся тенденцию: начиная с июля, в каждом релизе, устраняющем уязвимости ядра, упоминался вклад ИИ-компаний или использование ИИ для обнаружения проблем (это касалось версий 7.0.2, 7.0.4 и 7.1.1). Однако ни в анонсе версии 7.1.2, ни в бюллетене безопасности подобная информация не приводится.

Дмитрий/ автор статьи
CCO, Senior SEM/PPC Specialist, WordPress-энтузиаст, переводчик с английского и немецкого. Серый кардинал русскоязычного WP-комьюнити.
Блог про WordPress
Добавить комментарий

Получать новые комментарии по электронной почте.