{"id":"CVE-2026-88784","kind":"vulnerability","aliases":["CVE-2026-88784"],"related":[],"title":"WordPress Weglot plugin: unescaped URLs let visitors store browser-running payloads","description":"The Translate WordPress with Weglot 2.0  WordPress plugin before 6.4.3 does not escape the URLs it re-inserts into a page when rewriting links for a translated language, and reverses the encoding that was applied to them beforehand, allowing unauthenticated users to store a payload which executes in the browser of anyone viewing the page in a translated language.","summary":"The Translate WordPress with Weglot 2.0 plugin re-inserts URLs into translated pages without escaping them, and reverses earlier encoding on them. An unauthenticated attacker can store a script that runs in the browser of anyone who views the page in a translated language.","severity":"high","cvss":7.5,"epss":0.00216,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","php","weglot","wordpress"],"not_affected_if":["plugin-not-installed","plugin-version-6.4.3-or-later"],"how_to_check":"- Check the installed version of the Weglot plugin (Translate WordPress with Weglot 2.0) in the WordPress admin under Plugins, or with `wp plugin get weglot --field=version`\n- Look for translated language URLs on the site and test whether they reflect injected input","fix":"- Update the Weglot plugin to `6.4.3` or later\n- unknown whether a workaround exists before updating","status":"open","published_at":"2026-10-21T06:16:50+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","triaged_at":"2026-10-25T03:16:58+00:00","updated_at":"2026-10-25T03:16:58+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T03:16:58Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Weglot plugin to `6.4.3` or later\n- unknown whether a workaround exists before updating","reach":"internet","title":"WordPress Weglot plugin: unescaped URLs let visitors store browser-running payloads","impact":"medium","summary":"The Translate WordPress with Weglot 2.0 plugin re-inserts URLs into translated pages without escaping them, and reverses earlier encoding on them. An unauthenticated attacker can store a script that runs in the browser of anyone who views the page in a translated language.","category":"package","nicknames":[],"who_cares":["wordpress","weglot","php"],"confidence":0.6,"needs_auth":"no","worst_case":"Attacker script runs in visitors' browsers on translated pages","analyst_note":"Confirm which pages and inputs trigger the stored payload and whether the NVD entry lists affected version ranges beyond 'before 6.4.3'.","how_to_check":"- Check the installed version of the Weglot plugin (Translate WordPress with Weglot 2.0) in the WordPress admin under Plugins, or with `wp plugin get weglot --field=version`\n- Look for translated language URLs on the site and test whether they reflect injected input","needs_analyst":true,"not_affected_if":["plugin-version-6.4.3-or-later","plugin-not-installed"],"who_is_affected":"Sites running the Translate WordPress with Weglot 2.0 plugin before 6.4.3 that serve pages in a translated language. Sites without this plugin or on 6.4.3 or later are not exposed. The sources do not say whether non-translated pages are affected.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000638,"input_tokens":3387,"output_tokens":599,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-88784':15A,18A '2.0':28B,73C '6.4.3':77C 'allow':107C 'anyon':59B,120C 'appli':103C 'attack':48B 'beforehand':106C 'browser':10A,57B,118C 'browser-run':9A 'cve':13A,16A 'earlier':42B 'encod':43B,100C 'escap':38B,80C 'execut':115C 'insert':32B,86C 'languag':67B,96C,127C 'let':6A 'link':92C 'packag':19B 'page':36B,63B,89C,123C 'payload':12A,113C 'php':20B 'plugin':3A,29B,75C 're':31B,85C 're-insert':30B,84C 'revers':41B,98C 'rewrit':91C 'run':11A,54B 'script':52B 'store':8A,50B,111C 'translat':24B,35B,66B,69C,95C,126C 'unauthent':47B,108C 'unescap':4A 'url':5A,33B,82C 'user':109C 'view':61B,121C 'visitor':7A 'weglot':2A,21B,27B,72C 'without':37B 'wordpress':1A,22B,25B,70C,74C","nicknames":[],"mitigations":[],"who_affected":"Sites running the Translate WordPress with Weglot 2.0 plugin before 6.4.3 that serve pages in a translated language. Sites without this plugin or on 6.4.3 or later are not exposed. The sources do not say whether non-translated pages are affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T06:16:50+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H","cvss_by":"134c704f-9b21-4f2e-91b3-4a467353bcc0","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-88784","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-88784","severity":null,"published_at":"2026-10-21T06:16:50+00:00","modified_at":"2026-10-21T18:37:38+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","fetched_at":"2026-10-23T22:29:01+00:00","note":null},{"source":"epss","external_id":"CVE-2026-88784","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-88784","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T13:15:54+00:00","fetched_at":"2026-10-24T13:15:54+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}