Description
The Five Star Restaurant Reservations plugin for WordPress is vulnerable to a payment bypass via PHP type juggling in versions up to, and including, 2.7.16 This is due to the valid_payment() function using a PHP loose comparison (==) between the attacker-controlled payment_id POST parameter and the booking's stripe_payment_intent_id property. When an unauthenticated attacker submits a request to the nopriv AJAX handler rtb_stripe_pmt_succeed before the Stripe payment intent has been created for a booking (i.e., before the JavaScript-triggered create_stripe_pmtIntnt() call has stored an intent ID in post meta), the stripe_payment_intent_id property on the booking object remains null. The comparison sanitize_text_field('') == null evaluates to TRUE in PHP loose comparison, causing the payment verification check to pass with zero actual payment. This makes it possible for unauthenticated attackers to mark any existing payment_pending booking as paid without completing a Stripe payment by submitting an empty payment_id parameter.
Published: 2026-04-30
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Five Star Restaurant Reservations WordPress plugin contains an improper equality check that allows an attacker to bypass payment verification. The plugin’s valid_payment() function compares a user-supplied payment_id against a booking’s stripe_payment_intent_id using PHP loose comparison (==). When the booking has no payment intent yet, the comparison of an empty string to null evaluates to true, causing the plugin to believe the payment succeeded even though no Stripe transaction occurred. This flaw enables unauthenticated users to mark any pending booking as paid without completing a legitimate Stripe payment, increasing risk of financial loss or unauthorized reservations.

Affected Systems

This vulnerability affects the rustaurius Five Star Restaurant Reservations plugin for WordPress, specifically versions 2.7.16 and earlier. Any site using these versions of the plugin is at risk unless a newer version is deployed.

Risk and Exploitability

The CVSS score of 5.3 indicates moderate severity, and the EPSS score is not available. Because the flaw is exploitable via an unauthenticated HTTP request to the rtb_stripe_pmt_succeed AJAX endpoint, the attack surface is broad. The vulnerability is not listed in the CISA KEV catalog, but its moderate risk and broad exposure suggest that organizations should prioritize remediation promptly.

Generated by OpenCVE AI on April 30, 2026 at 13:36 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Five Star Restaurant Reservations plugin to version 2.7.17 or later, which removes the loose comparison
  • If an immediate upgrade is not possible, restrict access to the rtb_stripe_pmt_succeed AJAX endpoint by adding a security rule that blocks unauthenticated POST requests when payment_id is empty
  • Consider temporarily disabling the Stripe payment process in the plugin’s configuration until the issue is resolved or a patch is applied

Generated by OpenCVE AI on April 30, 2026 at 13:36 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 01 May 2026 08:45:00 +0000

Type Values Removed Values Added
First Time appeared Rustaurius
Rustaurius five Star Restaurant Reservations – Wordpress Booking Plugin
Wordpress
Wordpress wordpress
Vendors & Products Rustaurius
Rustaurius five Star Restaurant Reservations – Wordpress Booking Plugin
Wordpress
Wordpress wordpress

Thu, 30 Apr 2026 12:15:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Thu, 30 Apr 2026 09:45:00 +0000

Type Values Removed Values Added
Description The Five Star Restaurant Reservations plugin for WordPress is vulnerable to a payment bypass via PHP type juggling in versions up to, and including, 2.7.16 This is due to the valid_payment() function using a PHP loose comparison (==) between the attacker-controlled payment_id POST parameter and the booking's stripe_payment_intent_id property. When an unauthenticated attacker submits a request to the nopriv AJAX handler rtb_stripe_pmt_succeed before the Stripe payment intent has been created for a booking (i.e., before the JavaScript-triggered create_stripe_pmtIntnt() call has stored an intent ID in post meta), the stripe_payment_intent_id property on the booking object remains null. The comparison sanitize_text_field('') == null evaluates to TRUE in PHP loose comparison, causing the payment verification check to pass with zero actual payment. This makes it possible for unauthenticated attackers to mark any existing payment_pending booking as paid without completing a Stripe payment by submitting an empty payment_id parameter.
Title Five Star Restaurant Reservations <= 2.7.16 - Unauthenticated Payment Bypass via PHP Type Juggling in 'payment_id' Parameter
Weaknesses CWE-345
References
Metrics cvssV3_1

{'score': 5.3, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N'}


Subscriptions

Rustaurius Five Star Restaurant Reservations – Wordpress Booking Plugin
Wordpress Wordpress
cve-icon MITRE

Status: PUBLISHED

Assigner: Wordfence

Published:

Updated: 2026-04-30T12:04:55.235Z

Reserved: 2026-04-17T09:18:40.690Z

Link: CVE-2026-6498

cve-icon Vulnrichment

Updated: 2026-04-30T12:01:54.710Z

cve-icon NVD

Status : Deferred

Published: 2026-04-30T10:16:02.327

Modified: 2026-04-30T14:52:54.847

Link: CVE-2026-6498

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-01T08:21:28Z

Weaknesses