CVE-2026-119096
9.8 CRITICALPublished 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.
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
- https://plugins.trac.wordpress.org/browser/uncanny-learndash-toolkit/tags/3.8.2/src/classes/frontend-login-plus.php#L3357
- https://plugins.trac.wordpress.org/browser/uncanny-learndash-toolkit/tags/3.8.2/src/classes/frontend-login-plus.php#L3446
- https://plugins.trac.wordpress.org/browser/uncanny-learndash-toolkit/tags/3.8.2/src/classes/frontend-login-plus.php#L3527
- https://plugins.trac.wordpress.org/browser/uncanny-learndash-toolkit/tags/3.8.2/src/classes/frontend-login-plus.php#L3559
- https://plugins.trac.wordpress.org/changeset/3773997/uncanny-learndash-toolkit/trunk/src/classes/frontend-login-plus.php
- https://www.wordfence.com/threat-intel/vulnerabilities/id/592b61a1-9ac9-4817-b154-1e39e50d8010?source=cve
Source data: NVD (nvd.nist.gov), public domain. Exploit-DB.ai adds local AI analysis for defensive use only.
Related CVEs
- HIGHCVE-2026-104759
- HIGHCVE-2026-104797
- CRITICALCVE-2026-104803
- CRITICALCVE-2026-106013
- CRITICALCVE-2026-110653
- CRITICALCVE-2026-110956
- CRITICALCVE-2026-14378
- HIGHCVE-2026-19125
Related by shared AI tags and CWE weakness class. Browse the full archive.