Skip to main content

Gravity Forms CVE-2026-19513

| EUVDEUVD-2026-69135 HIGH
Unrestricted Upload of File with Dangerous Type (CWE-434)
2026-09-01 Wordfence GHSA-fjj9-76vm-r7vp
8.1
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Identify public Gravity Forms with multi-file upload enabled
  2. Delivery
    Capture valid form state URL hash via benign submission
  3. Exploit
    Craft PNG/PDF polyglot embedding PHP web shell
  4. Install
    Replay hash as chunk continuation token with attacker-chosen .php filename
  5. C2
    Upload lands in unguarded NGINX-served temp directory
  6. Execute
    HTTP GET to uploaded file triggers PHP execution
  7. Impact
    Remote code execution as web server process user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V5 - File Handling File type validation, storage isolation
MITRE ATT&CK

2 techniques across 2 tactics: Command and Control, Persistence

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Remote code execution requires all three conditions simultaneously: (1) a publicly accessible Gravity Forms form with a File Upload field and Multiple Files mode enabled - authenticated-only or non-upload forms are not exploitable by unauthenticated attackers; (2) a web server that does not honor .htaccess directives, specifically NGINX, Caddy, or any FastCGI-based stack where PHP execution in upload directories is not restricted by server configuration; and (3) the Gravity Forms temporary upload directory must be reachable via HTTP. The bundled .htaccess file placed by Gravity Forms during installation and activation blocks PHP execution on Apache and LiteSpeed, making those deployments immune to the RCE path even if the malicious file is written. The secondary XSS path is available on .htaccess-protected deployments but additionally requires a victim user to navigate to the attacker-generated .html URL (PR:N per CVSS but UI:R for this sub-path). Authentication is not required for the upload itself per CVSS PR:N.

Impact

The CVSS 8.1 High score (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H) correctly captures the zero-authentication requirement and reflects high attack complexity, which is warranted given the dual preconditions: a publicly accessible form with Multiple Files upload enabled AND a non-Apache web server. EPSS data is absent from the provided input and cannot be assessed. The vulnerability is not listed in the CISA KEV catalog, and no POC has been disclosed at time of analysis - these are distinct signals that should not be conflated. Despite the high base score, real-world RCE risk is meaningfully reduced for the majority of WordPress deployments, as Apache and LiteSpeed hosts with the plugin's intact .htaccess are fully protected against PHP execution. NGINX-hosted WordPress installations - a growing but still minority segment - represent the highest-risk population. The XSS path is secondary and gated on victim navigation to the crafted URL. Overall, this is a high-priority patch for NGINX deployments and a moderate-urgency patch for Apache deployments where .htaccess integrity cannot be guaranteed.

Exploit ScenarioDerived

An attacker enumerates a target WordPress site running NGINX, identifies a public Gravity Forms form with a File Upload field using Multiple Files mode, and captures a valid form state URL hash by submitting a benign file. They craft a PNG polyglot containing a PHP web shell, replay the captured hash as the chunk continuation token, and specify a .php destination filename in the upload request. Once the file lands in the unguarded temporary directory, the attacker issues a GET request to it, triggering PHP execution and obtaining interactive shell access to the web server process. No confirmed public exploit code exists at time of analysis, though the individual techniques (polyglot construction, chunk hash replay) are independently documented in offensive security literature.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 01, 2026

Arbitrary file upload in Gravity Forms for WordPress (all versions ≤ 3.0.2) allows unauthenticated attackers to write PHP or HTML files with attacker-controlled names to the plugin's temporary upload directory by exploiting chunk-state hash reuse in the GFAsyncUpload::upload() function. On NGINX or other non-.htaccess-respecting web servers, this leads to remote code execution; on Apache deployments the plugin's bundled .htaccess file blocks PHP execution, though attacker-written .html files can still produce stored same-origin XSS if a victim visits the generated URL. No public exploit has been identified at time of analysis, and exploitation is meaningfully constrained by two simultaneous prerequisites: a specific form configuration and a non-Apache web server.

RemediationAI

Upgrade Gravity Forms beyond version 3.0.2 by reviewing the vendor change log at https://docs.gravityforms.com/gravityforms-change-log/ - the precise patched release number is not confirmed in the available input data and should be verified there before deploying. For operators who cannot patch immediately, the highest-value compensating control is to disable the Multiple Files option on all public-facing File Upload fields in Gravity Forms, which removes the prerequisite for this attack entirely with no functional loss to non-multi-upload workflows. For NGINX deployments, add a server-block directive blocking PHP execution in the Gravity Forms upload path - for example location ~* /gravity_forms/.*\.php$ { deny all; } - then reload NGINX; note this does not block .html-based XSS. For Apache-based stacks, verify that the plugin-installed .htaccess file is present and unmodified in the wp-content/uploads/gravity_forms/ directory; its absence (due to misconfiguration or security hardening that disabled AllowOverride) would re-expose the PHP execution path and should be remediated by restoring the file or setting php_flag engine off via Options directives.

Affected VersionsENISA

Gravity Forms 0 ≤3.0.2

Affected Packages

euvd gravity_forms no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The flaw is classified as CWE-434 (Unrestricted Upload of File with Dangerous Type) and originates in GFAsyncUpload::upload(), Gravity Forms' handler for multi-file chunked uploads. Two weaknesses combine: public form state URL hashes can be recycled as chunk continuation hashes, bypassing per-session upload state validation; and attacker-supplied temporary filenames are accepted before sanitization executes, allowing selection of .php or .html extensions. This permits uploading a PNG/PDF polyglot - a file whose leading bytes satisfy image or PDF magic-byte validation but whose body contains PHP code - to an attacker-chosen filename in the plugin's temporary upload directory (wp-content/uploads/gravity_forms/). The CPE cpe:2.3:a:gravity_forms:gravity_forms:*:*:*:*:*:*:*:* covers all versions through 3.0.2. On Apache and LiteSpeed stacks the plugin installs a .htaccess file restricting execution in this directory at setup time, neutralizing the PHP code-execution path. NGINX does not natively process .htaccess directives, leaving .php files served executable by the PHP-FPM or FastCGI handler configured for the vhost.

Know when Gravity Forms gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Wordfence) PRIMARY 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

AC:H reflects dual precondition of multi-file public form plus NGINX hosting; PR:N confirmed by unauthenticated form submission vector; C/I/A:H for RCE path.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

DescriptionCVE.org

The Gravity Forms plugin for WordPress is vulnerable to Arbitrary File Upload in all versions up to, and including, 3.0.2. This is due to insufficient validation of multi-file upload chunk state in the GFAsyncUpload::upload() function, where public form state URL hashes can be reused as chunk continuation hashes and attacker-controlled temporary filenames are accepted before sanitization. This makes it possible for unauthenticated attackers, when a public form contains a File Upload field with Multiple Files enabled, to upload a valid PNG/PDF polyglot to an attacker-selected public .php or .html filename in the Gravity Forms temporary upload directory. This can lead to remote code execution on WordPress systems that use NGINX or other non .htaccess respecting web servers. NOTE: During installation and activation, the Gravity Forms plugin places a .htaccess file in this directory, which prevents this vulnerability from being exploited despite the PHP file being written to the temporary upload directory. In these cases where PHP execution is blocked, attacker-written HTML can result in stored same-origin cross-site scripting if a victim visits the generated file URL.

Executive ViewAI

Why It Matters

Gravity Forms for WordPress versions 3.0.2 and earlier contain an arbitrary file upload vulnerability that unauthenticated attackers can exploit to write files to the plugin's temporary directory. On non-Apache servers, this enables remote code execution and complete server compromise; on Apache servers, PHP execution is blocked but HTML files can facilitate stored cross-origin XSS. No public exploit has been identified at time of analysis, though exploitation requires both the vulnerable version and a specific form configuration.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Until patch availability, implement: on Apache servers, verify .htaccess blocks PHP execution in the upload directory and restrict directory access; on NGINX and non-Apache servers, disable Gravity Forms entirely or limit file uploads to authenticated users. Deploy Web Application Firewall rules blocking requests to /wp-content/uploads/gravity_forms/ containing executable file extensions. Monitor all file creation in the upload directory, audit file ownership and timestamps, and maintain comprehensive logging of Gravity Forms upload activity for security investigation.

Threat Intelligence Overview

EPSS Score
0.5%
Top 59% exploitable
Prevalence
High
leading premium WordPress form plugin, millions of active installs
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +40
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

Malicious file upload attacks exploit insufficient validation when web applications accept user-provided files.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

CVE-2026-84434 CRITICAL POC
9.8 Sep 19

Unauthenticated arbitrary file upload in the Gravity Forms WordPress plugin through version 3.1.0.4 can lead to remote c

CVE-2017-17780 MEDIUM POC
6.1 Dec 20

The Clockwork SMS clockwork-test-message.php component has XSS via a crafted "to" parameter in a clockwork-test-message

CVE-2023-2701 MEDIUM POC
6.1 Jul 17

The Gravity Forms WordPress plugin before 2.7.5 does not escape generated URLs before outputting them in attributes, lea

CVE-2023-28782 HIGH
8.3 Dec 20

Deserialization of Untrusted Data vulnerability in Rocketgenius Inc. Rated high severity (CVSS 8.3), this vulnerability

CVE-2026-12997 HIGH
7.5 Jul 15

Arbitrary file disclosure in the Gravity Forms WordPress plugin (all versions through 2.10.4) lets unauthenticated attac

CVE-2026-16649 HIGH
7.2 Sep 05

Stored Cross-Site Scripting in the Gravity Forms WordPress plugin (all versions ≤2.10.5) permits unauthenticated attacke

CVE-2026-5110 HIGH
7.2 May 02

Stored cross-site scripting (XSS) in Gravity Forms WordPress plugin versions ≤2.10.0 allows remote unauthenticated attac

CVE-2026-5111 HIGH
7.2 May 02

Stored Cross-Site Scripting in Gravity Forms plugin for WordPress through version 2.10.0 allows unauthenticated remote a

CVE-2026-5109 HIGH
7.2 May 02

Stored XSS in Gravity Forms for WordPress ≤2.10.0 allows unauthenticated remote attackers to inject malicious JavaScript

CVE-2026-5112 HIGH
7.2 May 02

Stored Cross-Site Scripting in Gravity Forms for WordPress up to 2.10.0 enables unauthenticated attackers to inject mali

CVE-2026-5113 HIGH
7.2 May 02

Stored Cross-Site Scripting in Gravity Forms plugin for WordPress allows unauthenticated remote attackers to inject mali

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy