{"id":"CVE-2026-120688","kind":"vulnerability","aliases":["CVE-2026-120688"],"related":[],"title":"WordPress EZ SQL Reports plugin: stored XSS via user-agent database column","description":"The EZ SQL Reports Shortcode Widget and DB Backup plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'HTTP_USER_AGENT (demonstrated); more generally, any attacker-controllable DB column the saved report selects' parameter in all versions up to, and including, 5.25.25 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. This requires an administrator to have saved a SQL report that selects an attacker-controllable database column, such as wp_comments.comment_agent, which WordPress stores verbatim from unauthenticated visitors even when comments are pending moderation.","summary":"The EZ SQL Reports Shortcode Widget and DB Backup plugin for WordPress stores attacker-controllable database values, such as the HTTP user agent in comments, and outputs them without escaping. An unauthenticated visitor can inject scripts that run in the browser of anyone who opens an affected page, including administrators.","severity":"high","cvss":7.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","php","self-hosted","wordpress"],"not_affected_if":["managed-hosting","no-saved-sql-reports","plugin-not-installed"],"how_to_check":"- Check whether the EZ SQL Reports plugin is installed and its version is `5.25.25` or lower in the WordPress plugins list\n- Review saved SQL reports for any that select columns such as `wp_comments.comment_agent` or other user-controlled data","fix":"- Upgrade the EZ SQL Reports plugin to a version newer than `5.25.25` (the fixed version is not stated in the sources)","status":"open","published_at":"2026-11-13T10:17:27+00:00","first_seen_at":"2026-11-13T10:47:11+00:00","triaged_at":"2026-11-13T10:52:48+00:00","updated_at":"2026-11-13T10:52:48+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-13T10:52:48Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade the EZ SQL Reports plugin to a version newer than `5.25.25` (the fixed version is not stated in the sources)","reach":"internet","title":"WordPress EZ SQL Reports plugin: stored XSS via user-agent database column","impact":"medium","summary":"The EZ SQL Reports Shortcode Widget and DB Backup plugin for WordPress stores attacker-controllable database values, such as the HTTP user agent in comments, and outputs them without escaping. An unauthenticated visitor can inject scripts that run in the browser of anyone who opens an affected page, including administrators.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","php","self-hosted"],"confidence":0.7,"fix_status":"unknown","needs_auth":"no","worst_case":"Injected scripts run in administrators' browsers, enabling account takeover","analyst_note":"Confirm the fixed plugin version from the WordPress.org plugin page or the NVD/Wordfence record for CVE-2026-120688.","how_to_check":"- Check whether the EZ SQL Reports plugin is installed and its version is `5.25.25` or lower in the WordPress plugins list\n- Review saved SQL reports for any that select columns such as `wp_comments.comment_agent` or other user-controlled data","plain_action":"","product_name":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","no-saved-sql-reports","managed-hosting"],"who_is_affected":"Sites running the EZ SQL Reports Shortcode Widget and DB Backup plugin version 5.25.25 or earlier. Exposure requires an administrator to have saved a SQL report that selects a visitor-controlled column; sites without the plugin or without such reports are not affected.","user_interaction":"yes","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.0008,"input_tokens":4726,"output_tokens":654,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-120688':16A,19A '-2026':15A,18A '5.25.25':123C 'access':152C 'administr':76B,159C 'affect':73B 'agent':11A,49B,101C,177C 'anyon':69B 'arbitrari':141C 'attack':40B,107C,138C,170C 'attacker-control':39B,106C,169C 'backup':34B,85C 'browser':67B 'column':13A,110C,173C 'comment':51B,187C 'control':41B,108C,171C 'cross':94C 'cross-sit':93C 'cve':14A,17A 'databas':12A,42B,172C 'db':33B,84C,109C 'demonstr':102C 'due':124C 'escap':56B,131C 'even':185C 'execut':148C 'ez':2A,27B,78C 'general':104C 'host':24B 'http':47B,99C 'includ':75B,122C 'inject':61B,140C,154C 'input':127C 'insuffici':126C 'make':133C 'moder':190C 'open':71B 'output':53B,130C 'packag':20B 'page':74B,145C,155C 'paramet':115C 'pend':189C 'php':21B 'plugin':5A,35B,86C 'possibl':135C 'report':4A,29B,80C,113C,165C 'requir':157C 'run':64B 'sanit':128C 'save':112C,162C 'script':62B,96C,143C 'select':114C,167C 'self':23B 'self-host':22B 'shortcod':30B,81C 'site':95C 'sql':3A,28B,79C,164C 'store':6A,38B,92C,180C 'unauthent':58B,137C,183C 'user':10A,48B,100C,151C 'user-ag':9A 'valu':43B 'verbatim':181C 'version':118C 'via':8A,97C 'visitor':59B,184C 'vulner':90C 'web':142C 'whenev':149C 'widget':31B,82C 'without':55B 'wordpress':1A,25B,37B,88C,179C 'wp_comments.comment':176C 'xss':7A","nicknames":[],"mitigations":[],"who_affected":"Sites running the EZ SQL Reports Shortcode Widget and DB Backup plugin version 5.25.25 or earlier. Exposure requires an administrator to have saved a SQL report that selects a visitor-controlled column; sites without the plugin or without such reports are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","package","php","selfhosted","wordpress"],"campaign_type":null,"search_a":"'-120688':16A,19A '-2026':15A,18A 'agent':11A 'column':13A 'cve':14A,17A 'databas':12A 'ez':2A 'plugin':5A 'report':4A 'sql':3A 'store':6A 'user':10A 'user-ag':9A 'via':8A 'wordpress':1A 'xss':7A","search_b":"'administr':76B 'affect':73B 'agent':49B 'anyon':69B 'attack':40B 'attacker-control':39B 'backup':34B 'browser':67B 'comment':51B 'control':41B 'databas':42B 'db':33B 'escap':56B 'ez':27B 'host':24B 'http':47B 'includ':75B 'inject':61B 'open':71B 'output':53B 'packag':20B 'page':74B 'php':21B 'plugin':35B 'report':29B 'run':64B 'script':62B 'self':23B 'self-host':22B 'shortcod':30B 'sql':28B 'store':38B 'unauthent':58B 'user':48B 'valu':43B 'visitor':59B 'widget':31B 'without':55B 'wordpress':25B,37B","search_c":"'5.25.25':123C 'access':152C 'administr':159C 'agent':101C,177C 'arbitrari':141C 'attack':107C,138C,170C 'attacker-control':106C,169C 'backup':85C 'column':110C,173C 'comment':187C 'control':108C,171C 'cross':94C 'cross-sit':93C 'databas':172C 'db':84C,109C 'demonstr':102C 'due':124C 'escap':131C 'even':185C 'execut':148C 'ez':78C 'general':104C 'http':99C 'includ':122C 'inject':140C,154C 'input':127C 'insuffici':126C 'make':133C 'moder':190C 'output':130C 'page':145C,155C 'paramet':115C 'pend':189C 'plugin':86C 'possibl':135C 'report':80C,113C,165C 'requir':157C 'sanit':128C 'save':112C,162C 'script':96C,143C 'select':114C,167C 'shortcod':81C 'site':95C 'sql':79C,164C 'store':92C,180C 'unauthent':137C,183C 'user':100C,151C 'verbatim':181C 'version':118C 'via':97C 'visitor':184C 'vulner':90C 'web':142C 'whenev':149C 'widget':82C 'wordpress':88C,179C 'wp_comments.comment':176C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-13T10:17:27+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-120688","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-120688","severity":null,"published_at":"2026-11-13T10:17:27+00:00","modified_at":"2026-11-13T10:17:27+00:00","first_seen_at":"2026-11-13T10:47:11+00:00","fetched_at":"2026-11-13T10:47:11+00:00","note":null}],"documents":[],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}