{"id":"CVE-2026-111317","kind":"vulnerability","aliases":["CVE-2026-111317"],"related":[],"title":"JetFormBuilder WordPress plugin: unauthenticated stored XSS via form fields","description":"The JetFormBuilder — Dynamic Blocks Form Builder plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the '<any form field name — e.g. 'payload'>' parameter in all versions up to, and including, 3.6.7 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. Exploitation requires the targeted form to have both the Save Form Record action enabled and a form-level Form Record preset configured; the stored payload only executes when a privileged user visits the front-end form page with the preset's record query variable set to the attacker's submitted record ID.","summary":"The JetFormBuilder WordPress plugin does not sanitize or escape form field values, so an unauthenticated visitor can store a script in a form submission. The script runs in the browser of a privileged user who opens the affected form page.","severity":"high","cvss":7.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["jetformbuilder","package","self-hosted","wordpress"],"not_affected_if":["no-save-form-record-preset","plugin-above-3.6.7","plugin-not-installed"],"how_to_check":"- Check the installed JetFormBuilder plugin version in the WordPress admin under Plugins; versions up to and including `3.6.7` are listed as affected.\n- Look for forms that have the Save Form Record action enabled together with a Form Record preset configured.","fix":"- JetFormBuilder: versions above `3.6.7` (fixed version not stated in the sources).","status":"open","published_at":"2026-11-07T12:17:42+00:00","first_seen_at":"2026-11-07T12:47:08+00:00","triaged_at":"2026-11-07T12:48:54+00:00","updated_at":"2026-11-07T12:48:54+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-07T12:48:54Z","model":"claude-haiku-5-5","output":{"fix":"- JetFormBuilder: versions above `3.6.7` (fixed version not stated in the sources).","reach":"internet","title":"JetFormBuilder WordPress plugin: unauthenticated stored XSS via form fields","impact":"medium","summary":"The JetFormBuilder WordPress plugin does not sanitize or escape form field values, so an unauthenticated visitor can store a script in a form submission. The script runs in the browser of a privileged user who opens the affected form page.","audience":"businesses","category":"package","nicknames":[],"who_cares":["wordpress","jetformbuilder","self-hosted"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"Attacker script runs in an administrator's browser on the site.","analyst_note":"Confirm the fixed version after 3.6.7 and whether a vendor advisory exists beyond NVD.","how_to_check":"- Check the installed JetFormBuilder plugin version in the WordPress admin under Plugins; versions up to and including `3.6.7` are listed as affected.\n- Look for forms that have the Save Form Record action enabled together with a Form Record preset configured.","plain_action":"","needs_analyst":true,"not_affected_if":["plugin-not-installed","no-save-form-record-preset","plugin-above-3.6.7"],"who_is_affected":"Sites running the JetFormBuilder plugin up to and including 3.6.7 that have a form with both the Save Form Record action and a Form Record preset enabled. Exposure needs a privileged user to open the front-end form page with the preset's record query variable set to the attacker's record ID. Sites without that form configuration, or without the plugin, can skip it.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.00075,"input_tokens":4382,"output_tokens":624,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-111317':12A,15A '-2026':11A,14A '3.6.7':95C 'access':124C 'action':140C 'affect':59B 'arbitrari':113C 'attack':110C,177C 'block':65C 'browser':51B 'builder':67C 'configur':150C 'cross':76C 'cross-sit':75C 'cve':10A,13A 'due':96C 'dynam':64C 'e.g':85C 'enabl':141C 'end':164C 'escap':30B,103C 'execut':120C,155C 'exploit':128C 'field':9A,32B,83C 'form':8A,31B,44B,60B,66C,82C,132C,138C,145C,147C,165C 'form-level':144C 'front':163C 'front-end':162C 'host':20B 'id':181C 'includ':94C 'inject':112C,126C 'input':99C 'insuffici':98C 'jetformbuild':1A,16B,23B,63C 'level':146C 'make':105C 'name':84C 'open':57B 'output':102C 'packag':17B 'page':61B,117C,127C,166C 'paramet':87C 'payload':86C,153C 'plugin':3A,25B,68C 'possibl':107C 'preset':149C,169C 'privileg':54B,158C 'queri':172C 'record':139C,148C,171C,180C 'requir':129C 'run':48B 'sanit':28B,100C 'save':137C 'script':41B,47B,78C,115C 'self':19B 'self-host':18B 'set':174C 'site':77C 'store':5A,39B,74C,152C 'submiss':45B 'submit':179C 'target':131C 'unauthent':4A,36B,109C 'user':55B,123C,159C 'valu':33B 'variabl':173C 'version':90C 'via':7A,79C 'visit':160C 'visitor':37B 'vulner':72C 'web':114C 'whenev':121C 'wordpress':2A,21B,24B,70C 'xss':6A","nicknames":[],"mitigations":[],"who_affected":"Sites running the JetFormBuilder plugin up to and including 3.6.7 that have a form with both the Save Form Record action and a Form Record preset enabled. Exposure needs a privileged user to open the front-end form page with the preset's record query variable set to the attacker's record ID. Sites without that form configuration, or without the plugin, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["high","jetformbuilder","package","selfhosted","wordpress"],"campaign_type":null,"search_a":"'-111317':12A,15A '-2026':11A,14A 'cve':10A,13A 'field':9A 'form':8A 'jetformbuild':1A 'plugin':3A 'store':5A 'unauthent':4A 'via':7A 'wordpress':2A 'xss':6A","search_b":"'affect':59B 'browser':51B 'escap':30B 'field':32B 'form':31B,44B,60B 'host':20B 'jetformbuild':16B,23B 'open':57B 'packag':17B 'page':61B 'plugin':25B 'privileg':54B 'run':48B 'sanit':28B 'script':41B,47B 'self':19B 'self-host':18B 'store':39B 'submiss':45B 'unauthent':36B 'user':55B 'valu':33B 'visitor':37B 'wordpress':21B,24B","search_c":"'3.6.7':95C 'access':124C 'action':140C 'arbitrari':113C 'attack':110C,177C 'block':65C 'builder':67C 'configur':150C 'cross':76C 'cross-sit':75C 'due':96C 'dynam':64C 'e.g':85C 'enabl':141C 'end':164C 'escap':103C 'execut':120C,155C 'exploit':128C 'field':83C 'form':66C,82C,132C,138C,145C,147C,165C 'form-level':144C 'front':163C 'front-end':162C 'id':181C 'includ':94C 'inject':112C,126C 'input':99C 'insuffici':98C 'jetformbuild':63C 'level':146C 'make':105C 'name':84C 'output':102C 'page':117C,127C,166C 'paramet':87C 'payload':86C,153C 'plugin':68C 'possibl':107C 'preset':149C,169C 'privileg':158C 'queri':172C 'record':139C,148C,171C,180C 'requir':129C 'sanit':100C 'save':137C 'script':78C,115C 'set':174C 'site':77C 'store':74C,152C 'submit':179C 'target':131C 'unauthent':109C 'user':123C,159C 'variabl':173C 'version':90C 'via':79C 'visit':160C 'vulner':72C 'web':114C 'whenev':121C 'wordpress':70C","first_public_at":"2026-11-07T12:17:42+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-111317","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111317","severity":null,"published_at":"2026-11-07T12:17:42+00:00","modified_at":"2026-11-07T12:17:42+00:00","first_seen_at":"2026-11-07T12:47:08+00:00","fetched_at":"2026-11-07T12:47:08+00:00","note":null}],"documents":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}