TranslatePress — плагин перевода многоязычных сайтов с помощью AI Translation для WordPress уязвим к неаутентифицированным хранимым межсайтовым сценариям в версиях до 3.2.5 включительно. Специальные маркеры gettext «#!trpst#» и «#!trpen#» безоговорочно перезаписываются на «<» и «>» с помощью функции перевода_страницы() в файле include/class-translation-render.php (строки 538-539). Поскольку эти маркеры представляют собой обычный текст без специальных символов HTML, злоумышленник, не прошедший проверку подлинности, может встроить их в комментарий; маркеры сохраняются в wp_kses, и когда сообщение просматривается на дополнительном языке, подмена превращает атакующего «#!trpst#img ... #!trpen#» в настоящий тег <img>. Remove_tags_from_output() удаляет только <script>/<style>, поэтому в браузере посетителя выполняется <img onerror=...>.
Показать оригинальное описание (EN)
The TranslatePress – Translate Multilingual sites with AI Translation plugin for WordPress is vulnerable to unauthenticated Stored Cross-Site Scripting in versions up to and including 3.2.5. The special gettext markers '#!trpst#' and '#!trpen#' are unconditionally rewritten to '<' and '>' by translate_page() in includes/class-translation-render.php (lines 538-539). Because those markers are plain text with no HTML-special characters, an unauthenticated attacker can embed them in a comment; the markers survive wp_kses, and when the post is viewed in a secondary language the substitution turns the attacker's '#!trpst#img ... #!trpen#' into a real <img> tag. remove_tags_from_output() only strips <script>/<style>, so an <img onerror=...> executes in the visitor's browser.
Характеристики атаки
Последствия
Строка CVSS v3.1