Утечка ссылки сброса пароля в TranslatePress позволяет захватить учётную запись администратора

WordPress

В плагине TranslatePress для WordPress обнаружена уязвимость, которая даёт неавторизованному злоумышленнику возможность получить ссылку сброса пароля администратора, сменить пароль и войти в учётную запись. Плагин для создания многоязычных сайтов установлен более чем на 400 000 сайтов, поэтому масштаб потенциальных атак значительный. Проблема заключается в раскрытии чувствительной информации через публичную функцию плагина, работающую в асинхронном режиме.

Уязвимость CVE-2026-19632

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

Первая особенность связана с тем, что TranslatePress перехватывает исходящие письма WordPress и переводит их. Это касается в том числе писем со сбросом пароля. Когда администратор сайта, у которого в профиле выбран опубликованный вторичный язык, запрашивает сброс пароля, письмо проходит через механизм перевода. Если включена автоматическое сохранение строк, что установлено по умолчанию, полное содержимое письма, включая ссылку сброса с открытым ключом и параметрами входа, сохраняется в таблице словаря для вторичного языка.

Вторая особенность - наличие публичной асинхронной функции, которая возвращает содержимое этих словарей. Злоумышленник может отправить запрос с указанием идентификаторов строк и получить соответствующие записи из словаря. Таким образом, перечисляя идентификаторы, он может найти сохранённую ссылку сброса пароля и извлечь её в открытом виде.

Для атаки злоумышленнику достаточно знать имя пользователя или адрес электронной почты администратора. Сначала он инициирует процедуру сброса пароля от имени администратора. Затем через публичную функцию получает из словаря ссылку сброса, содержащую ключ. Используя этот ключ, он устанавливает новый пароль для учётной записи администратора и входит на сайт. Это приводит к полному захвату контроля над сайтом, поскольку администратор может создавать новые учётные записи, устанавливать вредоносные плагины и темы с бэкдорами, изменять содержимое и похищать данные.

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

Уязвимость получила идентификатор CVE-2026-19632 и оценку CVSS 9.8 - максимальный уровень критичности. Исследователь, обнаруживший проблему, сообщил о ней в программу Bug Bounty компании Wordfence, которая занимается защитой сайтов на WordPress. Автор отчёта получил вознаграждение в размере 975 долларов. Информация об использовании уязвимости в реальных атаках на момент публикации не приводится, однако высокий балл CVSS и простота эксплуатации делают её привлекательной для злоумышленников.

Разработчик плагина, компания Cozmoslabs, получил уведомление об уязвимости 12 августа и уже на следующий день выпустил исправленную версию 3.3.2. Патч закрывает проблему во всех версиях до 3.3.1 включительно. Пользователям настоятельно рекомендуется обновить плагин до актуальной версии, поскольку это самый надёжный способ защититься от атак.

История с TranslatePress дополнительно подчёркивает значение двухфакторной аутентификации для административных учётных записей. Даже если злоумышленник сможет сменить пароль, при включённой двухфакторной аутентификации он не сможет войти без дополнительного кода подтверждения, например одноразового пароля из приложения-аутентификатора. Wordfence предлагает встроенную поддержку двухфакторной аутентификации даже в бесплатной версии.

Более современной альтернативой паролям считаются passkeys - беспарольные учётные данные на основе стандартов FIDO2. Они привязаны к устройству пользователя и могут использовать биометрию или PIN-код. Поскольку passkeys не передаются по сети и не могут быть сброшены, уязвимости, нацеленные на процедуру сброса пароля, теряют смысл. Wordfence также поддерживает passkeys, начиная с версии 9.0.

Примечательно, что проблема возникла из-за перевода электронных писем и хранения их содержимого в базе данных. Это типичный пример того, как безобидная на первый взгляд функция может создать серьёзную брешь в безопасности при определённых настройках. Владельцам WordPress-сайтов стоит проверить, какие языки выбраны для администраторов и включено ли автоматическое сохранение строк в TranslatePress. Даже после обновления полезно пересмотреть конфигурацию плагина и дополнительно защитить учётные записи администратора с помощью двухфакторной аутентификации или passkeys.

Команда Cozmoslabs отреагировала оперативно, выпустив патч в течение суток после получения отчёта. Тем не менее, из-за широкой распространённости плагина пользователям следует проявить бдительность и установить обновление как можно скорее, не дожидаясь появления публичных эксплойтов.

Ссылки

Комментарии: 0