This is a front-door lock that treats any random key as valid if you say the homeowner’s name
CVE-2026-8181 is an authentication bypass in the Burst Statistics WordPress plugin affecting versions 3.4.0 through 3.4.1.1, fixed in 3.4.2. The flaw sits in the plugin’s MainWP-related REST authentication path: if a request carries the X-BurstMainWP: 1 header and a Basic Auth username for a valid admin, the plugin can treat a failed application-password check as success and call wp_set_current_user() for that administrator for the life of the request.
The vendor’s 9.8 CRITICAL rating is basically fair here. Yes, the reachable population is narrowed to sites running this specific plugin, but once that condition is true the rest of the chain is thin: attacker position is unauthenticated remote, there is no user interaction, the only meaningful prerequisite is knowing an admin username, and real-world WordPress deployments often leak or guess that easily enough. Add active exploitation telemetry and this stays in the top bucket.
5 steps from start to impact.
Find a public WordPress site running Burst Statistics
burst-statistics plugin and version by reading exposed plugin metadata, changelogs, asset paths, or scanner fingerprints. Tenable and other scanners treat this as largely version-based detection because the bug is tied to a narrow plugin release band rather than a generic WordPress core condition.- Target WordPress site is internet reachable
- Burst Statistics plugin is installed and active
- Installed version is between
3.4.0and3.4.1.1
- Only sites with this plugin are affected
- Some operators hide plugin metadata or block passive fingerprinting
- Version disclosure can be incomplete on hardened sites
Enumerate one administrator username
- At least one administrator account exists
- Attacker can discover or guess a valid admin login name
- Some sites restrict user enumeration through REST or author pages
- Randomized admin usernames slow opportunistic spray-and-pray abuse
/wp-json/, author pages, and login flows tied to username discovery.Send a forged MainWP-style REST request
X-BurstMainWP: 1 plus an Authorization: Basic ... header containing the valid admin username and any arbitrary password. Burst’s MainWP proxy path invokes wp_authenticate_application_password() but only rejects WP_Error; a null return can slip through as if auth succeeded.- Target is processing REST requests
- Burst Statistics vulnerable code path is present
- Attacker can set custom headers
- Some WAFs or reverse proxies may block unusual auth/header combinations
- Custom edge filtering can drop
X-BurstMainWPrequests from the internet
/wp-json/ carrying both X-BurstMainWP: 1 and a Basic Auth header from untrusted IPs.Impersonate the administrator for that request
wp_set_current_user() with that admin’s ID. At that point WordPress capability checks see a fully authenticated admin, even on core REST routes unrelated to Burst.- Supplied username maps to a real admin user
- Plugin code reaches the vulnerable
wp_set_current_user()call
- If the username is valid but not an admin with required capability, impact drops
- A patched plugin or properly scoped auth check kills the chain immediately
Create a rogue admin or perform admin actions
POST /wp-json/wp/v2/users to create a new administrator account, or perform other administrative actions allowed through REST. This converts a one-request impersonation bug into durable site takeover.- Target permits the relevant REST admin action
- WordPress user-creation or equivalent privileged capability is available
- Some sites limit REST user creation or use additional hardening around admin APIs
- Monitoring that alerts on new admin creation can catch the follow-on action
POST /wp-json/wp/v2/users, unexpected admin account creation, and plugin/theme installation events from previously unseen IPs.The supporting signals.
| In-the-wild status | Yes, exploitation evidence exists. Wordfence reported attack traffic soon after disclosure, and BleepingComputer cited 7,400+ blocked attacks in a 24-hour window. Later Wordfence community telemetry referenced 88,000+ blocked requests across 376 sites between 2026-05-13 and 2026-05-21. |
|---|---|
| PoC availability | Available enough for copycats. Wordfence says it validated a proof of concept on 2026-05-08; Tenable marks exploit availability as true; public third-party PoC/lab material is indexed by Sploitus. |
| EPSS | EPSS supplied in your intel is 0.04729 (~4.7% next-30-day probability). That is not huge in absolute terms, but for a fresh WordPress auth bypass with observed attack traffic, telemetry matters more than EPSS here. |
| KEV status | Not listed in the CISA KEV catalog as of this assessment, despite public exploitation reporting. |
| CVSS vector reality check | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H is directionally right: unauthenticated remote, low complexity, no user interaction, and full admin-level impact. The only meaningful real-world downward pressure is population scope: only sites running this plugin are affected. |
| Affected versions | 3.4.0 through 3.4.1.1. Wordfence ties introduction to the MainWP/application-password changes added in the 3.4.0 line. |
| Fixed versions | Upgrade to 3.4.2 or later. WordPress.org changelog shows the security fix landing on 2026-05-12; later 3.4.3 and 3.5.0 remain beyond the vulnerable band. No distro backport channel is relevant here; this is a WordPress plugin update. |
| Exposure and install base | WordPress.org lists 200,000+ active installations. That is a big enough internet population for opportunistic scanning, even though it is much smaller than core WordPress or ultra-common plugins. |
| Scanner and detection coverage | Tenable ships a version-based web-app check (plugin 115244) and notes it relies on self-reported versioning rather than safe exploitation. Network detection should key on X-BurstMainWP: 1 plus Basic Auth on /wp-json/. |
| Disclosure and researchers | Wordfence says PRISM discovered it on 2026-05-08, vendor acknowledgement happened 2026-05-11, patch released 2026-05-12, Wordfence public advisory 2026-05-13, and NVD published the CVE on 2026-05-14. Credited researchers: Chloe Chamberland and PRISM. |
noisgate verdict.
The decisive factor is that this is still unauthenticated remote admin takeover with no prior foothold, and the remaining prerequisite—knowing an admin username—is usually a speed bump, not a wall, on public WordPress estates. Active exploitation evidence removes any comfort you might take from the plugin-specific exposure population.
Why this verdict
- Baseline stays high: vendor
9.8starts from the right place because attacker position is *unauthenticated remote* and successful exploitation yields effective administrator control. - Prerequisite audit only trims a little: the main narrowing factor is install base—only sites running Burst Statistics
3.4.0–3.4.1.1are exposed—so this is not a universal WordPress emergency. - Username knowledge is weak friction: needing one valid admin username sounds meaningful on paper, but in practice WordPress usernames are often enumerable or guessable, especially on public marketing sites and small agency-managed estates.
- No prior compromise stage required: there is no internal-network, authenticated-user, or privileged-role prerequisite. That keeps this out of the 'post-initial-access' bucket and prevents a downgrade.
- Modern controls may help but are uneven: a tuned WAF can block the header/auth pattern, and Wordfence users got protection early, but many sites will not have those controls deployed or tuned before scanning starts.
- Exploitation evidence is the amplifier: public reporting of live attack traffic means this has moved from theoretical bug to operational takeover path.
Why not higher?
There is some real-world narrowing: only sites running a specific plugin release line are affected, and exploitation still needs a valid admin username. This is not the kind of ubiquitous infrastructure bug that instantly lights up every edge scanner on the internet. 9.7 instead of a hard 10 reflects that bounded population.
Why not lower?
A downgrade would require meaningful chain friction such as authentication, internal-only reachability, unusual configuration, or a requirement for an already-compromised user role. None of that applies here. If the plugin is present and vulnerable, this is an internet-reachable path to admin takeover with observed abuse.
What to do — in priority order.
- Block
X-BurstMainWPfrom the public internet — At the WAF, reverse proxy, or web server layer, deny requests carryingX-BurstMainWP: 1unless they originate from explicitly trusted management infrastructure. Because exploitation evidence exists, deploy this immediately, within hours as a temporary barrier while patching catches up. - Patch Burst Statistics to
3.4.2+— This is the actual fix for the broken auth logic. For actively exploited internet-facing sites, do it immediately, within hours; for the broader fleet, this still falls under the noisgate remediation SLA of ≤90 days because the verdict remains CRITICAL. - Disable the plugin where unused — If a site does not need Burst Statistics, deactivating and removing it collapses the attack surface faster than waiting on normal change windows. Because attackers are already probing, unused instances should be disabled within hours.
- Alert on REST user creation — Instrument web, WordPress, and SIEM telemetry for
POST /wp-json/wp/v2/users, unexpected administrator creation, and admin actions from previously unseen source IPs. Stand this up within hours for exposed sites because post-exploit persistence is typically a rogue admin account. - Constrain WordPress user enumeration — Reduce easy admin-username harvesting by limiting public REST user exposure and author enumeration where business impact allows. This is a secondary control, not the fix, but it raises attacker cost and should be applied within hours on externally exposed sites if patching will lag.
- Relying on MFA for wp-admin logins does not stop this path, because the exploit forges authenticated REST context before any normal interactive login flow.
- Hiding
/wp-admin/or changing the login URL does not materially help; the exploit targets REST endpoints, not the browser login page. - Generic EDR on the web server may miss the initial compromise because the first durable artifact is often just a newly created WordPress admin user, not malware execution.
Crowdsourced verification payload.
Run this on the target WordPress host or inside the container/VM that holds the site files. Invoke it as bash check-burst-cve-2026-8181.sh /var/www/html/wp-content/plugins/burst-statistics; it needs only read access to the plugin directory, not root, and prints VULNERABLE, PATCHED, or UNKNOWN.
#!/usr/bin/env bash
# check-burst-cve-2026-8181.sh
# Detects whether the local Burst Statistics WordPress plugin version is affected by CVE-2026-8181.
# Exit codes:
# 0 = PATCHED
# 1 = VULNERABLE
# 2 = UNKNOWN / unable to determine
set -u
PLUGIN_DIR="${1:-}"
if [[ -z "$PLUGIN_DIR" ]]; then
echo "UNKNOWN - usage: $0 /path/to/wp-content/plugins/burst-statistics"
exit 2
fi
if [[ ! -d "$PLUGIN_DIR" ]]; then
echo "UNKNOWN - directory not found: $PLUGIN_DIR"
exit 2
fi
PLUGIN_FILE=""
for f in "$PLUGIN_DIR"/burst-statistics.php "$PLUGIN_DIR"/*.php; do
if [[ -f "$f" ]]; then
if grep -qiE '^\s*Plugin Name:\s*Burst Statistics' "$f" 2>/dev/null; then
PLUGIN_FILE="$f"
break
fi
fi
done
if [[ -z "$PLUGIN_FILE" ]]; then
# Fall back to the canonical file name even if the header is missing.
if [[ -f "$PLUGIN_DIR/burst-statistics.php" ]]; then
PLUGIN_FILE="$PLUGIN_DIR/burst-statistics.php"
else
echo "UNKNOWN - could not locate plugin main file"
exit 2
fi
fi
VERSION=$(awk -F': ' 'BEGIN{IGNORECASE=1} /^\s*Version:/ {gsub(/\r/,"",$2); print $2; exit}' "$PLUGIN_FILE")
if [[ -z "$VERSION" && -f "$PLUGIN_DIR/readme.txt" ]]; then
VERSION=$(awk -F': ' 'BEGIN{IGNORECASE=1} /^\s*Stable tag:/ {gsub(/\r/,"",$2); print $2; exit}' "$PLUGIN_DIR/readme.txt")
fi
if [[ -z "$VERSION" ]]; then
echo "UNKNOWN - version not found in plugin headers or readme"
exit 2
fi
verlte() {
[[ "$1" == "$2" ]] && return 0
[[ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n1)" == "$1" ]]
}
verlt() {
[[ "$1" != "$2" ]] && verlte "$1" "$2"
}
# Vulnerable range: 3.4.0 <= version <= 3.4.1.1
if verlte "3.4.0" "$VERSION" && verlte "$VERSION" "3.4.1.1"; then
echo "VULNERABLE - Burst Statistics version $VERSION is in affected range 3.4.0-3.4.1.1"
exit 1
fi
if verlt "$VERSION" "3.4.0" || verlt "3.4.1.1" "$VERSION"; then
echo "PATCHED - Burst Statistics version $VERSION is outside affected range"
exit 0
fi
echo "UNKNOWN - parsed version '$VERSION' could not be classified"
exit 2
If you remember one thing.
X-BurstMainWP requests or disable the plugin immediately, within hours because exploitation evidence exists and overrides the normal noisgate mitigation SLA. Then complete the real fix—upgrade every affected instance to 3.4.2+—on the same emergency track for exposed sites, while documenting the fleet-wide closeout under the noisgate remediation SLA of ≤90 days for CRITICAL issues; also hunt now for rogue admin creation and privileged REST activity since 2026-05-13.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.