Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit booking form with scripted single-line field
-
DeliveryPayload stored in booking data
-
ExploitVictim loads Schedule Calendar List page
-
ExecutionRenderer decode-and-truncate injects into DOM unescaped
-
ImpactScript executes in victim browser (scope change)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the plugin's 'list_readmore_numberofwords' Other Parameters setting to be set to a positive integer; the default value of 0 bypasses the decode-and-truncate branch in the Schedule Calendar List Renderer and is NOT exploitable through this sink. Given that gate, an unauthenticated attacker can inject via a Booking Form single-line field, but the stored script only fires when a user subsequently loads the affected schedule/booking list page (victim page access is the trigger). Limiting factors: non-default configuration required, dependency on a victim viewing the rendered page, and only Low confidentiality/integrity impact (browser-context script execution, not server compromise). |
| Impact | Signals point to a moderate, conditional web risk rather than an urgent priority. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N = 7.2) describes a network-reachable, unauthenticated stored XSS with scope change but only Low confidentiality and integrity impact. No EPSS score, no CISA KEV listing, and no public exploit code were provided - exploitation status is 'no public exploit identified at time of analysis.' The most important mitigating signal is NOT in the raw CVSS vector: the description explicitly states exploitation is only possible when the 'list_readmore_numberofwords' Other Parameters setting is set to a positive integer, and the shipped default of 0 bypasses the vulnerable decode-and-truncate branch entirely. This is a non-default configuration gate that the CVSS AC:L metric does not reflect, so the real-world reachability is narrower than 7.2 suggests. Net: a credible stored XSS worth patching on affected sites that have customized this setting, but not a mass-exploitation emergency. |
| Exploit ScenarioDerived | An unauthenticated attacker submits a booking through the plugin's form, placing a malicious script payload into a single-line field. On a site where 'list_readmore_numberofwords' is configured to a positive integer, the Schedule Calendar List Renderer decodes and truncates that field and injects it into the DOM without proper escaping, so the script executes in the browser of any user (e.g. an admin or staffer) who later views the schedule/booking list page. No public proof-of-concept was provided in the input. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 01, 2026
Stored DOM-based cross-site scripting in the Appointment Hour Booking - Booking Calendar WordPress plugin (all versions up to and including 1.5.97) allows unauthenticated remote attackers to inject arbitrary web scripts via a Booking Form single-line field, which execute when a victim loads the affected Schedule Calendar list page. Exploitation requires the non-default 'list_readmore_numberofwords' Other Parameters setting to be a positive integer; the default value of 0 bypasses the vulnerable decode-and-truncate branch and is not exploitable through this sink. The assessed CVSS is 7.2 with Low confidentiality and Low integrity impact, and no public exploit was identified at time of analysis; overall this is a moderate, conditional web risk rather than an urgent priority.
RemediationAI
Patch status: Upstream fix available (PR/commit); released patched version not independently confirmed. The upstream changeset at https://plugins.trac.wordpress.org/changeset?reponame=&old=3718725%40appointment-hour-booking&new=3718725%40appointment-hour-booking addresses the issue, but no tagged plugin release version beyond 1.5.97 is confirmed in the provided data, so administrators should apply that changeset to a forked/patched copy or update to the next official Appointment Hour Booking - Booking Calendar release as soon as it is published. Consult the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/3044e60f-b930-42db-ba5d-656e71b84226?source=cve for updated guidance. As an immediate, specific mitigation, set the plugin's 'list_readmore_numberofwords' Other Parameters setting to 0 (the default), which disables the decode-and-truncate branch in the Schedule Calendar List Renderer and closes this specific sink; the trade-off is that read-more word truncation in the schedule calendar list will be disabled. If the Schedule Calendar list view is not required on the site, disable or remove that view to eliminate the affected rendering path entirely. Because the exploit requires a victim to load the injected schedule/booking list page, restricting access to those pages to trusted users can reduce exposure, though it does not fix the underlying injection. No vendor-released patch version is identified beyond the changeset, and no public exploit was identified at time of analysis.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a CWE-79 cross-site scripting flaw in the Appointment Hour Booking - Booking Calendar WordPress plugin. The issue is specifically a stored DOM-based XSS: an unauthenticated attacker can submit a Booking Form single-line field whose value is not adequately sanitized on input and not adequately escaped when later rendered by the Schedule Calendar List Renderer, so arbitrary web script is inserted into the DOM and executes in the browser of a user who subsequently accesses the injected schedule/booking list page. The vulnerability is gated by the plugin's 'list_readmore_numberofwords' Other Parameters setting: only when this is configured to a positive integer does the decode-and-truncate branch in the list renderer process the attacker-controlled value in a way that leads to script execution; the default value of 0 skips that branch entirely. The affected code paths are referenced in the WordPress plugin Trac for version 1.5.97, including mv/js/jquery.calendar.js, cp-main-class.inc.php around lines 1473, 1609, and 1745, and classes/cp-base-class.inc.php around line 81. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N indicates a remotely reachable, unauthenticated issue with scope change because the resulting script runs in the victim's browser context; impact is limited to Low confidentiality and Low integrity, with no availability impact, and this does not imply server compromise. The CPE cpe:2.3:a:codepeople:appointment_hour_booking_-_booking_calendar:*:*:*:*:*:*:*:* reflects that all versions of the plugin are in scope per the advisory.
Know when Wordpress Plugin gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Unauthenticated stored XSS reachable over the network (PR:N/AV:N); script runs in another security context (S:C) with Low C/I and no availability impact; kept AC:L to match vendor though the non-default config gate arguably raises complexity.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Appointment Hour Booking - Booking Calendar plugin for WordPress is vulnerable to Stored DOM-Based Cross-Site Scripting via Booking Form Single-Line Field via Schedule Calendar List Renderer in all versions up to, and including, 1.5.97 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 'list_readmore_numberofwords' Other Parameters setting to be configured with a positive integer value; the default value of 0 bypasses the decode-and-truncate branch entirely and is not exploitable through this sink.
Executive ViewAI
WordPress sites using Appointment Hour Booking - Booking Calendar plugin versions up to and including 1.5.97 may be affected by a stored cross-site scripting issue that can execute in visitors' browsers when viewing a Schedule Calendar list page, but only if the non-default 'list_readmore_numberofwords' setting is a positive integer. With no vendor-released patch identified at time of analysis and no public exploit identified, leadership should treat this as a conditional, medium business risk requiring asset identification and interim hardening rather than immediate incident response.
No vendor-released patch identified at time of analysis; set 'list_readmore_numberofwords' to 0 or disable the vulnerable Schedule Calendar list page, apply WAF/virtual patching, restrict plugin exposure, and monitor for injected scripts.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Wordpress Plugin
View allThe Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
The Hash Form - Drag & Drop Form Builder plugin for WordPress is vulnerable to arbitrary file uploads due to missing fil
Authentication bypass in the LiteSpeed Cache WordPress plugin (versions prior to 6.5.0.1) allows unauthenticated remote
The Simple File List plugin for WordPress through version 4.2.2 contains an unauthenticated remote code execution vulner
The SureTriggers WordPress plugin through version 1.0.82 contains a privilege escalation vulnerability that allows unaut
The Ninja Forms plugin before 2.9.42.1 for WordPress allows remote attackers to conduct PHP object injection attacks via
The Business Directory Plugin - Easy Listing Directories for WordPress plugin for WordPress is vulnerable to time-based
SQL injection in the NotificationX WordPress plugin (versions up to and including 2.8.2) allows unauthenticated remote a
The POST SMTP Mailer - Email log, Delivery Failure Notifications and Best Mail SMTP for WordPress plugin for WordPress i
The MasterStudy LMS WordPress Plugin - for Online Courses and Education plugin for WordPress is vulnerable to union base
The Email Subscribers by Icegram Express plugin for WordPress is vulnerable to SQL Injection via the ‘hash’ parameter in
Remote code execution in the WP Query Console WordPress plugin (versions up to and including 1.0) by Ajit Bohra allows u
EUVD-2026-90566
GHSA-8899-xhvc-pc43
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB