Description
The DoLogin Security plugin for WordPress is vulnerable to Authentication Bypass via Insufficient Randomness in all versions up to, and including, 4.3. The vulnerability exists because `dologin\s::rrand()` seeds the Mersenne Twister with `mt_srand((double) microtime() * 1000000)` — discarding the integer-seconds component of `microtime()` and constraining the seed to a range of approximately 10^6 values (~20 bits of entropy) — after which every character of the 32-character magic-link token is drawn sequentially with `mt_rand()`, making the entire token a deterministic function of that seed. Because `Pswdless::try_login()` is registered on the unauthenticated `init` hook, resolves the target account by the auto-increment numeric ID embedded in the `?dologin=<id>.<hash>` parameter, performs the hash comparison using a non-constant-time `!=` operator, and then calls `wp_set_auth_cookie()` directly — never passing through `wp_authenticate()` and therefore never triggering the plugin's own `Auth::_has_login_err()` lockout — an unauthenticated attacker can brute-force the ~10^6-candidate seed space to reconstruct an active passwordless login token and authenticate as any targeted user, including administrators, without a password. Exploitation requires that a valid, unexpired passwordless login link (active for up to 7 days) exists for the target account at the time of the attack, and that the numeric link ID is known or guessable from the auto-increment primary key.
Published: 2026-07-08
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

DoLogin Security for WordPress is susceptible to an authentication bypass because its random number generator is seeded with a truncated microtime value, yielding only about one million possible seeds. The resulting 32‑character magic‑link token is deterministically derived from this seed, and the plugin compares hashes using a non‑constant‑time operator. When an unauthenticated user requests the link via the \"dologin\" URL, the plugin resolves the target account ID, verifies the hash, and calls wp_set_auth_cookie without passing through WordPress’s standard authentication flow. This allows a malicious actor to brute‑force the small seed space, reconstruct a valid token, and log in as any user—including administrators—without knowing a password.

Affected Systems

Any WordPress website that has installed the DoLogin Security plugin version 4.3 or earlier is affected. Sites must have at least one active passwordless login link for a user at the time of the attack. Users identified by an auto‑incrementing numeric primary key benefit because the link identifier can be guessed or discovered.

Risk and Exploitability

With a CVSS score of 8.8 the vulnerability carries high severity. The EPSS score of less than 1% indicates a low yet non‑negligible probability of exploitation in the wild, and it is currently not listed in the CISA KEV catalog. An attacker can launch the exploit using an unauthenticated HTTP request, guessing or obtaining the numeric link ID, and enumerating the small seed space to produce a valid token. No additional system privileges or network access are required beyond the web interface, so the risk is immediate for any attacker with internet access to the site. The vulnerability bypasses normal password policies and lockout mechanisms, which can enable persistent compromise.

Generated by OpenCVE AI on July 26, 2026 at 18:30 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the DoLogin Security plugin to a release newer than 4.3 where the PRNG seeding and token validation have been corrected.
  • If the plugin must remain available, limit the passwordless login expiration window (e.g., to a few hours) so that the token validity period is minimized.
  • Disable or restrict passwordless login for administrative accounts until the fix is applied, thereby preventing the creation of active tokens for privileged users.

Generated by OpenCVE AI on July 26, 2026 at 18:30 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 08 Jul 2026 13:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Wed, 08 Jul 2026 07:15:00 +0000

Type Values Removed Values Added
First Time appeared Wordpress
Wordpress wordpress
Wpdo5ea
Wpdo5ea dologin Security
Vendors & Products Wordpress
Wordpress wordpress
Wpdo5ea
Wpdo5ea dologin Security

Wed, 08 Jul 2026 05:45:00 +0000

Type Values Removed Values Added
Description The DoLogin Security plugin for WordPress is vulnerable to Authentication Bypass via Insufficient Randomness in all versions up to, and including, 4.3. The vulnerability exists because `dologin\s::rrand()` seeds the Mersenne Twister with `mt_srand((double) microtime() * 1000000)` — discarding the integer-seconds component of `microtime()` and constraining the seed to a range of approximately 10^6 values (~20 bits of entropy) — after which every character of the 32-character magic-link token is drawn sequentially with `mt_rand()`, making the entire token a deterministic function of that seed. Because `Pswdless::try_login()` is registered on the unauthenticated `init` hook, resolves the target account by the auto-increment numeric ID embedded in the `?dologin=<id>.<hash>` parameter, performs the hash comparison using a non-constant-time `!=` operator, and then calls `wp_set_auth_cookie()` directly — never passing through `wp_authenticate()` and therefore never triggering the plugin's own `Auth::_has_login_err()` lockout — an unauthenticated attacker can brute-force the ~10^6-candidate seed space to reconstruct an active passwordless login token and authenticate as any targeted user, including administrators, without a password. Exploitation requires that a valid, unexpired passwordless login link (active for up to 7 days) exists for the target account at the time of the attack, and that the numeric link ID is known or guessable from the auto-increment primary key.
Title DoLogin Security <= 4.3 - Unauthenticated Authentication Bypass via Insufficient Randomness via 'dologin' Parameter Weak PRNG Token
Weaknesses CWE-338
References
Metrics cvssV3_1

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


Subscriptions

Wordpress Wordpress
Wpdo5ea Dologin Security
cve-icon MITRE

Status: PUBLISHED

Assigner: Wordfence

Published:

Updated: 2026-07-08T12:44:30.272Z

Reserved: 2026-07-02T17:42:28.811Z

Link: CVE-2026-14495

cve-icon Vulnrichment

Updated: 2026-07-08T12:44:27.127Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-26T18:45:03Z

Weaknesses
  • CWE-338

    Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG)