CVE-2026-75981: TranslatePress – Translate Multilingual sites with AI Translation <= 3.2.5 - Unauthenticated Stored Cross-Site Scripting
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 translatepage() 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 wpkses, and when the post is viewed in a secondary language the substitution turns the attacker's '#!trpst#img ... #!trpen#' into a real <img> tag. removetagsfromoutput() only strips <script>/<style>, so an <img onerror=...> executes in the visitor's browser.
Affected Software
Event History
Frequently Asked Questions
What conditions must be present for exploitation?
An unauthenticated attacker needs a way to submit content that is retained, such as a comment containing the #!trpst# and #!trpen# markers. The malicious content executes when a visitor views the affected post in a secondary language, where TranslatePress converts those markers into HTML angle brackets.
Are visitors to the primary-language version affected?
The described execution path requires the post to be viewed in a secondary language. The marker replacement occurs during page translation rendering.
What payload types are known to bypass the output filtering?
The described filtering removes script and style tags, but does not prevent an image element with an event handler. A marker-wrapped img tag with an onerror handler can therefore execute in the visitor's browser.
How can I check for prior exploitation?
Review retained comments and other user-submitted content for the literal strings #!trpst# and #!trpen#, especially where they surround HTML-like payloads. Such markers can be transformed into active HTML when the content is rendered in a secondary language.