{"id":"CVE-2026-95809","kind":"vulnerability","aliases":["CVE-2026-95809"],"related":[],"title":"Opti-Behavior WordPress plugin: unauthenticated stored XSS via country_name parameter","description":"The Opti-Behavior – Self-Hosted Heatmaps, Session Recordings, Funnels, A/B Testing & Smart Insights plugin for WordPress is vulnerable to Stored DOM-Based Cross-Site Scripting via 'country_name' Location Parameter in all versions up to, and including, 1.9.2.1 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. The heatmap recording endpoint accepts unauthenticated requests protected only by a nonce that any visitor can freely obtain via the public opti_behavior_refresh_nonces AJAX action, removing any practical barrier to injecting the malicious payload.","summary":"The Opti-Behavior WordPress plugin up to and including 1.9.2.1 fails to sanitize the country_name location parameter sent to its heatmap recording endpoint. An unauthenticated attacker can store a script that runs in the browser of anyone who loads the injected page.","severity":"high","cvss":7.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["analytics","package","wordpress","wordpress-plugin"],"not_affected_if":["plugin-not-installed","plugin-version-above-1.9.2.1"],"how_to_check":"- Check whether the Opti-Behavior plugin is installed and its version in the WordPress admin under Plugins, or with `wp plugin get opti-behavior --field=version` (plugin slug assumed; unknown if different)\n- Look for the heatmap recording endpoint and the `opti_behavior_refresh_nonces` AJAX action in the plugin files","fix":"- Update the Opti-Behavior plugin to a version later than `1.9.2.1`; the fixed version number is unknown from the sources\n- If no fixed version is available, deactivate and remove the plugin\n- Review stored content on affected pages for injected script tags","status":"open","published_at":"2026-10-16T06:17:13+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","triaged_at":"2026-10-25T03:29:45+00:00","updated_at":"2026-10-25T03:29:45+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:29:45Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Opti-Behavior plugin to a version later than `1.9.2.1`; the fixed version number is unknown from the sources\n- If no fixed version is available, deactivate and remove the plugin\n- Review stored content on affected pages for injected script tags","reach":"internet","title":"Opti-Behavior WordPress plugin: unauthenticated stored XSS via country_name parameter","impact":"medium","summary":"The Opti-Behavior WordPress plugin up to and including 1.9.2.1 fails to sanitize the country_name location parameter sent to its heatmap recording endpoint. An unauthenticated attacker can store a script that runs in the browser of anyone who loads the injected page.","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugin","analytics"],"confidence":0.7,"needs_auth":"no","worst_case":"Attacker script runs in visitors' browsers on injected pages","analyst_note":"Confirm the first patched version and plugin slug from the NVD entry or the Wordfence/plugin changelog.","how_to_check":"- Check whether the Opti-Behavior plugin is installed and its version in the WordPress admin under Plugins, or with `wp plugin get opti-behavior --field=version` (plugin slug assumed; unknown if different)\n- Look for the heatmap recording endpoint and the `opti_behavior_refresh_nonces` AJAX action in the plugin files","needs_analyst":true,"not_affected_if":["plugin-not-installed","plugin-version-above-1.9.2.1"],"who_is_affected":"Sites running the Opti-Behavior WordPress plugin at version 1.9.2.1 or earlier are exposed, because the recording endpoint accepts requests from any visitor who can fetch a nonce. Sites that do not have the plugin installed are not affected. The sources do not say whether non-default settings change exposure.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000696,"input_tokens":3496,"output_tokens":693,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-95809':15A,18A '1.9.2.1':35B,110C 'a/b':80C 'accept':147C 'access':139C 'action':169C 'ajax':168C 'analyt':19B 'anyon':63B 'arbitrari':128C 'attack':52B,125C 'barrier':173C 'base':93C 'behavior':3A,28B,72C,165C 'browser':61B 'countri':10A,40B,99C 'cross':95C 'cross-sit':94C 'cve':13A,16A 'dom':92C 'dom-bas':91C 'due':111C 'endpoint':49B,146C 'escap':118C 'execut':135C 'fail':36B 'freeli':159C 'funnel':79C 'heatmap':47B,76C,144C 'host':75C 'includ':34B,109C 'inject':67B,127C,141C,175C 'input':114C 'insight':83C 'insuffici':113C 'load':65B 'locat':42B,101C 'make':120C 'malici':177C 'name':11A,41B,100C 'nonc':154C,167C 'obtain':160C 'opti':2A,27B,71C,164C 'opti-behavior':1A,26B,70C 'output':117C 'packag':20B 'page':68B,132C,142C 'paramet':12A,43B,102C 'payload':178C 'plugin':5A,24B,30B,84C 'possibl':122C 'practic':172C 'protect':150C 'public':163C 'record':48B,78C,145C 'refresh':166C 'remov':170C 'request':149C 'run':58B 'sanit':38B,115C 'script':56B,97C,130C 'self':74C 'self-host':73C 'sent':44B 'session':77C 'site':96C 'smart':82C 'store':7A,54B,90C 'test':81C 'unauthent':6A,51B,124C,148C 'user':138C 'version':105C 'via':9A,98C,161C 'visitor':157C 'vulner':88C 'web':129C 'whenev':136C 'wordpress':4A,21B,23B,29B,86C 'wordpress-plugin':22B 'xss':8A","nicknames":[],"mitigations":[],"who_affected":"Sites running the Opti-Behavior WordPress plugin at version 1.9.2.1 or earlier are exposed, because the recording endpoint accepts requests from any visitor who can fetch a nonce. Sites that do not have the plugin installed are not affected. The sources do not say whether non-default settings change exposure.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T06:17:13+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-95809","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-95809","severity":null,"published_at":"2026-10-16T06:17:13+00:00","modified_at":"2026-10-16T15:17:37+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","fetched_at":"2026-10-23T22:28:55+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"}