Someone left the back door unlocked, but most houses on the block never installed that door
CVE-2026-15826 is a type confusion flaw (CWE-704) in the auto-login mechanism of the User Profile Builder WordPress plugin, versions up to and including all 3.x releases before 3.16.5. When a site has the post-registration auto-login feature enabled, an unauthenticated attacker can exploit a type confusion in the login-binding logic to hijack an authenticated session for *any* existing user — including administrators. This gives full WordPress admin access: plugin installation (webshell), database access, and content manipulation. The plugin has approximately 40,000 active installations globally.
The vendor's CVSS 9.8 CRITICAL rating accurately reflects the *technical* impact: unauthenticated, network-accessible, no user interaction, full CIA compromise. However, it overstates real-world risk for most enterprise defenders. The auto-login feature that enables this attack is a non-default configuration — sites that never turned it on are simply not vulnerable. This is the third authentication bypass in this plugin's auto-login flow in 2026 alone (following CVE-2026-15368 fixed in 3.16.4, and CVE-2025-15030 fixed in 3.15.2), which suggests the feature is architecturally fragile but also that the affected population is limited to sites that actively use it. Combined with the relatively small install base of ~40K sites, this is a HIGH-severity issue for affected deployments, not the fleet-wide CRITICAL the CVSS label implies.
4 steps from start to impact.
Identify target running vulnerable plugin
/register/, /edit-profile/) that can be identified through passive crawling or tools like WPScan. Shodan/FOFA queries for WordPress with specific plugin signatures can narrow targeting.- Target runs WordPress with User Profile Builder plugin < 3.16.5
- Target site is internet-accessible
- Only ~40,000 active installations globally
- Enterprise WordPress deployments often use WAFs that may block automated scanning
wp-json/wp/v2/plugins (if exposed)Confirm auto-login is enabled
- Auto-login after registration feature must be enabled (non-default)
- Many installations use email confirmation workflows instead of auto-login
- Enterprise WordPress sites typically require admin approval for new registrations
Craft type-confused registration request
- Knowledge of target admin username (typically 'admin' or discoverable via
/?author=1enumeration)
- Sites with changed default admin usernames add minor reconnaissance overhead
- CAPTCHA or anti-bot measures on registration forms may slow automated exploitation
Obtain admin session
- Successful type confusion exploitation in step 3
- Two-factor authentication on the WordPress admin account would not necessarily prevent this (session is already authenticated)
- Some hardened WordPress configs restrict admin panel access by IP
The supporting signals.
| In-the-Wild Exploitation | No confirmed in-the-wild exploitation as of 2026-08-15. Not on CISA KEV. However, the closely related CVE-2025-15030 (same plugin, same auth bypass class) saw rapid mass exploitation after disclosure. |
|---|---|
| Proof of Concept | No public PoC identified yet. Disclosed today (2026-08-15). Given the pattern — CVE-2025-15030 and CVE-2026-15368 both had PoCs within days — expect weaponization within 1–2 weeks. |
| EPSS Score | Not yet scored (disclosed today). Prior auth bypass in this plugin (CVE-2025-15030) reached EPSS >0.90 within 30 days of disclosure. |
| KEV Status | Not listed as of 2026-08-15. CVE-2025-15030 was added to KEV after mass exploitation campaigns were observed. |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 9.8. Unauthenticated, no interaction, full CIA impact. Vector is technically accurate but does not capture the non-default config prerequisite. |
| Affected Versions | User Profile Builder (free and Pro) all versions before 3.16.5. This includes the entire 3.x branch. |
| Fixed Version | 3.16.5 (free), likely same for Pro/Unlimited editions. Current latest is 3.16.6 which includes additional security fixes. |
| Install Base | ~40,000 active WordPress installations per wordpress.org. Relatively small footprint compared to major plugins (Yoast: 5M+, WooCommerce: 5M+). |
| Scanning/Exposure | WordPress sites are internet-facing by nature. ~13,600 sites using Profile Builder were identified in one researcher's PwnPress scan. Shodan/Censys can fingerprint WordPress but not easily identify specific plugin presence without active probing. |
| Researcher/Reporter | Credited to Ananda Dhakal and the Patchstack team based on related advisories. Cozmoslabs (vendor) has been responsive to reports, shipping fixes within days of disclosure. |
noisgate verdict.
Downgraded from CRITICAL to HIGH because the exploitable attack path requires the non-default auto-login configuration to be enabled, which materially reduces the reachable population below the 40K install base. The unauthenticated, zero-interaction nature of the flaw on an internet-facing component prevents further downgrade.
Why this verdict
- Non-default prerequisite narrows population: The auto-login feature that exposes the type confusion is not enabled by default. Sites using email confirmation or admin approval workflows — the more common enterprise configuration — are not reachable. This is a compounding downward pressure from the 9.8 baseline.
- Small install base: ~40,000 active installations globally. In an enterprise managing 10,000 hosts, the probability of running this specific plugin is low, but if present, the impact is site-critical.
- Role multiplier: WordPress sites occupy the *typical role* tier (line-of-business web application). They are NOT identity providers, domain controllers, hypervisors, CI/CD, or backup infrastructure. Blast radius is limited to the individual WordPress instance — admin takeover yields control of one site, not domain/fleet compromise. No high-value role floor applies.
- No KEV, no PoC yet: Disclosed today with no confirmed exploitation or public weaponization. However, the prior CVE-2025-15030 in the same plugin was rapidly weaponized, so this grace period is likely short-lived.
- Pattern of fragility: This is the *third* auth bypass in this plugin's auto-login flow in 2026. The code path is architecturally weak, and attackers familiar with CVE-2025-15030 exploitation will recognize the attack surface immediately.
Why not higher?
CRITICAL would require either active exploitation (KEV), a high-value role multiplier with fleet-scale blast radius, or removal of the non-default configuration prerequisite. WordPress with a niche registration plugin is not infrastructure-tier software. The blast radius caps at individual site takeover, not domain or fleet compromise. The non-default auto-login requirement meaningfully reduces the exploitable population below the already-small 40K install base.
Why not lower?
MEDIUM would understate the risk for sites that *do* have auto-login enabled. For those sites, this is an unauthenticated, zero-click, zero-interaction admin takeover on an internet-facing endpoint — the textbook definition of a high-severity web vulnerability. The historical pattern of rapid weaponization for this exact plugin (CVE-2025-15030 mass exploitation) means the window before active exploitation is narrow. Additionally, no authentication or network position is required — any internet user can attempt exploitation.
What to do — in priority order.
- Disable auto-login after registration immediately — Navigate to Profile Builder → Settings → General and disable the automatic login feature. This eliminates the vulnerable code path entirely. This is the fastest mitigation — deploy within the noisgate 30-day mitigation SLA for HIGH, but given the exploitation pattern, do it this week.
- Update to Profile Builder 3.16.5 or later — The vendor patch is available now. Update via WordPress admin dashboard or WP-CLI (
wp plugin update profile-builder). Version 3.16.6 is current and includes additional fixes. Deploy within the noisgate 180-day remediation SLA for HIGH. - Restrict registration form access via WAF rules — If you cannot patch or disable auto-login immediately, use your WAF (Cloudflare, Sucuri, Wordfence) to block or rate-limit POST requests to the plugin's registration endpoints. This buys time but is not a complete fix.
- Enable WordPress admin IP allowlisting — Restrict
/wp-admin/and/wp-login.phpaccess to known admin IPs. Even if an attacker obtains an admin session cookie, they cannot use it if the admin panel is IP-restricted. Most enterprise WordPress deployments should already have this. - Audit for compromise indicators — Check WordPress user tables for unexpected admin accounts, review plugin installation logs for unfamiliar plugins, and inspect
wp-content/uploads/for webshells. Use WP-CLI:wp user list --role=administratorto enumerate current admins.
- WordPress two-factor authentication plugins — The type confusion creates a fully authenticated session server-side. The session cookie is issued without ever hitting the login form, so 2FA on
wp-login.phpis bypassed entirely. - CAPTCHA on registration forms — While it adds friction to automated exploitation, a determined attacker can solve CAPTCHAs manually or use solving services. It slows but does not prevent exploitation.
- Changing the default admin username — The attacker can enumerate WordPress usernames via
/?author=1or the REST API (/wp-json/wp/v2/users/). Obscurity provides seconds of delay, not protection.
Crowdsourced verification payload.
Run this on any host with curl and network access to the target WordPress site. Usage: bash check_profile_builder.sh https://your-wordpress-site.com — no special privileges required, read-only check.
#!/bin/bash
# CVE-2026-15826 - User Profile Builder Type Confusion Auth Bypass Check
# Checks if the target WordPress site runs a vulnerable version of Profile Builder
# Usage: bash check_profile_builder.sh <wordpress_url>
# Exit codes: 0=VULNERABLE, 1=PATCHED, 2=UNKNOWN
set -euo pipefail
TARGET="${1:?Usage: $0 <wordpress_url>}"
TARGET="${TARGET%/}"
echo "[*] Checking User Profile Builder version on $TARGET"
# Method 1: Check readme.txt (most reliable for free plugins)
README=$(curl -sL --max-time 10 "$TARGET/wp-content/plugins/profile-builder/readme.txt" 2>/dev/null || true)
if [ -z "$README" ]; then
# Method 2: Try via plugin info in page source
PAGE=$(curl -sL --max-time 10 "$TARGET" 2>/dev/null || true)
VERSION=$(echo "$PAGE" | grep -oP 'profile-builder[^"]*ver=\K[0-9.]+' | head -1)
if [ -z "$VERSION" ]; then
echo "[?] UNKNOWN - Could not detect Profile Builder plugin on $TARGET"
echo " Plugin may not be installed, or version detection is blocked."
exit 2
fi
else
VERSION=$(echo "$README" | grep -iP '^Stable tag:\s*' | head -1 | grep -oP '[0-9]+\.[0-9]+\.?[0-9]*')
if [ -z "$VERSION" ]; then
echo "[?] UNKNOWN - Found readme.txt but could not parse version"
exit 2
fi
fi
echo "[*] Detected Profile Builder version: $VERSION"
# Compare version - vulnerable if < 3.16.5
FIXED="3.16.5"
version_lt() {
[ "$(printf '%s\n' "$1" "$2" | sort -V | head -n1)" = "$1" ] && [ "$1" != "$2" ]
}
if version_lt "$VERSION" "$FIXED"; then
echo "[!] VULNERABLE - Profile Builder $VERSION is below fixed version $FIXED"
echo " CVE-2026-15826: Auth Bypass via Type Confusion in Auto-Login"
echo " Action: Update to $FIXED+ and disable auto-login feature immediately"
exit 0
else
echo "[+] PATCHED - Profile Builder $VERSION is >= $FIXED"
exit 1
fiIf you remember one thing.
wp plugin list across your WordPress fleet Monday morning to identify affected instances, disable auto-login on all of them, and schedule the update for the same maintenance window.Sources
- WPScan – Profile Builder Vulnerabilities
- Patchstack – Profile Builder Auth Bypass Advisory
- WordPress.org – User Profile Builder Plugin
- FreshySites – Profile Builder CVE-2026-3139 Bulletin
- SicuraNext – Profile Builder Pro Object Injection Research
- Cozmoslabs – Profile Builder Changelog
- CYFIRMA – WordPress Auth Bypass Analysis
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.