← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-6495 · CWE-79 · Disclosed 2026-05-18

The Ajax Load More WordPress plugin before 7

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
01 · The Real Story

This is a booby-trapped admin link, not a skeleton key

CVE-2026-6495 is a reflected XSS in the WordPress plugin Ajax Load More affecting versions before 7.8.4. WPScan's proof-of-concept shows the vulnerable path is the alm_preview parameter, where attacker-controlled shortcode content is reflected back into the page without proper sanitization or escaping; the practical victim is a logged-in privileged user, especially a WordPress admin, who opens a crafted URL.

The vendor's HIGH 7.1 score is too generous for real enterprise prioritization. Yes, JavaScript in an admin's browser can be dangerous on WordPress, but the chain still requires social engineering, a live authenticated admin session, and same-site browser execution rather than unauthenticated server compromise; that combination materially narrows both reachable population and blast radius.

"Real bug, but it needs a phished admin click and only burns one WordPress site at a time."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Find a reachable WordPress site running Ajax Load More

The attacker first identifies a public WordPress site with the Ajax Load More plugin installed below 7.8.4. This is usually done with standard web fingerprinting or WordPress-focused tooling such as WPScan, not with bespoke exploit infrastructure.
Conditions required:
  • Target site is internet-reachable or otherwise reachable to the attacker
  • Plugin ajax-load-more is installed and version is earlier than 7.8.4
Where this breaks in practice:
  • The plugin footprint is only a subset of WordPress sites
  • Version detection can be obscured by caching, blocked readme files, or defensive headers
  • WordPress plugin is not a separate network service, so internet-wide scanners do not get a clean banner
Detection/coverage: External attack-surface tools and WordPress scanners can usually detect plugin presence/version when readme assets or source paths are exposed; asset inventory/SBOM is more reliable than perimeter scanning.
STEP 02

Craft a malicious preview URL

Using the published WPScan proof-of-concept, the attacker places HTML/JavaScript into the alm_preview parameter so it is reflected into the response. Weaponization is trivial because the payload is just a crafted URL; no auth, brute force, or exploit chain is required at this stage.
Conditions required:
  • Attacker can deliver a URL to the victim
  • The vulnerable parameter is reachable in the site's current plugin configuration
Where this breaks in practice:
  • Reflected XSS dies without user interaction
  • Email security, chat link inspection, and browser safe-browsing features may strip or flag suspicious links
  • Some payloads break on WAF normalization or URL rewriting
Detection/coverage: WAFs and reverse proxies may log suspicious alm_preview= requests containing encoded tags or event handlers, but generic scanners may miss admin-only preview behavior.
STEP 03

Land the click on a logged-in admin

The attacker must get a privileged WordPress user to open the crafted link while authenticated to the target site. Once opened, the injected script executes in the origin of that WordPress site and can read DOM data, act with the victim's browser session, and potentially abuse nonces or admin workflows.
Conditions required:
  • Victim is a logged-in admin or similarly privileged user
  • Victim opens the crafted URL in a browser that can reach the site
Where this breaks in practice:
  • This is a UI:R bug: no click, no exploit
  • Least-privilege admin practices and MFA reduce the value of a stolen session but do not prevent script execution
  • Admins often use separate browsers/profiles for administration, lowering accidental click-through from normal email/chat flows
Detection/coverage: Browser EDR is uncommon on admin workstations for CMS admin activity; server-side visibility is usually limited to unusual request parameters and subsequent admin actions.
STEP 04

Abuse the admin session for site-scoped impact

With script execution in the WordPress origin, the attacker can perform session-riding actions available to that admin, such as changing content, adding plugin settings, or attempting follow-on abuse through other installed components. The impact can become serious for that one site, but it is still site-scoped browser compromise, not direct code execution on the server from the CVE itself.
Conditions required:
  • The victim account has meaningful administrative privileges
  • The site exposes sensitive admin actions to browser-session execution
Where this breaks in practice:
  • Impact depends heavily on what that specific admin can do and what other plugins/themes are installed
  • Nonce protections and modern WordPress admin flows can force extra steps for some actions
  • The blast radius is usually one WordPress tenant/site per successful phish
Detection/coverage: Look for suspicious admin-origin requests after an alm_preview hit, unusual plugin/theme changes, new admin users, or content modifications in WordPress audit logs.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo public evidence of active exploitation found in authoritative sources reviewed; this CVE is not listed in CISA KEV.
Proof-of-concept availabilityPublic PoC exists. WPScan publishes a working example using the alm_preview parameter to trigger reflected XSS against a logged-in admin.
EPSS0.00012 from the supplied intel, which is effectively floor-level likelihood. I could not directly verify the percentile from authoritative source content available in-tool, so treat percentile as unconfirmed here.
KEV statusNot KEV-listed as of this assessment. That removes the strongest urgency amplifier.
CVSS vectorCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L — the key reality check is UI:R. This is remote and easy to trigger technically, but still depends on victim interaction and yields browser-origin abuse rather than server-side compromise by itself.
Affected versionsAjax Load More < 7.8.4.
Fixed version7.8.4. WordPress.org and the GitHub repository both show 7.8.4 as the current fixed release.
Exposure / install baseWPScan and WordPress.org both show roughly 40,000 active installs. That is meaningful plugin prevalence, but there is no distinct Shodan/Censys/FOFA-style network banner for this bug because exposure rides on the existing web app, not a separate service.
Disclosure timelineThere are two relevant dates: WPScan shows the vulnerability page as publicly published on 2026-04-27, while NVD shows the CVE record as received from WPScan on 2026-05-18. If your tracking says "Disclosed: 2026-05-18," that aligns to NVD ingestion, not the earlier public WPScan posting.
Researcher / sourceWPScan attributes the original research/submission to Krugov Artyom and marks it Verified.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.4/10)

The decisive downgrading factor is the attacker must land a crafted link on a logged-in privileged user. That prerequisite turns a nominally remote XSS into a phishing-dependent, site-scoped session abuse issue, which is materially less urgent than server-side unauthenticated compromise.

HIGH Affected version range and fixed version
HIGH Exploit chain requiring user interaction and a privileged WordPress session
MEDIUM Practical downstream impact after admin-browser execution, which varies by site/plugin stack

Why this verdict

  • Down from vendor HIGH because UI:R is the whole ballgame — the attacker does not get impact unless a target user opens a malicious link while logged in
  • Requires a privileged victim session — in practice this implies phishing, chat-delivery, or some other prior foothold into user communications rather than opportunistic internet exploitation at scale
  • Blast radius is narrow — each successful exploit is typically one WordPress site/tenant and one browser session, not a fleet-wide pre-auth takeover surface
  • No exploitation amplifier — no KEV listing, no credible active-campaign reporting, and the supplied EPSS is extremely low
  • Still not LOW — public PoC exists, no authentication is required to build/host the exploit URL, and admin-context JavaScript on WordPress can absolutely become serious for the affected site

Why not higher?

This is not a pre-auth server compromise, not an RCE, and not a wormable edge bug. The need for a privileged user click is compounding friction: it assumes reachable users, successful lure delivery, and an active authenticated browser session on the target site.

Why not lower?

Reflected XSS against WordPress admins is not harmless. If the lure lands, attacker-controlled JavaScript runs in the site's origin and can abuse the victim's session for meaningful site-level actions, so this deserves more than backlog-only treatment.

05 · Compensating Control

What to do — in priority order.

  1. Restrict WordPress admin access — Put /wp-admin/ and other admin-only paths behind IP allowlists, VPN, or identity-aware proxy controls where possible. This does not fix the bug, but it reduces the chance that a phished admin opens the target URL from an uncontrolled context; for a MEDIUM verdict there is no mitigation SLA — go straight to the 365-day remediation window, so implement this as hygiene rather than an emergency change.
  2. Enforce MFA and dedicated admin browser profiles — Require MFA for WordPress admins and push admins to use a separate browser/profile only for site administration. MFA will not stop XSS already running in the browser, but dedicated admin browsing habits materially cut click-through probability from everyday email/chat workflows; again, no mitigation SLA applies here, so this is a risk-reduction control before patch completion within the remediation window.
  3. Watch for alm_preview abuse — Add reverse-proxy, WAF, or web-server detections for requests containing alm_preview= with encoded tags, event handlers, or shortcode-breaking input. This is useful for hunting and triage because reflected XSS often leaves obvious payload artifacts in logs, and for a MEDIUM issue it is an appropriate monitoring control while you patch inside the remediation window.
  4. Harden plugin governance — Limit who can install or keep nonessential WordPress plugins, and remove unused ones from internet-facing sites. That shrinks future XSS and plugin-chain abuse exposure; for this verdict there is no mitigation SLA — go straight to the 365-day remediation window.
What doesn't work
  • HttpOnly cookies alone do not solve this; the attacker can still drive same-origin actions from the victim browser even if direct cookie reads are blocked.
  • Generic perimeter vulnerability scanners often overpromise here; they may find the outdated plugin but cannot prove exploitability without the reflected admin-view flow and user interaction.
  • MFA by itself does not neutralize an active XSS running inside an already authenticated admin session.
06 · Verification

Crowdsourced verification payload.

Run this on the target WordPress host or from a management shell that can read the site's plugin files. Invoke it as bash check-alm-cve-2026-6495.sh /var/www/html and use an account with read access to the WordPress installation; root is not required unless filesystem permissions are locked down.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check-alm-cve-2026-6495.sh
# Detects whether the Ajax Load More WordPress plugin is vulnerable to CVE-2026-6495
# Usage: bash check-alm-cve-2026-6495.sh /path/to/wordpress
# Exit codes:
#   0 = PATCHED
#   1 = VULNERABLE
#   2 = UNKNOWN / error

set -u

WP_ROOT="${1:-}"
if [ -z "$WP_ROOT" ]; then
  echo "UNKNOWN - missing WordPress path argument"
  exit 2
fi

PLUGIN_FILE="$WP_ROOT/wp-content/plugins/ajax-load-more/ajax-load-more.php"
if [ ! -f "$PLUGIN_FILE" ]; then
  echo "UNKNOWN - plugin file not found: $PLUGIN_FILE"
  exit 2
fi

VERSION_LINE=$(grep -iE '^\s*Version:\s*' "$PLUGIN_FILE" 2>/dev/null | head -n1)
if [ -z "$VERSION_LINE" ]; then
  echo "UNKNOWN - could not read plugin version from $PLUGIN_FILE"
  exit 2
fi

VERSION=$(printf '%s' "$VERSION_LINE" | sed -E 's/^\s*Version:\s*//I' | tr -d '\r' | xargs)
if [ -z "$VERSION" ]; then
  echo "UNKNOWN - parsed empty version string"
  exit 2
fi

verlt() {
  # returns success if $1 < $2
  [ "$(printf '%s\n%s\n' "$1" "$2" | sort -V | head -n1)" != "$2" ]
}

TARGET_FIXED="7.8.4"

if verlt "$VERSION" "$TARGET_FIXED"; then
  echo "VULNERABLE - Ajax Load More version $VERSION is earlier than fixed version $TARGET_FIXED"
  exit 1
fi

if [ "$VERSION" = "$TARGET_FIXED" ] || ! verlt "$VERSION" "$TARGET_FIXED"; then
  echo "PATCHED - Ajax Load More version $VERSION is $TARGET_FIXED or newer"
  exit 0
fi

echo "UNKNOWN - unable to compare version $VERSION"
exit 2
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: identify every internet-facing WordPress site running Ajax Load More < 7.8.4, verify whether admins can be lured into opening crafted links, and patch those sites during normal web-app maintenance rather than declaring an emergency. For this MEDIUM verdict there is no noisgate mitigation SLA — go straight to the 365-day remediation window; apply the vendor fix to 7.8.4 or later within the noisgate remediation SLA of ≤365 days, while using admin access restrictions and alm_preview monitoring as interim hygiene controls.

Sources

  1. NVD CVE-2026-6495
  2. WPScan plugin overview for Ajax Load More
  3. WPScan vulnerability detail / PoC
  4. WordPress.org plugin page
  5. GitHub repository and releases
  6. CISA Known Exploited Vulnerabilities Catalog
  7. FIRST EPSS overview
  8. FIRST EPSS API documentation
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.