CVE-2026-104012

Rox Appointment Booking <= 1.3.1 - Unauthenticated Privilege Escalation via Mass Assignment to Mass Assignment via '/public/booking' Endpoint

2026-10-30 19:18
Daryle Minor

Strategic Overview

Status
Patched in 1.3.2
Affected Version
<= 1.3.1
CVSS
8.8High
Weakness type
CWE-269 · Improper Privilege Management
CVE
CVE-2026-104012
View all Rox Appointment Booking – Event, Calendar & Appointment Scheduling vulnerabilities

At a glance

CVE-2026-104012 is a high-severity Improper Privilege Management vulnerability in the Rox Appointment Booking WordPress plugin, affecting versions <= 1.3.1. It carries a CVSS score of 8.8 (reachable over the network; low attack complexity; high confidentiality, integrity, availability impact). Exploitation requires no authentication. The issue is fixed in version 1.3.2; sites on affected versions should update now. Disclosed October 2026, reported by Daryle Minor.

Vulnerability Overview

The Rox Appointment Booking – Appointment Booking Scheduling Solution plugin for WordPress is vulnerable to Privilege Escalation via Mass Assignment in all versions up to, and including, 1.3.1 This is due to the public `/rox-appointment-booking/v1/public/booking` REST endpoint performing mass-assignment of the raw request body into a new customer row while `CustomerModel::$fillable` includes the internal `wp_user_id` column, allowing an unauthenticated attacker to persist an arbitrary WordPress user ID alongside an attacker-controlled email address with no authorization check. When an administrator subsequently opens the poisoned customer record and clicks Update Customer, `SaveCustomer::handleRequest()` passes the stored `wp_user_id` and attacker-supplied email to `wp_update_user()` — succeeding because `LinkedAccount::canChange()` unconditionally returns true when the acting user holds the `edit_users` capability — thereby overwriting the targeted administrator's email address and enabling full account takeover via a standard WordPress password-reset request. Successful exploitation requires an administrator to open and save the poisoned record, and the attacker must know or guess a valid administrator user ID (such as the default user ID 1).

Technical Analysis

The vector marks this flaw as remotely reachable over the network, with low attack complexity — no special timing or configuration is needed, and no privileges on the target site. A successful exploit has high impact on confidentiality, integrity, availability — full site compromise territory.

CWE-269: Improper Privilege Management

Rox Appointment Booking <= 1.3.1 carries this weakness at handleRequest(), and reaching it takes no account at all. Improper privilege management means the code lets an account end up with capabilities its role should not have.

It converts a low-privileged account into an administrative one, which makes every other restriction on the site irrelevant. For Rox Appointment Booking the fix is 1.3.2: builds <= 1.3.1 are affected, anything from 1.3.2 onward is not.

Remediation

Update to version 1.3.2, or a newer patched version

How does WordSec protect against this?

This one needs no account at all, which puts it outside what login hardening can reach; WordSec's login security narrows the account-level paths around it, and the firewall is what inspects the request itself. None of that substitutes for the fix: Rox Appointment Booking 1.3.2 closes this, and updating the plugin is the step that ends it.

  • Login Security
  • Alerts

External References

Related records

Vulnerability data © Defiant, Inc., provided under the Wordfence Intelligence T&C