ZeroHour

CVE-2026-19513

mass

Unauthenticated Arbitrary File Upload in Gravity Forms WordPress Plugin

CVSS 3.1
8.1 high
EPSS
<1%p41
Published
()
Modified
AI analysis

Gravity Forms for WordPress, in all versions up to and including 3.0.2, is vulnerable to unauthenticated arbitrary file upload because the GFAsyncUpload::upload() function insufficiently validates multi-file upload chunk state, allowing public form state URL hashes to be reused as chunk continuation hashes and attacker-controlled temporary filenames to be accepted before sanitization. An attacker can target any publicly reachable form containing a File Upload field with the Multiple Files option enabled and plant a PNG/PDF polyglot under an attacker-chosen .php or .html filename in the plugin's temporary upload directory. On NGINX or other web servers that do not honor the .htaccess file the plugin installs in that directory, the uploaded .php file can execute, yielding remote code execution on the WordPress host; on Apache-style servers where PHP execution is blocked, uploaded HTML can instead produce stored same-origin cross-site scripting if a victim visits the generated file URL. Any WordPress site running Gravity Forms 3.0.2 or earlier with such a form is affected, with the RCE scenario limited to non-.htaccess-respecting servers. No public proof-of-concept or confirmed in-the-wild exploitation is known; EPSS currently estimates a 0.5% probability of exploitation within 30 days and the issue is not in CISA's KEV catalog.

What to do: Update Gravity Forms to a patched release newer than 3.0.2 as soon as it is available. As interim mitigation, deny PHP execution in the Gravity Forms uploads directory at the web-server level (e.g., an NGINX location block), disable the Multiple Files option on public forms, and audit the Gravity Forms temporary upload directory for unexpected .php or .html files. Note that Apache sites are protected from RCE by the bundled .htaccess but remain exposed to stored XSS via uploaded HTML, so do not treat .htaccess as a complete fix.

Affected
Rocketgenius Gravity Forms (WordPress plugin)all versions up to and including 3.0.2
Estimated exposure
masslikely hundreds of thousands of WordPress sites (vendor-marketed install base of 1M+ sites) — Gravity Forms is one of the most widely deployed premium WordPress form plugins with a vendor-reported install base exceeding one million sites, and the required configuration (a public form with multi-file upload enabled) is a common…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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.

Ecosystems
WordPress
Weakness
CWE-434
Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.