CVE-2026-118066 · Package
NO FIX YET · SEE WHAT TO DO
The LatePoint appointment booking plugin for WordPress, in all versions up to and including 5.7.6, builds a SQL WHERE clause from attacker-supplied values, so a public AJAX request using the literal string 'IS NOT NULL' matches every customer. An unauthenticated attacker can then overwrite the password of the lowest-id customer and gain access to their bookings, orders and personal data, and the linked WordPress account when the wp_users_as_customers option is on.
first public Nov 7, 2026 · 1 source
Check it with your coding agent
It checks your repository and tells you if you’re affected, with the fix.
Any WordPress site running the LatePoint appointment booking plugin at version 5.7.6 or earlier is exposed, because the vulnerable public AJAX routes are reachable without logging in. The risk is highest when the wp_users_as_customers option links customers to WordPress accounts, since takeover then extends to WordPress subscriber or customer accounts. Sites where the plugin is not installed, or is updated beyond the affected range once a fix is published, can skip it.
Not affected if patched-version, plugin-not-installed
Who cares appointment-booking, latepoint, woocommerce, wordpress
5.7.6 in the WordPress plugins screen or the plugin header in wp-content/plugins/wp_users_as_customers option is enabled in LatePoint settings, which raises the impact to WordPress accounts5.7.6 are affected)The Appointment Booking Plugin – LatePoint | Calendar & Scheduling for WordPress plugin for WordPress is vulnerable to Authentication Bypass via Account Takeover in all versions up to, and including, 5.7.6. This is due to the OsModel::build_conditions_query() function in lib/models/model.php comparing WHERE-clause values against the literal strings 'IS NULL' and 'IS NOT NULL' and concatenating a match directly into SQL without binding it as a parameter, a flaw that neither sanitize_text_field() nor the 5.7.5 is_scalar() hardening guard closes, since both pass the scalar sentinel through unchanged. This makes it possible for unauthenticated attackers to send params[password_reset_token]=IS NOT NULL to the public customer_cabinet__change_password AJAX route to match every non-null account_nonse value, resolving to the lowest-id customer and overwriting that customer's password to an attacker-chosen value — granting full access to their bookings, orders, and PII, and, when the wp_users_as_customers option is enabled, takeover of the linked WordPress subscriber or customer-role account. The attacker can first identify the target customer's email by sending to the public route, which returns the name and email from the first matching order intent, and can then self-arm the required 15-minute password-reset freshness window by triggering a reset for that customer directly.
Are you affected?
Tell InfraStack what you run. It checks this one, and every next one, against your stack.
Ask from here. InfraStack checks the affected versions against your stack and answers in your inbox.
InfraStack checks the affected versions against your stack and answers in Slack, with the evidence and the fix.
params[order_intent_key]=IS NOT NULLsteps__start_from_order_intentThis page as .md · .json · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.