Every CVE Search/ Get API key

CVE-2026-12215

OTP Login & Register Woocommerce <= 2.7.2 - Unauthenticated Authentication Bypass via Brute Force

5.3 Medium

The OTP Login & Register Woocommerce plugin for WordPress is vulnerable to Authentication Bypass via OTP Brute Force in all versions up to, and including, 2.7.2. The vulnerability exists because the OTP rate-limit attempt counter in process_otp_form is keyed exclusively on the attacker-controlled xoo_ml_user_ip_data cookie's ip_address field, allowing unlimited counter resets by simply rotating the cookie, while the OTP itself is generated with PHP's non-cryptographic rand() function over a default space of only 9,000 possible values (1000–9999), and both the OTP issuance endpoint (xoo_ml_login_with_otp) and verification endpoint (xoo_ml_otp_form_submit) are registered as unauthenticated wp_ajax_nopriv actions with no nonce or capability checks. This makes it possible for unauthenticated attackers to brute-force the OTP for any registered account and obtain a full WordPress authentication session — including for administrator accounts — via wp_set_auth_cookie() in login_user_with_otp(). Exploitation requires the attacker to know the target user's registered phone number, which is used to trigger OTP issuance via the unauthenticated xoo_ml_login_with_otp endpoint.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
Low
Availability
None

Exploit likelihood

0.56%Up 0.2 points since Sep 11, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.3

OTP Login & Register Woocommerce <= 2.7.2 - Unauthenticated Authentication Bypass via Brute Force

The OTP Login & Register Woocommerce plugin for WordPress is vulnerable to Authentication Bypass via OTP Brute Force in all versions up to, and including, 2.7.2. The vulnerability exists because the OTP rate-limit attempt counter in process_otp_form is keyed exclusively on the attacker-controlled xoo_ml_user_ip_data cookie's ip_address field, allowing unlimited counter resets by simply rotating the cookie, while the OTP itself is generated with PHP's non-cryptographic rand() function over a default space of only 9,000 possible values (1000–9999), and both the OTP issuance endpoint (xoo_ml_login_with_otp) and verification endpoint (xoo_ml_otp_form_submit) are registered as unauthenticated wp_ajax_nopriv actions with no nonce or capability checks. This makes it possible for unauthenticated attackers to brute-force the OTP for any registered account and obtain a full WordPress authentication session — including for administrator accounts — via wp_set_auth_cookie() in login_user_with_otp(). Exploitation requires the attacker to know the target user's registered phone number, which is used to trigger OTP issuance via the unauthenticated xoo_ml_login_with_otp endpoint.

Record
CVE-2026-12215
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weakness
CWE-434
Updated
2026-11-02
EUVDEUVD-2026-75928 5.3

The OTP Login & Register Woocommerce plugin for WordPress is vulnerable to Authentication Bypass via OTP Brute Force in all versions up to, and including, 2.7.2. The vulnerability exists because the OTP rate-limit attempt counter in process_otp_form is keyed exclusively on the attacker-controlled xoo_ml_user_ip_data cookie's ip_address field, allowing unlimited counter resets by simply rotating the cookie, while the OTP itself is generated with PHP's non-cryptographic rand() function over a default space of only 9,000 possible values (1000–9999), and both the OTP issuance endpoint (xoo_ml_login_with_otp) and verification endpoint (xoo_ml_otp_form_submit) are registered as unauthenticated wp_ajax_nopriv actions with no nonce or capability checks. This makes it possible for unauthenticated attackers to brute-force the OTP for any registered account and obtain a full WordPress authentication session — including for administrator accounts — via wp_set_auth_cookie() in login_user_with_otp(). Exploitation requires the attacker to know the target user's registered phone number, which is used to trigger OTP issuance via the unauthenticated xoo_ml_login_with_otp endpoint.

Record
EUVD-2026-75928
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-26m4-chch-cqh3 5.3

The OTP Login & Register Woocommerce plugin for WordPress is vulnerable to Authentication Bypass...

The OTP Login & Register Woocommerce plugin for WordPress is vulnerable to Authentication Bypass via OTP Brute Force in all versions up to, and including, 2.7.2. The vulnerability exists because the OTP rate-limit attempt counter in process_otp_form is keyed exclusively on the attacker-controlled xoo_ml_user_ip_data cookie's ip_address field, allowing unlimited counter resets by simply rotating the cookie, while the OTP itself is generated with PHP's non-cryptographic rand() function over a default space of only 9,000 possible values (1000–9999), and both the OTP issuance endpoint (xoo_ml_login_with_otp) and verification endpoint (xoo_ml_otp_form_submit) are registered as unauthenticated wp_ajax_nopriv actions with no nonce or capability checks. This makes it possible for unauthenticated attackers to brute-force the OTP for any registered account and obtain a full WordPress authentication session — including for administrator accounts — via wp_set_auth_cookie() in login_user_with_otp(). Exploitation requires the attacker to know the target user's registered phone number, which is used to trigger OTP issuance via the unauthenticated xoo_ml_login_with_otp endpoint.

Record
GHSA-26m4-chch-cqh3
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weakness
CWE-434
Updated
2026-11-02
NVD 5.3

The OTP Login & Register Woocommerce plugin for WordPress is vulnerable to Authentication Bypass via OTP Brute Force in all versions up to, and including, 2.7.2. The vulnerability exists because the OTP rate-limit attempt counter in process_otp_form is keyed exclusively on the attacker-controlled xoo_ml_user_ip_data cookie's ip_address field, allowing unlimited counter resets by simply rotating the cookie, while the OTP itself is generated with PHP's non-cryptographic rand() function over a default space of only 9,000 possible values (1000–9999), and both the OTP issuance endpoint (xoo_ml_login_with_otp) and verification endpoint (xoo_ml_otp_form_submit) are registered as unauthenticated wp_ajax_nopriv actions with no nonce or capability checks. This makes it possible for unauthenticated attackers to brute-force the OTP for any registered account and obtain a full WordPress authentication session — including for administrator accounts — via wp_set_auth_cookie() in login_user_with_otp(). Exploitation requires the attacker to know the target user's registered phone number, which is used to trigger OTP issuance via the unauthenticated xoo_ml_login_with_otp endpoint.

Record
CVE-2026-12215
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weakness
CWE-434
Updated
2026-11-02

Affected products

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-12215 is a medium vulnerability (CVSS 5.3) in Xootix Otp Login & Register Woocommerce, published September 11, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.56%, the 47th percentile. No source names a fixed version.

References

MoveEnter Open