CVE-2026-19513 in Gravity Forms Plugininfo

Summary

by MITRE • 09/01/2026

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.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Analysis

by VulDB Data Team • 09/01/2026

The Gravity Forms plugin for WordPress contains a critical arbitrary file upload vulnerability affecting all versions up to and including 3.0.2. This flaw resides within the GFAsyncUpload::upload() function, which handles multi-file uploads through a chunked transfer mechanism. The core technical deficiency is an insufficient validation of the chunk state during this process. Specifically, the system fails to properly verify that the public form state URL hashes are distinct from the internal chunk continuation hashes. This logical error allows attackers to reuse valid public form state URLs as if they were legitimate chunk continuation tokens, effectively bypassing authentication and authorization checks required for file uploads.

Furthermore, the vulnerability is exacerbated by inadequate sanitization of temporary filenames provided during the upload process. The application accepts attacker-controlled filename inputs before performing necessary security checks or sanitization routines. This sequence error permits an unauthenticated actor to dictate the final name of the uploaded file within the Gravity Forms temporary upload directory. By exploiting this flaw, an attacker can craft a polyglot file that satisfies both image and document parsers, such as a PNG/PDF hybrid, while simultaneously embedding malicious PHP or HTML code. The ability to specify arbitrary filenames allows the attacker to target specific extensions like .php or .html, which are executable by many web server configurations.

The operational impact of this vulnerability is severe, potentially leading to remote code execution on vulnerable WordPress systems. If the underlying web server does not respect Apache-style configuration files such as .htaccess, for example NGINX or other non-.htaccess respecting servers, the uploaded PHP file can be executed directly via a HTTP request. This results in full system compromise, allowing attackers to execute arbitrary commands, exfiltrate data, or establish persistent backdoors within the WordPress environment. The vulnerability is particularly dangerous because it requires no authentication, making it accessible to any internet user who discovers a public form with multiple file upload capabilities enabled.

However, there are specific mitigating factors present in standard installations of Gravity Forms. During installation and activation, the plugin automatically places an .htaccess file within the temporary upload directory. This configuration directive typically prohibits the execution of PHP scripts within that folder, thereby neutralizing the remote code execution vector for systems relying on Apache with mod_rewrite or similar modules that honor these directives. In such secured environments, the arbitrary write capability still poses a risk but shifts from server-side compromise to client-side attacks. Specifically, if an attacker uploads a malicious HTML file instead of PHP, and the web server serves it as content rather than executing it, this can lead to stored cross-site scripting XSS vulnerabilities. An unauthenticated victim visiting the URL of the generated file may have their browser execute arbitrary JavaScript in the context of the vulnerable site, leading to session hijacking or other client-side exploits classified under CWE-79.

From a threat intelligence perspective, this vulnerability aligns with Common Weakness Enumeration standards such as CWE-434 for Unrestricted Upload of File with Dangerous Type and CWE-20 for Improper Input Validation. The exploitation technique maps to MITRE ATT&CK tactics involving Initial Access via Web Application Exploitation and Execution through Server-Side Script Interpretation. Security administrators should prioritize updating the Gravity Forms plugin to a version newer than 3.0.2 immediately upon release or availability from the vendor. For systems where an update is not immediately feasible, implementing strict web application firewall rules that block suspicious file upload patterns or restricting access to the uploads directory can provide temporary mitigation. Additionally, verifying server configurations to ensure that .htaccess directives are correctly enforced by NGINX using try_files or equivalent mechanisms is crucial for maintaining security posture in environments where PHP execution must be strictly controlled within user-uploaded directories.

Responsible

Wordfence

Reservation

08/11/2026

Disclosure

09/01/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Do you know our Splunk app?

Download it now for free!