This is a booby-trapped sticky note on an abandoned admin desk, not a crowbar at the front door
CVE-2025-22325 affects the WordPress plugin autocompleter by nchankov in versions up to and including 1.3.5.2. The flaw is a CSRF on a state-changing admin function with downstream stored XSS potential: if an attacker can get a logged-in WordPress administrator to visit a crafted page or click a malicious link, the browser can submit a forged request that changes plugin settings and stores attacker-controlled script content.
The vendor-style HIGH 7.1 label overstates real enterprise urgency. In practice this chain requires a logged-in admin session, user interaction, and the continued presence of an old plugin that public sources show as removed from the WordPress directory with only about 40 active installs. That is heavy friction, narrow population, and tiny reachable blast radius compared with true internet-facing unauthenticated bugs.
4 steps from start to impact.
Find a site still running autocompleter
autocompleter plugin installed at version <= 1.3.5.2. Public telemetry here is weak because this is a plugin-level flaw, not a cleanly fingerprintable edge service; the best population clue is Wordfence's plugin metadata showing only 40 active installs and a removed status.- Target runs WordPress
- Plugin
autocompleteris installed - Version is
<= 1.3.5.2
- Very small exposed population according to public plugin metadata
- Removed/unmaintained plugin reduces prevalence in better-managed environments
- Not easily mass-fingerprinted from internet edge telemetry
Lure a logged-in administrator
/wp-admin/.- Administrator is logged in to the vulnerable site
- Administrator visits attacker-controlled content or clicks a crafted link
- Browser can reach the admin endpoint
- Requires social engineering and timing
- Requires admin-level victim, not any random visitor
- Modern email security, browser isolation, and user awareness often break this step
Submit forged settings update
- The targeted plugin action lacks effective nonce/origin validation
- The admin account has permission to modify plugin settings
- Only reachable after successful admin interaction
- Scope is constrained to what the vulnerable settings function actually writes
- Reverse proxies, custom admin protections, or security plugins may interfere with the request
Trigger stored XSS impact
- Injected payload is rendered somewhere reachable
- Victims browse the affected admin or front-end page
- Browser-side protections do not neutralize the payload
- Impact depends on where the plugin actually renders stored data
- CSP, output encoding, or sanitization elsewhere can reduce payload reliability
- Blast radius is one site, not a shared appliance or domain-wide service
The supporting signals.
| In-the-wild status | No evidence found that CVE-2025-22325 is in CISA KEV, and I found no credible reporting of active exploitation campaigns against this specific CVE. |
|---|---|
| Public exploit / PoC | No dedicated public exploit repo was found in primary-source review. That said, weaponization is trivial because a CSRF PoC is just a crafted HTML form or auto-submitting page. |
| EPSS | 0.00185 from your intel block, which is very low and consistent with the weak real-world exploitability of this chain. |
| KEV status | Not KEV-listed as of the CISA KEV catalog page reviewed. |
| CVSS baseline | There is source disagreement: Patchstack shows 7.1 / HIGH with CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L, while Wordfence shows 6.1 / MEDIUM with availability impact A:N. Either way, the key operational read is the same: user interaction is required and the attacker needs an admin victim. |
| Affected versions | autocompleter <= 1.3.5.2. |
| Fixed version | No official fix available in the public advisories reviewed; Wordfence marks the issue unpatched and the plugin record as removed. |
| Exposure / prevalence | Wordfence's plugin metadata lists only 40 active installs and 18,172 total downloads, which is extremely small population for an enterprise prioritization context. |
| Disclosure timing | Public advisory pages show January 3, 2025 on Wordfence/Patchstack. Your intel block says January 7, 2025; that likely reflects downstream CVE/NVD publication timing rather than the first public WordPress-advisory date. |
| Reporter / researcher | SOPROBRO is credited by both Wordfence and Patchstack. |
noisgate verdict.
The decisive factor is attack-path friction: exploitation requires a logged-in administrator to be socially engineered into firing the request. That turns a scary-sounding CSRF-to-XSS chain into a narrow, post-browse opportunity on a plugin with tiny real-world deployment.
Why this verdict
- Baseline starts at vendor 7.1 HIGH, then drops hard because exploitation requires a logged-in admin to click or load attacker-controlled content. That is not unauthenticated remote compromise; it is a socially engineered browser-side action.
- Population is tiny. Wordfence shows roughly 40 active installs, which is microscopic compared with vulnerabilities that matter at fleet scale.
- This prerequisite implies prior opportunity, not initial access. The attacker either already has a path to influence an administrator or must win a phishing/social-engineering step first, and modern email security/browser controls should catch a meaningful share of those attempts.
- Blast radius is local to one WordPress site. There is no evidence this becomes broad infrastructure takeover absent further site-specific chaining.
- No KEV listing, no public campaign evidence, and a very low EPSS all point the same way: low probability, low prioritization pressure.
Why not higher?
It is not higher because this is not a clean internet-exposed pre-auth exploit. The attacker must line up a rare plugin, an authenticated admin session, and successful user interaction before any impact occurs. That is multiple compounding friction points, and each one should drag the score down.
Why not lower?
It is not IGNORE because, if the plugin is present, the weakness is real and there is no public patch. A successful hit can still land stored JavaScript in a WordPress site and create credential theft or admin-action abuse. That deserves cleanup, just not panic.
What to do — in priority order.
- Remove the plugin — If
autocompleteris installed anywhere, remove or replace it because public sources show no official fix. For a LOW verdict there is no formal noisgate mitigation SLA, but this is still sensible backlog hygiene because leaving an unpatched, removed plugin in production buys you nothing. - Restrict admin exposure — Put
wp-adminbehind VPN, IP allowlists, or SSO access controls where possible. This reduces the chance that a phished or casually browsing administrator can be used as the CSRF trigger. - Harden browser-side script execution — Use a sane CSP and security headers to reduce stored-XSS reliability if a payload lands. This is not a full fix, but it meaningfully cuts follow-on abuse on public-facing sites.
- Watch for suspicious settings changes — Monitor WordPress admin actions, plugin-setting updates, and unexpected JavaScript in stored options/content. Do this during normal content-integrity review cycles; there is no urgent mitigation deadline for a LOW reassessment.
- A generic perimeter vulnerability scan alone does not solve this, because many scanners will miss a low-prevalence WordPress plugin installed behind a normal web app.
- MFA on WordPress admin helps account takeover, but it does not stop CSRF if the admin is already logged in and tricked into loading the malicious page.
- Relying only on WAF signatures is weak here; CSRF requests can look like legitimate admin traffic from a valid browser session.
Crowdsourced verification payload.
Run this on the target WordPress host or on a mounted web root from an auditor workstation. Invoke it as bash verify-cve-2025-22325.sh /var/www/html and use an account that can read the WordPress plugin directory; root is not required unless file permissions are locked down.
#!/usr/bin/env bash
# verify-cve-2025-22325.sh
# Detects whether WordPress plugin 'autocompleter' is installed and vulnerable to CVE-2025-22325.
# Usage: bash verify-cve-2025-22325.sh /path/to/wordpress
# Exit codes:
# 0 = PATCHED / not present
# 1 = VULNERABLE
# 2 = UNKNOWN / inspection error
set -u
TARGET_ROOT="${1:-}"
if [[ -z "$TARGET_ROOT" ]]; then
echo "UNKNOWN: missing WordPress root path argument"
exit 2
fi
PLUGIN_DIR="$TARGET_ROOT/wp-content/plugins/autocompleter"
if [[ ! -d "$PLUGIN_DIR" ]]; then
echo "PATCHED: plugin 'autocompleter' not present"
exit 0
fi
find_main_file() {
local dir="$1"
local f
for f in "$dir"/*.php; do
[[ -f "$f" ]] || continue
if grep -qiE '^\s*Plugin Name\s*:' "$f"; then
echo "$f"
return 0
fi
done
return 1
}
MAIN_FILE="$(find_main_file "$PLUGIN_DIR")"
if [[ -z "${MAIN_FILE:-}" || ! -f "$MAIN_FILE" ]]; then
echo "UNKNOWN: plugin directory exists but main plugin file could not be identified"
exit 2
fi
VERSION_LINE="$(grep -iE '^\s*Version\s*:' "$MAIN_FILE" | head -n1 || true)"
VERSION="$(echo "$VERSION_LINE" | sed -E 's/^\s*Version\s*:\s*//I' | tr -d '\r' | xargs)"
if [[ -z "$VERSION" ]]; then
echo "UNKNOWN: could not parse plugin version from $MAIN_FILE"
exit 2
fi
# Returns 0 if $1 <= $2 using sort -V semantics.
version_le() {
local a="$1" b="$2"
[[ "$a" == "$b" ]] && return 0
local first
first="$(printf '%s\n%s\n' "$a" "$b" | sort -V | head -n1)"
[[ "$first" == "$a" ]]
}
AFFECTED_MAX="1.3.5.2"
if version_le "$VERSION" "$AFFECTED_MAX"; then
echo "VULNERABLE: autocompleter version $VERSION found at $PLUGIN_DIR (affected: <= $AFFECTED_MAX)"
exit 1
else
echo "PATCHED: autocompleter version $VERSION is newer than $AFFECTED_MAX"
exit 0
fi
If you remember one thing.
autocompleter and treat any hits as cleanup work, not emergency response. For a LOW reassessment there is no noisgate mitigation SLA and noisgate remediation SLA says treat it as backlog hygiene; because there is no vendor fix, the practical remediation is to remove or replace the plugin during the next normal maintenance cycle and verify that no stored script payloads were left behind.Sources
- Wordfence vulnerability entry for CVE-2025-22325
- Wordfence plugin metadata for Autocompleter
- Patchstack advisory for Autocompleter <= 1.3.5.2
- CISA Known Exploited Vulnerabilities catalog
- FIRST EPSS API documentation
- FIRST EPSS overview
- Wordfence CVE database overview showing removed status and active installs
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.