{"id":"CVE-2026-111727","kind":"vulnerability","aliases":["CVE-2026-111727"],"related":[],"title":"WordPress Appointment Booking Calendar plugin: stored XSS via vs_text_submitbtn","description":"The Appointment Booking Calendar plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'vs_text_submitbtn' parameter in all versions up to, and including, 1.4.05 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 the attacker to be assigned as a calendar owner, a per-user grant that any administrator can extend to users as low as Subscriber level through the plugin's calendar list screen. Exploitation by attackers with subscriber-level access and above requires that an administrator has assigned the attacker's account as owner (`conwer`) of a calendar via the plugin's calendar list screen; the plugin's UI lists all registered users regardless of role, so a Subscriber can be assigned. On a default installation, where that is not configured, the vulnerability requires attackers with editor-level access and above.","summary":"The Appointment Booking Calendar WordPress plugin, through version 1.4.05, does not sanitize the vs_text_submitbtn parameter, so stored script can be injected into pages. Visitors who open an injected page run the attacker's script in their browser.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","self-hosted","wordpress","wordpress-plugin"],"not_affected_if":["plugin-not-installed","plugin-updated"],"how_to_check":"- Check whether the Appointment Booking Calendar plugin is installed and its version is `1.4.05` or lower\n- Review which users are listed as calendar owners in the plugin's calendar list screen\n- unknown whether the sources give a specific file or setting to inspect","fix":"- Update the Appointment Booking Calendar plugin to a version later than `1.4.05`\n- Remove calendar owner assignments from accounts that do not need them\n- unknown whether a patched version number is given in the sources","status":"open","published_at":"2026-10-28T04:17:57+00:00","first_seen_at":"2026-10-28T04:30:58+00:00","triaged_at":"2026-10-28T04:32:03+00:00","updated_at":"2026-10-28T04:32:03+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-28T04:32:03Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Appointment Booking Calendar plugin to a version later than `1.4.05`\n- Remove calendar owner assignments from accounts that do not need them\n- unknown whether a patched version number is given in the sources","reach":"internet","title":"WordPress Appointment Booking Calendar plugin: stored XSS via vs_text_submitbtn","impact":"medium","summary":"The Appointment Booking Calendar WordPress plugin, through version 1.4.05, does not sanitize the vs_text_submitbtn parameter, so stored script can be injected into pages. Visitors who open an injected page run the attacker's script in their browser.","category":"package","nicknames":[],"who_cares":["wordpress","wordpress-plugin","self-hosted"],"confidence":0.7,"needs_auth":"yes","worst_case":"Injected script runs in visitors' browsers, potentially stealing sessions","analyst_note":"","how_to_check":"- Check whether the Appointment Booking Calendar plugin is installed and its version is `1.4.05` or lower\n- Review which users are listed as calendar owners in the plugin's calendar list screen\n- unknown whether the sources give a specific file or setting to inspect","needs_analyst":false,"not_affected_if":["plugin-not-installed","plugin-updated"],"who_is_affected":"Sites running the Appointment Booking Calendar plugin at version `1.4.05` or lower are exposed. On a default install, the attacker needs editor-level access or higher; if an administrator has assigned a calendar owner, a Subscriber account can exploit it. Sites without this plugin can skip it.","user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000654,"input_tokens":3560,"output_tokens":595,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-111727':14A,17A '-2026':13A,16A '1.4.05':34B,93C 'access':113C,129C,175C,235C 'account':187C 'administr':151C,181C 'appoint':2A,27B,66C 'arbitrari':118C 'assign':139C,183C,217C 'attack':59B,108C,136C,170C,185C,230C 'authent':107C 'book':3A,28B,67C 'browser':64B 'calendar':4A,29B,68C,142C,165C,193C,198C 'configur':226C 'conwer':190C 'cross':77C 'cross-sit':76C 'cve':12A,15A 'default':220C 'due':94C 'editor':233C 'editor-level':232C 'escap':101C 'execut':125C 'exploit':168C 'extend':153C 'grant':148C 'host':21B 'includ':92C 'inject':48B,55B,117C,131C 'input':97C 'instal':221C 'insuffici':96C 'level':112C,160C,174C,234C 'list':166C,199C,205C 'low':157C 'make':103C 'open':53B 'output':100C 'owner':143C,189C 'packag':18B 'page':50B,56B,122C,132C 'paramet':42B,85C 'per':146C 'per-us':145C 'plugin':5A,25B,31B,69C,163C,196C,202C 'possibl':105C 'regardless':209C 'regist':207C 'requir':134C,178C,229C 'role':211C 'run':57B 'sanit':37B,98C 'screen':167C,200C 'script':45B,61B,79C,120C 'self':20B 'self-host':19B 'site':78C 'store':6A,44B,75C 'submitbtn':11A,41B,84C 'subscrib':111C,159C,173C,214C 'subscriber-level':110C,172C 'text':10A,40B,83C 'ui':204C 'user':128C,147C,155C,208C 'version':33B,88C 'via':8A,80C,194C 'visitor':51B 'vs':9A,39B,82C 'vulner':73C,228C 'web':119C 'whenev':126C 'wordpress':1A,22B,24B,30B,71C 'wordpress-plugin':23B 'xss':7A","nicknames":[],"mitigations":[],"who_affected":"Sites running the Appointment Booking Calendar plugin at version `1.4.05` or lower are exposed. On a default install, the attacker needs editor-level access or higher; if an administrator has assigned a calendar owner, a Subscriber account can exploit it. Sites without this plugin can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-28T04:17:57+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-111727","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-111727","severity":null,"published_at":"2026-10-28T04:17:57+00:00","modified_at":"2026-10-28T04:17:57+00:00","first_seen_at":"2026-10-28T04:30:58+00:00","fetched_at":"2026-10-28T04:30:58+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"}