
Advisory for CVE-2026-77771, a 2FA bypass in the miniOrange WordPress plugin via session-scoped OTP lockout, with impact analysis and remediation guidance.
An authentication bypass in the miniOrange Two-Factor Authentication plugin for WordPress allows an attacker who already holds a victim's valid password to brute-force the second factor without limit, defeating 2FA entirely.
| CVE ID | CVE-2026-77771 |
| Vulnerability type | Authentication Bypass (AUTHBYPASS) |
| CWE | CWE-287: Improper Authentication |
| OWASP Top 10 (2017) | A2: Broken Authentication and Session Management |
| CVSS 3.1 score | 7.5 (High) |
| CVSS 3.1 vector | AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Researcher | Pervin Zahidli (pervinzahidli) |
| Status | Fixed by vendor |
| Product | Affected versions | Fixed in |
|---|---|---|
| miniOrange Two-Factor Authentication — Free | < 6.3.1 | 6.3.1 |
| miniOrange Two-Factor Authentication — Pro |
The plugin enforces a limit on failed second-factor attempts, but the counter that backs this limit is not scoped to the account under attack. Instead it is keyed to an identifier that is supplied by the client and can be changed freely on each request.
Because the attacker controls the key, every request can be made to land in a fresh counter bucket. The lockout therefore never accumulates against the targeted user, and the number of one-time-passcode guesses an attacker may make is effectively unbounded.
A second validation endpoint in the same plugin performs no attempt limiting at all, so the second factor can be attacked through that path even without manipulating the identifier.
The practical result is that the OTP — a short numeric secret with a small keyspace — can be enumerated within its validity window, and the second authentication factor provides no meaningful protection.
PR:L and AC:H in the CVSS vector.An attacker in possession of leaked, phished, or reused credentials can complete authentication as the victim despite 2FA being enabled. Where the victim is an administrator, this results in full compromise of the WordPress installation — confidentiality, integrity, and availability are all affected.
A proof of concept is intentionally not published here. The issue is fixed upstream; details sufficient to reproduce it are available to the vendor and to WPScan.
High-level reproduction outline:
wp-login.php with valid credentials for an account that has the plugin's second factor enabled.Update the plugin to version 6.3.1 (Free) or 19.3 (Pro) or later.
Defence-in-depth measures for operators who cannot update immediately:
wp-login.php and to the plugin's AJAX/REST validation endpoints by IP where feasible.Guidance for developers implementing a second factor:
| Date | Event |
|---|---|
| 2026-09-08 | Publicly published |
| 2026-09-08 | Added to WPScan Vulnerability Database |
| 2026-09-09 | Entry last updated |
e1e57673-18cb-4157-9d58-547af7101b04Discovered and reported by Pervin Zahidli — https://www.zahidlipervin.site/
This document is published for defensive and educational purposes. The vulnerability described here is fixed upstream. Testing it against systems you do not own or have explicit written authorisation to assess is illegal.
< 19.3| 19.3 |