{"id":"CVE-2026-2982","kind":"vulnerability","aliases":["CVE-2026-2982"],"related":[],"title":"WP Table Builder WordPress plugin: stored XSS via url parameter","description":"The WP Table Builder – Drag & Drop Table Builder plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'url' parameter in versions up to, and including, 2.1.7 due to insufficient input sanitization and output escaping. This makes it possible for authenticated attackers, with contributor-level permissions and higher, to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. Exploitation by lower-privileged users requires an administrator to explicitly allow those roles in plugin settings. While it is possible to assign subscriber-level roles with the ability to create tables, such privileges are usually assigned to the more appropriate contributor, author, or editor level roles.","summary":"The WP Table Builder plugin for WordPress does not sanitize the 'url' parameter when saving table data, so script stored in it runs in pages. An authenticated contributor-level user can make visitors' browsers run attacker-supplied scripts whenever they open an affected page.","severity":"medium","cvss":5.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","wordpress","wp-table-builder"],"not_affected_if":["no-untrusted-contributors","plugin-not-installed","roles-not-enabled"],"how_to_check":"- Check the installed version of the WP Table Builder plugin in the WordPress admin Plugins screen; versions up to and including `2.1.7` are affected.\n- Review who holds Contributor, Author or Editor roles on the site, since they can create the injected content.","fix":null,"status":"open","published_at":"2026-11-12T12:18:24+00:00","first_seen_at":"2026-11-12T12:38:19+00:00","triaged_at":"2026-11-12T12:40:35+00:00","updated_at":"2026-11-12T12:40:35+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-12T12:40:35Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"WP Table Builder WordPress plugin: stored XSS via url parameter","impact":"medium","summary":"The WP Table Builder plugin for WordPress does not sanitize the 'url' parameter when saving table data, so script stored in it runs in pages. An authenticated contributor-level user can make visitors' browsers run attacker-supplied scripts whenever they open an affected page.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","wp-table-builder"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"Scripts run in visitors' browsers, possibly including administrators' sessions.","analyst_note":"","how_to_check":"- Check the installed version of the WP Table Builder plugin in the WordPress admin Plugins screen; versions up to and including `2.1.7` are affected.\n- Review who holds Contributor, Author or Editor roles on the site, since they can create the injected content.","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["plugin-not-installed","no-untrusted-contributors","roles-not-enabled"],"who_is_affected":"Sites running the WP Table Builder plugin at version 2.1.7 or earlier where contributor-level or higher accounts can create tables. Lower-privileged roles are only exposed if an administrator has explicitly allowed them in plugin settings. Sites without this plugin or with only trusted editors can skip it.","user_interaction":"yes","product_ecosystem":"","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000757,"input_tokens":4708,"output_tokens":572,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-2982':13A,16A '2.1.7':98C 'abil':167C 'access':134C 'administr':146C 'affect':67B 'allow':149C 'appropri':179C 'arbitrari':123C 'assign':160C,175C 'attack':60B,113C 'attacker-suppli':59B 'authent':49B,112C 'author':181C 'browser':57B 'builder':3A,22B,26B,72C,76C 'contributor':51B,116C,180C 'contributor-level':50B,115C 'creat':169C 'cross':85C 'cross-sit':84C 'cve':11A,14A 'data':39B 'drag':73C 'drop':74C 'due':99C 'editor':183C 'escap':106C 'execut':130C 'explicit':148C 'exploit':138C 'higher':120C 'includ':97C 'inject':122C,136C 'input':102C 'insuffici':101C 'level':52B,117C,163C,184C 'lower':141C 'lower-privileg':140C 'make':55B,108C 'open':65B 'output':105C 'packag':17B 'page':47B,68B,127C,137C 'paramet':10A,35B,91C 'permiss':118C 'plugin':5A,27B,77C,153C 'possibl':110C,158C 'privileg':142C,172C 'requir':144C 'role':151C,164C,185C 'run':45B,58B 'sanit':32B,103C 'save':37B 'script':41B,62B,87C,125C 'set':154C 'site':86C 'store':6A,42B,83C 'subscrib':162C 'subscriber-level':161C 'suppli':61B 'tabl':2A,21B,25B,38B,71C,75C,170C 'url':9A,34B,90C 'user':53B,133C,143C 'usual':174C 'version':93C 'via':8A,88C 'visitor':56B 'vulner':81C 'web':124C 'whenev':63B,131C 'wordpress':4A,18B,29B,79C 'wp':1A,20B,24B,70C 'wp-table-build':19B 'xss':7A","nicknames":[],"mitigations":[],"who_affected":"Sites running the WP Table Builder plugin at version 2.1.7 or earlier where contributor-level or higher accounts can create tables. Lower-privileged roles are only exposed if an administrator has explicitly allowed them in plugin settings. Sites without this plugin or with only trusted editors can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"none","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","package","wordpress","wptablebuilder"],"campaign_type":null,"search_a":"'-2026':12A,15A '-2982':13A,16A 'builder':3A 'cve':11A,14A 'paramet':10A 'plugin':5A 'store':6A 'tabl':2A 'url':9A 'via':8A 'wordpress':4A 'wp':1A 'xss':7A","search_b":"'affect':67B 'attack':60B 'attacker-suppli':59B 'authent':49B 'browser':57B 'builder':22B,26B 'contributor':51B 'contributor-level':50B 'data':39B 'level':52B 'make':55B 'open':65B 'packag':17B 'page':47B,68B 'paramet':35B 'plugin':27B 'run':45B,58B 'sanit':32B 'save':37B 'script':41B,62B 'store':42B 'suppli':61B 'tabl':21B,25B,38B 'url':34B 'user':53B 'visitor':56B 'whenev':63B 'wordpress':18B,29B 'wp':20B,24B 'wp-table-build':19B","search_c":"'2.1.7':98C 'abil':167C 'access':134C 'administr':146C 'allow':149C 'appropri':179C 'arbitrari':123C 'assign':160C,175C 'attack':113C 'authent':112C 'author':181C 'builder':72C,76C 'contributor':116C,180C 'contributor-level':115C 'creat':169C 'cross':85C 'cross-sit':84C 'drag':73C 'drop':74C 'due':99C 'editor':183C 'escap':106C 'execut':130C 'explicit':148C 'exploit':138C 'higher':120C 'includ':97C 'inject':122C,136C 'input':102C 'insuffici':101C 'level':117C,163C,184C 'lower':141C 'lower-privileg':140C 'make':108C 'output':105C 'page':127C,137C 'paramet':91C 'permiss':118C 'plugin':77C,153C 'possibl':110C,158C 'privileg':142C,172C 'requir':144C 'role':151C,164C,185C 'sanit':103C 'script':87C,125C 'set':154C 'site':86C 'store':83C 'subscrib':162C 'subscriber-level':161C 'tabl':71C,75C,170C 'url':90C 'user':133C,143C 'usual':174C 'version':93C 'via':88C 'vulner':81C 'web':124C 'whenev':131C 'wordpress':79C 'wp':70C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-12T12:18:24+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-2982","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-2982","severity":null,"published_at":"2026-11-12T12:18:24+00:00","modified_at":"2026-11-12T12:18:24+00:00","first_seen_at":"2026-11-12T12:38:19+00:00","fetched_at":"2026-11-12T12:38:19+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"}