{"id":"CVE-2026-100158","kind":"vulnerability","aliases":["CVE-2026-100158"],"related":[],"title":"WordPress SQL Chart Builder plugin: stored XSS via chart column values","description":"The SQL Chart Builder plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'X-axis column value ($value->$xarg_s from $wpdb->get_results())' parameter in all versions up to, and including, 3.0.6 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with subscriber-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This requires an administrator to have published a chart whose SQL query returns a column controllable by a lower-privileged user, such as wp_users.display_name, which a Subscriber can populate with a payload via the standard WordPress profile page at /wp-admin/profile.php.","summary":"The SQL Chart Builder WordPress plugin up to and including 3.0.6 does not sanitize or escape an X-axis column value rendered from a database query. A subscriber who sets a malicious display name can get script to run in the browser of any user who views a page containing the published chart.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","self-hosted","wordpress","wordpress-plugin"],"not_affected_if":["no-user-controlled-chart-columns","plugin-not-installed"],"how_to_check":"- Check the installed version of the SQL Chart Builder plugin in the WordPress admin plugins list; versions up to and including `3.0.6` are affected.\n- Review published charts whose SQL query selects user columns such as `wp_users.display_name`.","fix":"- Update the SQL Chart Builder plugin to a version newer than `3.0.6`; the fixed version is unknown from the sources.\n- Until patched, remove or restrict charts that select user-controlled columns.","status":"open","published_at":"2026-10-16T06:17:01+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","triaged_at":"2026-10-25T03:59:54+00:00","updated_at":"2026-10-25T03:59:54+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:59:54Z","model":"claude-haiku-5-5","output":{"fix":"- Update the SQL Chart Builder plugin to a version newer than `3.0.6`; the fixed version is unknown from the sources.\n- Until patched, remove or restrict charts that select user-controlled columns.","reach":"internet","title":"WordPress SQL Chart Builder plugin: stored XSS via chart column values","impact":"medium","summary":"The SQL Chart Builder WordPress plugin up to and including 3.0.6 does not sanitize or escape an X-axis column value rendered from a database query. A subscriber who sets a malicious display name can get script to run in the browser of any user who views a page containing the published chart.","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugin","self-hosted"],"confidence":0.7,"needs_auth":"yes","worst_case":"Attacker script runs in visitors' browsers, potentially hijacking admin sessions.","analyst_note":"","how_to_check":"- Check the installed version of the SQL Chart Builder plugin in the WordPress admin plugins list; versions up to and including `3.0.6` are affected.\n- Review published charts whose SQL query selects user columns such as `wp_users.display_name`.","needs_analyst":false,"not_affected_if":["plugin-not-installed","no-user-controlled-chart-columns"],"who_is_affected":"Sites running the SQL Chart Builder plugin at version 3.0.6 or earlier that have published a chart whose SQL query returns a column a lower-privileged user can edit, such as a display name. Sites without this plugin, or without such a published chart, are not exposed by this flaw.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000644,"input_tokens":3479,"output_tokens":592,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-100158':14A,17A '-2026':13A,16A '/wp-admin/profile.php':198C '3.0.6':36B,117C 'access':137C,153C 'administr':160C 'arbitrari':142C 'attack':132C 'authent':131C 'axi':45B,99C 'browser':68B 'builder':4A,29B,83C 'chart':3A,9A,28B,79B,82C,165C 'column':10A,46B,100C,171C 'contain':76B 'control':172C 'cross':92C 'cross-sit':91C 'cve':12A,15A 'databas':51B 'display':59B 'due':118C 'escap':41B,125C 'execut':149C 'get':62B,107C 'host':21B 'includ':35B,116C 'inject':141C,155C 'input':121C 'insuffici':120C 'level':136C 'lower':176C 'lower-privileg':175C 'make':127C 'malici':58B 'name':60B,182C 'output':124C 'packag':18B 'page':75B,146C,156C,196C 'paramet':109C 'payload':190C 'plugin':5A,25B,31B,84C 'popul':187C 'possibl':129C 'privileg':177C 'profil':195C 'publish':78B,163C 'queri':52B,168C 'render':48B 'requir':158C 'result':108C 'return':169C 'run':65B 'sanit':39B,122C 'script':63B,94C,144C 'self':20B 'self-host':19B 'set':56B 'site':93C 'sql':2A,27B,81C,167C 'standard':193C 'store':6A,90C 'subscrib':54B,135C,185C 'subscriber-level':134C 'user':71B,152C,178C 'valu':11A,47B,101C,102C 'version':112C 'via':8A,95C,191C 'view':73B 'vulner':88C 'web':143C 'whenev':150C 'whose':166C 'wordpress':1A,22B,24B,30B,86C,194C 'wordpress-plugin':23B 'wp_users.display':181C 'wpdb':106C 'x':44B,98C 'x-axi':43B,97C 'xarg':103C 'xss':7A","nicknames":[],"mitigations":[],"who_affected":"Sites running the SQL Chart Builder plugin at version 3.0.6 or earlier that have published a chart whose SQL query returns a column a lower-privileged user can edit, such as a display name. Sites without this plugin, or without such a published chart, are not exposed by this flaw.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T06:17:01+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/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-100158","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-100158","severity":null,"published_at":"2026-10-16T06:17:01+00:00","modified_at":"2026-10-16T15:16:57+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"}