← Back to Feed CACHED · 2026-05-17 09:42:19 · cache_key CVE-2025-29912
CVE-2026-10586 · CWE-918 · Disclosed 2026-06-05

The Gutenberg Essential Blocks – Page Builder for Gutenberg Blocks & Patterns plugin for WordPress is…

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

This is a valet key that can still reach the garage, not a master key to the whole building

The public record around your prompt is messy, but the closest authoritative public match is a June 4, 2026 WPScan advisory for Essential Blocks < 6.1.4 describing Author+ SSRF via AI Image Generation on the same plugin. An earlier clearly documented sibling issue, CVE-2025-11361, affected <= 5.7.1 and abused save_ai_generated_image / eb_save_ai_generated_image so a logged-in WordPress user with Author-level access could make the server fetch attacker-chosen URLs and save the response body into uploads for later download.

That matters because the prompt's vendor framing says PR:N / HIGH 7.2, but the public technical writeups for this plugin family point the other way: authenticated Author+, admin nonce available from the editor UI, and exploitation bounded by the target's outbound reachability. SSRF with response exfiltration is real and operationally useful, but once you price in the attacker position requirement, this lands as a post-initial-access WordPress abuse path, not a perimeter breaker.

"This is a useful post-auth SSRF, not an internet-wide fire alarm."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Land a WordPress Author account

The attacker first needs a valid WordPress account with at least Author rights or another role that inherits upload_files and editor access. This is the decisive friction point: the bug is not useful from the raw internet without prior compromise, stolen credentials, weak provisioning, or an insider foothold.
Conditions required:
  • A reachable WordPress site with the Essential Blocks plugin installed
  • A valid WordPress account with Author+ privileges
  • The vulnerable plugin version is still deployed
Where this breaks in practice:
  • MFA, SSO, and sane joiner/mover/leaver controls stop a lot of this
  • Many enterprise WordPress estates do not grant Author broadly
  • Some sites do not expose self-registration or public author workflows
Detection/coverage: Most network scanners will miss this because the gate is application authentication, not a banner-level exposed service.
STEP 02

Harvest the editor nonce

Public writeups for the analogous flaw show the attacker pulls a valid admin_nonce from the admin/editor UI where the AI image feature is exposed. That turns the exploit from 'hard web exploitation' into 'normal authenticated feature abuse' once the account exists.
Conditions required:
  • Authenticated access to the WordPress admin/editor interface
  • Access to the Essential Blocks AI image workflow
Where this breaks in practice:
  • Restricted editor capabilities or stripped plugin features can break this chain
  • Segregated admin access behind VPN or IdP conditional access reduces reachable population
Detection/coverage: Look for admin logins followed by unusual admin-ajax.php activity using the AI image action from low-privileged accounts.
STEP 03

Weaponize admin-ajax.php to force backend fetches

The attacker sends a crafted POST to the plugin's AJAX handler with an arbitrary image_url. Per the documented sibling issue, the server performs a backend wp_remote_get() without strong destination restrictions, letting the attacker probe localhost, RFC1918 space, or cloud metadata endpoints from the server's position.
Conditions required:
  • Plugin code path accepts attacker-controlled URL input
  • The WordPress host can egress to internal or metadata targets
Where this breaks in practice:
  • Host firewalls and egress filtering often block metadata or east-west traffic
  • Containerized or managed WordPress hosting can sharply limit reachable internal targets
  • Not every enterprise WordPress node sits next to sensitive internal services
Detection/coverage: WAFs may log the POST but usually cannot validate where the server later connects. Egress telemetry, DNS logs, and proxy logs are better detectors.
STEP 04

Exfiltrate the response from uploads

In the documented 2025 case, the response body was written verbatim into wp-content/uploads/, sometimes even with a fallback image extension, and then became retrievable as media content. That converts SSRF from blind reachability testing into practical response exfiltration, which is why this is not LOW.
Conditions required:
  • The handler stores the fetched body to disk or media library
  • The fetched target returns sensitive data in the response body
Where this breaks in practice:
  • Binary-only validation, MIME enforcement, or decode checks in patched code break the exfil path
  • Private media buckets or upload access controls reduce attacker payoff
  • Many internal services return little useful data without secondary auth
Detection/coverage: Look for media uploads created by Author accounts that do not correspond to normal editorial work, especially files sourced from localhost, RFC1918 ranges, or metadata-style paths.
03 · Intelligence Metadata

The supporting signals.

In-the-wild statusNo confirmed in-the-wild exploitation found in the sources reviewed, and no CISA KEV listing.
Proof-of-concept availabilityA public PoC exists for the closely related CVE-2025-11361 from CleanTalk / Dmitrii Ignatyev, showing SSRF with response exfiltration through the plugin's AI image flow.
EPSSFor the analogous CVE-2025-11361, EPSS is reported around 0.03% with roughly 5th-11th percentile depending on mirror freshness; that is attacker-interest floor, not heat.
KEV statusNot listed in the CISA KEV catalog as reviewed.
CVSS reality checkYour prompt says CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N (7.2/HIGH), but public technical descriptions for this plugin family point to Author+ authenticated exploitation, which is a major downward adjustment.
Affected versionsPublic June 4, 2026 WPScan summary says Essential Blocks < 6.1.4 for the newer AI-image SSRF. The earlier documented sibling issue CVE-2025-11361 affected <= 5.7.1.
Fixed versionsPublic fixes are 5.7.2 for the documented 2025 SSRF and 6.1.4 for the June 2026 WPScan SSRF summary. No distro backport data surfaced because this is a WordPress plugin, not an OS package.
Exposure / install baseThe plugin shows about 200,000+ active installations on WordPress.org. That is broad deployment, but the reachable attack population is smaller because exploitation is behind WordPress auth and editor access.
Scanning / internet exposure dataThere is no reliable Shodan/Censys-style fingerprint for 'vulnerable Essential Blocks AI image SSRF' at internet scale. Practically, exposure is gated by WordPress admin access, not by a standalone service port.
Disclosure timelineThere is a date mismatch worth calling out: the public WPScan plugin page shows the related SSRF as published on 2026-06-04, while your intel block says 2026-06-05. The earlier sibling CVE-2025-11361 was publicly published on 2025-10-17/18 depending on source timezone.
04 · The Call

noisgate verdict.

Final Verdict
DOWNGRADED to MEDIUM (5.5/10)

The single biggest severity reducer is the likely authenticated Author+ requirement: this is not a clean unauthenticated internet exploit path, it is a post-initial-access abuse primitive inside WordPress. The vulnerability still matters because SSRF with response persistence can leak internal data, but the attacker must already be partway in.

HIGH Author+ / post-auth requirement is the decisive friction
MEDIUM Mapping the prompt's CVE to the public June 4, 2026 WPScan AI-image SSRF advisory

Why this verdict

  • Vendor baseline is overstated: the prompt's PR:N / 7.2 framing does not line up with public technical records for this plugin family, which describe Author+ authenticated use of the AI image path.
  • This is post-initial-access: requiring WordPress credentials, editor access, and a valid nonce means the attacker is already inside an application trust boundary before the bug does anything useful.
  • Reachability is environment-dependent: SSRF value depends on what the WordPress host can reach. Egress filtering, metadata protections, network segmentation, and managed hosting all cap blast radius in real estates.

Why not higher?

I do not buy HIGH unless you can show a truly unauthenticated path or active exploitation. Without that, this is not a perimeter bug that every scanner bot can cash in from the internet. Also, the impact here is mostly data access and internal probing, not straightforward RCE or tenant-wide compromise.

Why not lower?

I am not pushing this to LOW because SSRF that can persist response bodies into uploads is more than a theoretical misfeature. On a WordPress estate with many authors, weak account hygiene, or cloud metadata exposure, it becomes a practical foothold amplifier.

05 · Compensating Control

What to do — in priority order.

  1. Restrict Author-class accounts — Audit who actually needs Author+ on sites running this plugin and remove stale editorial accounts now. This directly cuts the only realistic exploit population; for a MEDIUM issue there is no mitigation SLA, so do this in your next normal access-review cycle if patching is not immediate.
  2. Block metadata and east-west egress — Deny outbound access from WordPress hosts to 169.254.169.254, localhost proxies, and internal-only address space unless explicitly required. This turns SSRF into a much duller bug; for MEDIUM, there is no mitigation SLA, so fold it into your standard host-hardening window.
  3. Watch admin-ajax.php from low-privileged users — Add detections for unusual AJAX calls from Author accounts, especially around AI image generation workflows and sudden media creation from backend fetches. This gives you fast visibility while you work through remediation under the 365-day window.
  4. Disable the AI image feature if unused — If your editors do not need AI image generation, disable or remove that feature path entirely until all sites are patched. This is a clean workaround because it attacks the vulnerable function, not just the symptom.
What doesn't work
  • A generic WAF does not reliably solve this because the dangerous connection is the server-side fetch after the request is accepted.
  • Relying on public-site-only monitoring misses the abuse path; the interesting traffic lives in authenticated admin/editor workflows.
  • Only rotating WordPress admin passwords is not enough if broad Author accounts remain overprovisioned.
06 · Verification

Crowdsourced verification payload.

Run this on the WordPress host or from a config-management agent with filesystem access to the plugin directory. Invoke it as bash check_essential_blocks_ssrf.sh /var/www/html or point it directly at the plugin root; no root is required if the WordPress files are readable.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_essential_blocks_ssrf.sh
# Detects whether the Essential Blocks plugin version is vulnerable to the
# publicly documented AI-image SSRF advisory fixed in 6.1.4.
#
# Usage:
#   bash check_essential_blocks_ssrf.sh /var/www/html
#   bash check_essential_blocks_ssrf.sh /var/www/html/wp-content/plugins/essential-blocks
#
# Exit codes:
#   0 = PATCHED
#   1 = VULNERABLE
#   2 = UNKNOWN

set -euo pipefail

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

PLUGIN_DIR=""
if [[ -d "$TARGET/wp-content/plugins/essential-blocks" ]]; then
  PLUGIN_DIR="$TARGET/wp-content/plugins/essential-blocks"
elif [[ -d "$TARGET" && "$(basename "$TARGET")" == "essential-blocks" ]]; then
  PLUGIN_DIR="$TARGET"
else
  echo "UNKNOWN - could not locate essential-blocks plugin directory from: $TARGET"
  exit 2
fi

# Try common files for plugin version extraction.
CANDIDATES=(
  "$PLUGIN_DIR/essential-blocks.php"
  "$PLUGIN_DIR/readme.txt"
)

VERSION=""
for f in "${CANDIDATES[@]}"; do
  if [[ -f "$f" ]]; then
    if [[ "$f" == *.php ]]; then
      VERSION=$(grep -Eim1 '^[[:space:]]*\*?[[:space:]]*Version:[[:space:]]*[0-9]+(\.[0-9]+)*' "$f" | sed -E 's/.*Version:[[:space:]]*//I' | tr -d '\r' || true)
    else
      VERSION=$(grep -Eim1 '^[[:space:]]*Stable tag:[[:space:]]*[0-9]+(\.[0-9]+)*' "$f" | sed -E 's/.*Stable tag:[[:space:]]*//I' | tr -d '\r' || true)
    fi
  fi
  if [[ -n "$VERSION" ]]; then
    break
  fi
done

if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN - unable to parse plugin version"
  exit 2
fi

normalize() {
  local IFS=.
  local parts=($1)
  printf "%03d%03d%03d\n" "${parts[0]:-0}" "${parts[1]:-0}" "${parts[2]:-0}"
}

INSTALLED=$(normalize "$VERSION")
FIXED=$(normalize "6.1.4")

if [[ "$INSTALLED" -lt "$FIXED" ]]; then
  echo "VULNERABLE - Essential Blocks version $VERSION is older than 6.1.4"
  exit 1
else
  echo "PATCHED - Essential Blocks version $VERSION is 6.1.4 or newer"
  exit 0
fi
07 · Bottom Line

If you remember one thing.

TL;DR
Monday morning: treat this as a MEDIUM plugin flaw unless you have your own proof that the path is actually unauthenticated. Inventory every WordPress instance running Essential Blocks, identify versions below 6.1.4 first, and review which sites allow Author+ access. There is no noisgate mitigation SLA — go straight to the 365-day remediation window for normal estates, but if you cannot patch quickly, tighten Author access and block metadata/internal egress during routine operations. Under the noisgate remediation SLA, get the actual plugin update completed within 365 days; if your editorial environment is high-churn or multi-tenant, do it much sooner because the only thing holding this down is the attacker-position requirement.

Sources

  1. WPScan plugin vulnerability summary for Essential Blocks
  2. WordPress.org plugin page for Essential Blocks
  3. Wordfence advisory for CVE-2025-11361
  4. CleanTalk PoC and technical writeup for CVE-2025-11361
  5. NVD entry for CVE-2025-11361
  6. CISA Known Exploited Vulnerabilities catalog
  7. FIRST EPSS API documentation
  8. Tenable CVE page mirroring EPSS for CVE-2025-11361
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.