← Back to Feed CACHED · 2026-09-04 11:36:34 · CACHE_KEY CVE-2026-14894
CVE-2026-14894 · CWE-434 · Disclosed 2026-07-10

The Super Forms – Drag & Drop Form Builder plugin for WordPress is vulnerable to Arbitrary File Upload in…

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

The front door is wide open, the key is taped to the doorbell, and burglars are already inside

CVE-2026-14894 is an unauthenticated arbitrary file upload in the Super Forms – Drag & Drop Form Builder WordPress plugin, versions ≤ 6.3.313. The super_submit_form nopriv AJAX handler accepts file uploads without checking authentication, file type, extension, or MIME magic bytes. Worse, the nonce that gates the upload is freely obtainable by any visitor via a second nopriv AJAX action (super_create_nonce). The result: two unauthenticated HTTP requests — one to mint a nonce, one to drop a PHP webshell into /wp-content/uploads/superforms/ — give an attacker full remote code execution on the underlying server. The fix landed in 6.3.314 on July 8, 2026.

The vendor's CRITICAL / 9.8 rating is accurate and, if anything, generous to defenders by not being a flat 10.0 (Patchstack independently scored it 10.0). There is zero friction: no authentication, no user interaction, no exotic configuration, a trivially automatable two-step chain, a public GitHub PoC, and confirmed mass exploitation with 250,000+ blocked attempts logged by Wordfence since July 14. Every unpatched instance reachable from the internet is assumed compromised until proven otherwise.

"Unauthenticated two-request RCE with public PoC and active mass exploitation. Patch now."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Mint a valid nonce

The attacker sends a POST to /wp-admin/admin-ajax.php?action=super_create_nonce. This nopriv endpoint returns a valid sf_nonce and sets a session cookie — no authentication or prior interaction required. Automated scanners hit this endpoint at scale to fingerprint vulnerable installs.
Conditions required:
  • Target runs Super Forms ≤ 6.3.313
  • WordPress AJAX endpoint is reachable (default)
Detection/coverage: WAF rules keyed on action=super_create_nonce from external IPs. Wordfence released a rule on July 14, 2026.
STEP 02

Upload PHP webshell

Using the nonce from Step 1, the attacker POSTs to /wp-admin/admin-ajax.php?action=super_submit_form with a crafted data payload containing a Base64-encoded PHP file in a datauristring field. The handler writes the file to /wp-content/uploads/superforms/ without any extension or content-type validation. The observed payload is Mushr00w_upl.php, a compact browser-based uploader for staging additional malware.
Conditions required:
  • Valid sf_nonce from Step 1
  • uploads directory writable (default WordPress behavior)
Detection/coverage: File-integrity monitoring (e.g., Wordfence scanner, OSSEC) on the wp-content/uploads/superforms/ directory. Nuclei template available via ProjectDiscovery.
STEP 03

Execute arbitrary commands

The attacker accesses https://target/wp-content/uploads/superforms/shell.php?c=<command>. The webshell runs under the web server user (typically www-data or apache), providing OS-level command execution. From here the attacker can exfiltrate the wp-config.php database credentials, pivot to the database, dump user data, or move laterally if the host shares credentials or network segments.
Conditions required:
  • PHP execution enabled in uploads directory (common default)
Where this breaks in practice:
  • .htaccess or Nginx rules blocking PHP execution in uploads/ would stop this step, but this is *not* a WordPress default and most hosts do not enforce it
Detection/coverage: EDR/HIDS alerting on www-data spawning shells or unexpected outbound connections. GreyNoise and Wordfence have published IOC IPs.
STEP 04

Post-exploitation: persistence and lateral movement

The Mushr00w_upl.php stager is used to deploy additional backdoors, modify theme/plugin files for persistence, and extract database credentials from wp-config.php. If the WordPress host shares database servers, SSH keys, or is on a flat internal network, lateral movement follows. On managed hosting, blast radius is typically contained to the site; on self-managed VPS/bare-metal, the entire server is compromised.
Conditions required:
  • Successful webshell execution from Step 3
Where this breaks in practice:
  • Containerized or managed WordPress hosting (WP Engine, Kinsta, Pantheon) limits OS-level pivot
  • Network segmentation between web tier and internal assets
Detection/coverage: Database query anomaly detection; SSH key audit; outbound C2 traffic to known IOC IPs.
03 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationActive. Wordfence blocked 250,000+ exploitation attempts since July 14, 2026. Top source IPs: 103.168.147.235 (106K requests), 103.168.146.131 (82K requests). Payload: Mushr00w_upl.php stager.
Proof of ConceptPublic. shinthink/CVE-2026-14894 on GitHub — fully weaponized two-request exploit script. Nuclei template available via ProjectDiscovery.
EPSS Score0.03484 — top ~3.5 percentile. Given confirmed mass exploitation this is likely lagging; expect rapid increase.
KEV StatusNot listed by CISA as of 2026-09-04. Patchstack independently labels it as *Known to be exploited*. KEV listing is expected given active campaign evidence.
CVSS VectorCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H — 9.8. Network-accessible, no privileges, no user interaction, full CIA impact. Patchstack scored 10.0.
Affected VersionsSuper Forms ≤ 6.3.313 (free and premium editions). Super Forms Bundle premium ≤ 4.9.700 also affected per earlier advisory.
Fixed Version6.3.314 (released July 8, 2026). Bundle: 4.9.703+.
Installed Base~13,000 active installations per Patchstack; GitHub PoC claims 600,000 (likely inflated). SecurityWeek reported 300,000 *potentially exposed* sites.
Disclosure TimelinePatched July 8, 2026 → Publicly disclosed July 9, 2026 → Mass exploitation began July 14, 2026.
Researcher / ReporterPatchstack research team. PoC by shinthink (GitHub).
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to CRITICAL (9.8/10)

The single most decisive factor is the zero-friction, unauthenticated remote code execution chain with confirmed mass exploitation in the wild. Two HTTP requests with a public PoC give an attacker a webshell on any reachable unpatched instance — there are no authentication, configuration, or user-interaction prerequisites to narrow the exposure population.

HIGH Vulnerability severity and exploitability assessment
HIGH Active exploitation status
MEDIUM Installed base size (sources conflict: 13K vs 300K vs 600K)

Why this verdict

  • Zero authentication friction: The entire chain — nonce minting through shell upload — requires no credentials, no cookies, no user interaction. Every internet-facing instance of Super Forms ≤ 6.3.313 is in the blast radius with no narrowing conditions.
  • Active mass exploitation: 250,000+ blocked attempts logged by Wordfence since July 14, 2026, with named IOC IPs and a known payload (Mushr00w_upl.php). This is not theoretical — campaigns are running *right now*.
  • Public weaponized PoC: The shinthink GitHub repository provides a turnkey exploit. Nuclei templates exist. The barrier to entry for any script kiddie is near zero.
  • Role multiplier: WordPress is deployed across the full role spectrum. (a) *Low-value:* dev/staging blogs — exploit succeeds, blast radius limited to site. (b) *Typical:* corporate marketing sites, customer portals — exploit succeeds, risk of data exfiltration and brand damage. (c) *High-value:* WordPress instances serving as e-commerce (WooCommerce with payment data), customer-facing portals with PII, or sites on shared hosting where www-data compromise pivots to neighboring tenants. On self-managed servers, a webshell under the web user can reach wp-config.php DB credentials, SSH keys, and flat internal networks. While WordPress itself is not a canonical high-value-role component (it is not a DC, hypervisor, or IdP), the *unauthenticated RCE with active exploitation* independently sustains the CRITICAL floor without needing the role multiplier.
  • No compensating defaults: WordPress does not block PHP execution in uploads/ by default. The nonce mechanism that was supposed to gate the upload is trivially bypassable via the nopriv super_create_nonce endpoint. There is no built-in defense that stops this chain.

Why not higher?

A 9.8 is already near-ceiling. The only gap to 10.0 is Scope (S:U) — exploitation compromises the vulnerable component's server but does not inherently cross a security boundary to affect other components in a formally scoped sense. Patchstack did score it 10.0, which is defensible, but NIST's S:U is technically correct for a single-server compromise.

Why not lower?

There is no friction to discount. Every prerequisite in the chain is satisfied by default on any reachable WordPress install running the plugin. Authentication: none required. User interaction: none. Configuration dependency: none — the vulnerable AJAX endpoints are registered on plugin activation with no admin toggle. Exposure: the plugin's entire purpose is to serve public-facing forms, so the endpoints are internet-accessible by design. Active exploitation confirms that real-world conditions match the theoretical maximum severity. Downgrading would require evidence that the attack chain fails in a meaningful fraction of deployments, and no such evidence exists.

05 · Compensating Control

What to do — in priority order.

  1. Block AJAX actions at the WAF layer — Add a WAF rule (ModSecurity, Cloudflare, Sucuri, or Wordfence firewall) to block requests to admin-ajax.php with action=super_submit_form or action=super_create_nonce from unauthenticated sessions. Deploy within the noisgate CRITICAL mitigation SLA of ≤ 3 days. Wordfence released a free firewall rule on July 14, 2026.
  2. Disable PHP execution in uploads directory — Add an .htaccess rule (php_flag engine off) or Nginx directive (location ~* /uploads/.*\.php$ { deny all; }) to the wp-content/uploads/ directory. This breaks the chain at Step 3 even if a file is uploaded. Deploy immediately as defense-in-depth.
  3. Deactivate the Super Forms plugin if not business-critical — If the form functionality can be temporarily replaced or taken offline, deactivating the plugin removes the vulnerable AJAX handlers entirely. This is the most reliable mitigation short of patching.
  4. Scan for existing compromise — Check /wp-content/uploads/superforms/ for any .php files — there should be none. Search web server access logs for action=super_submit_form from external IPs. Look for the Mushr00w_upl.php filename. If found, treat the host as compromised: rotate all credentials including DB passwords in wp-config.php, review for persistence in theme/plugin files, and rebuild if possible.
  5. Apply the patch (6.3.314) — Update Super Forms to version 6.3.314 or later. This is the definitive remediation. On managed WordPress hosts, check if auto-updates applied it. On self-managed hosts, update via WP CLI: wp plugin update super-forms. Must be completed within the noisgate CRITICAL remediation SLA of ≤ 90 days, but given active exploitation, treat this as immediate.
What doesn't work
  • WordPress nonce validation alone — the nonce mechanism is part of the vulnerability; the plugin exposes a nopriv endpoint that mints valid nonces for unauthenticated users, so WordPress's built-in CSRF protection provides zero value here.
  • IP-based rate limiting — attackers are distributing attempts across many source IPs (see IOC list); rate limiting per IP will not stop determined exploitation and creates false confidence.
  • File upload size limits — the PHP webshell payload is typically under 1 KB; upload size restrictions will not block it.
  • Generic WordPress hardening (hiding wp-admin, renaming login) — the vulnerable endpoint is admin-ajax.php which must remain accessible for legitimate front-end AJAX functionality; hiding or restricting /wp-admin/ does not block AJAX requests.
06 · Verification

Crowdsourced verification payload.

Run this on each WordPress host (or via SSH across your fleet). Requires read access to the WordPress plugin directory. Example: bash check_cve_2026_14894.sh /var/www/html where the argument is the WordPress root. No elevated privileges needed beyond file read access.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2026-14894 Checker — Super Forms Arbitrary File Upload
# Usage: bash check_cve_2026_14894.sh /path/to/wordpress

set -euo pipefail

WP_ROOT="${1:-/var/www/html}"
PLUGIN_DIR="$WP_ROOT/wp-content/plugins/super-forms"
PLUGIN_FILE="$PLUGIN_DIR/super-forms.php"
UPLOAD_DIR="$WP_ROOT/wp-content/uploads/superforms"
FIXED_VERSION="6.3.314"

if [ ! -d "$PLUGIN_DIR" ]; then
  echo "UNKNOWN — Super Forms plugin not found at $PLUGIN_DIR"
  exit 2
fi

if [ ! -f "$PLUGIN_FILE" ]; then
  echo "UNKNOWN — Cannot read $PLUGIN_FILE"
  exit 2
fi

# Extract version from plugin header
VERSION=$(grep -i '^[[:space:]]*\*[[:space:]]*Version:' "$PLUGIN_FILE" | head -1 | sed 's/.*Version:[[:space:]]*//' | tr -d '[:space:]')

if [ -z "$VERSION" ]; then
  echo "UNKNOWN — Could not parse version from $PLUGIN_FILE"
  exit 2
fi

echo "Detected Super Forms version: $VERSION"
echo "Fixed version: $FIXED_VERSION"

# Version comparison
if [ "$(printf '%s\n' "$FIXED_VERSION" "$VERSION" | sort -V | head -1)" = "$FIXED_VERSION" ]; then
  echo "PATCHED — Super Forms $VERSION >= $FIXED_VERSION"
  STATUS=0
else
  echo "VULNERABLE — Super Forms $VERSION < $FIXED_VERSION (CVE-2026-14894)"
  STATUS=1
fi

# Check for IOCs
if [ -d "$UPLOAD_DIR" ]; then
  PHP_FILES=$(find "$UPLOAD_DIR" -name '*.php' 2>/dev/null | head -20)
  if [ -n "$PHP_FILES" ]; then
    echo "WARNING — PHP files found in uploads/superforms/ (possible compromise):"
    echo "$PHP_FILES"
    STATUS=1
  fi
fi

exit $STATUS
07 · Bottom Line

If you remember one thing.

TL;DR
This is an actively exploited, unauthenticated RCE with a public PoC — treat every unpatched instance as potentially compromised. Monday morning, before you do anything else: (1) Run the verification script across your WordPress fleet to identify all Super Forms installations. (2) For any instance running ≤ 6.3.313, check /wp-content/uploads/superforms/ for PHP files — if you find any, initiate incident response immediately. (3) Apply the WAF block on super_submit_form and super_create_nonce AJAX actions as an emergency compensating control per the noisgate mitigation SLA of ≤ 3 days for CRITICAL findings. (4) Update to Super Forms 6.3.314 as the definitive fix — given active exploitation, do not wait for the noisgate remediation SLA of ≤ 90 days; patch this week. If you cannot patch immediately, deactivate the plugin. Rotate wp-config.php database credentials on any host where compromise indicators are found.

Sources

  1. NVD – CVE-2026-14894 Detail
  2. Patchstack – Super Forms Unauthenticated Arbitrary File Upload
  3. GitHub PoC – shinthink/CVE-2026-14894
  4. GBHackers – Critical Super Forms Flaw Actively Exploited
  5. ProjectDiscovery – CVE-2026-14894 Nuclei Template
  6. SecurityWeek – 300,000 WordPress Sites Exposed
  7. Malware News – Attackers Actively Exploiting Super Forms
  8. IONIX Threat Center – CVE-2026-14894
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.