CVE-2026-42731

miniOrange OTP Login, Verification and SMS Notifications <= 5.4.9 - Unauthenticated Privilege Escalation

criticalIncorrect Privilege Assignment
9.8
CVSS Score
9.8
CVSS Score
critical
Severity
5.5.0
Patched in
3d
Time to patch

Description

The miniOrange OTP Login, Verification and SMS Notifications plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 5.4.9. This makes it possible for unauthenticated attackers to elevate their privileges to that of an administrator.

CVSS Vector Breakdown

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
High
Confidentiality
High
Integrity
High
Availability

Technical Details

Affected versions<=5.4.9
PublishedMay 24, 2026
Last updatedMay 26, 2026

What Changed in the Fix

Changes introduced in v5.5.0

Loading patch diff...

Source Code

WordPress.org SVN
Research Plan
Unverified

` This is an unauthenticated action. Is there any other frontend script? `autoload.php` defines `VALIDATION_JS_URL`. `MoOtpSpamIntegration` enqueues `mosp_enqueue_frontend_scripts`. Let's assume the PoC agent will: 1. Create a page with a miniOrange shortcode (e.g., `[mo_verify_otp]…

Show full research plan

This is an unauthenticated action. Is there any other frontend script? autoload.phpdefinesVALIDATION_JS_URL. MoOtpSpamIntegrationenqueuesmosp_enqueue_frontend_scripts`.

Let's assume the PoC agent will:

  1. Create a page with a miniOrange shortcode (e.g., [mo_verify_otp]) to ensure all scripts are loaded.
  2. Visit the page and extract the nonce.
  3. Send the malicious POST request.

Payload to elevate privileges:

  • option=mo_customer_validation_settings
  • _wpnonce=[nonce]
  • users_can_register=1
  • default_role=administrator
    If the plugin only allows saving its own options:
  • mo_customer_validation_wp_default_role=administrator (guessed name)
    Actually, if the plugin is vulnerable to unauthenticated option updates, it's usually because it doesn't filter the keys in update_option.

Let's verify the JS variable name for the nonce.
In class-moactionhandlerhandler.php:
$this->nonce = 'mo_admin_actions';
In controllers/titlebar.php:
$nonce = $admin_handler->get_nonce_value();
The titlebar is admin-only.

However, many miniOrange plugins have a "Contact Us" or "Support" form

Check if your site is affected.

Run a free security audit to detect vulnerable plugins, outdated versions, and misconfigurations.