← Back to search

CVE-2026-119096

9.8 CRITICAL

Published 2026-10-31 · Updated 2026-10-31

AI risk analysis

Summary
The Uncanny Toolkit for LearnDash plugin (up to v3.8.2) contains an authentication bypass vulnerability (CWE-287) where the `email` parameter in `uo_login_action()` is parsed inconsistently: the account-verification gate uses the raw email string with `get_user_by()`, while `wp_signon()` later sanitizes it via `sanitize_user()`. This mismatch causes the verification check to fail and be skipped, allowing attackers with valid credentials for unverified or suspended accounts to bypass approval/suspension controls and obtain a logged-in session.
Exploitability
Exploitation is trivial: an attacker needs only network access to the site and knowledge of a target account's credentials; the required nonce is publicly retrievable via the unauthenticated `ult-refresh-nonce` endpoint.
Blast radius
Any unauthenticated attacker with valid credentials for a suspended or unverified account—including administrative accounts—can gain full authenticated access, potentially leading to full site compromise, data exfiltration, or privilege escalation.
Detection
No reliable host or network indicator is derivable from the published description.
Prioritized remediation
Upgrade to Uncanny Toolkit for LearnDash version 3.8.3 or later, which resolves the parser-differential flaw by ensuring consistent sanitization and validation of the `email` parameter across both verification and authentication paths.
auth-bypasswordpresspluginauthentication-flawcwe-287

Analysis generated locally by garnet-coder (no data left the box). AI-assisted — verify against primary sources before acting.

NVD description

The Uncanny Toolkit for LearnDash plugin for WordPress is vulnerable to Authentication Bypass in versions up to, and including, 3.8.2 via the `email` parameter of the `uo_login_action()` function. This is due to a parser-differential flaw in which the plugin's account-verification gate resolves the submitted `email` value using the raw, unsanitized string passed to `get_user_by()`, while the subsequent `wp_signon()` call relies on WordPress core's internal `sanitize_user()` to strip appended junk characters — causing the gate lookup to fail and be skipped entirely while the real account is still resolved and authenticated. This makes it possible for unauthenticated attackers to log in to unverified or administrator-suspended accounts whose credentials they already possess, obtaining a valid `wordpress_logged_in` session cookie and defeating the plugin's account-approval and account-suspension controls. The nonce required to reach the handler is freely obtainable in the same request from the unauthenticated `ult-refresh-nonce` endpoint, making exploitation trivial for any attacker with network access to the site and knowledge of a target account's credentials.

CVSS vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Weaknesses

CWE-287

All references

Source data: NVD (nvd.nist.gov), public domain. Exploit-DB.ai adds local AI analysis for defensive use only.

Related CVEs

Related by shared AI tags and CWE weakness class. Browse the full archive.