Gravity Forms <= 3.1.2 — Unauthenticated PHP Object Injection via Post Custom Field
CVE-2026-103039Published · Updated Action summary
Affected: ≤3.1.2Update to 3.1.3 or newer
All remediation steps- Severity
- Critical9.8
- CVSS
- 9.8CVSS 3.1 · CNA (Wordfence)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HWhat does this vector mean?
AV:NAttack vector- Network
AC:LAttack complexity- Low
PR:NPrivileges required- None
UI:NUser interaction- None
S:UScope- Unchanged
C:HConfidentiality- High
I:HIntegrity- High
A:HAvailability- High
- Weakness
- CWE-502 PHP Object Injection
- Required access
- No account needed
- Exploit prediction (EPSS)
- 0.5% chance in 30 days43th percentile
- CISA KEV
- Not listed
On this page8
Am I affected?
Gravity Forms gravityforms
- Affected≤ 3.1.2
- Patched in3.1.3
Update to 3.1.3 or newer.
You are affected if you run ≤ 3.1.2. Version 3.1.3 and later are not affected by this issue.
- Check your version: in wp-admin go to Plugins → Installed Plugins and read the version under Gravity Forms.
- No admin access? Run a passive check of your site. It reads public files only.
- No account is needed to exploit this. Treat any exposed site on an affected version as at risk.
What to do
- Update to version 3.1.3, or a newer patched version
- Rotate administrator passwords and application secrets if the site ran a vulnerable version while publicly reachable.
- Watch Gravity Forms to get an email when the next vulnerability is published.
Advisory
Source description from Wordfence Intelligence, credited to Tin Pham (TF1T), Hao Ngo, Trong Pham.
The Gravity Forms plugin for WordPress is vulnerable to PHP Object Injection in all versions up to, and including, 3.1.2 via a Post Custom Field whose input type is List. This is due to GFFormsModel::create_post() passing the submitted value to WordPress' unrestricted global maybe_unserialize() rather than the plugin's own hardened GFCommon::maybe_unserialize(), which was added in 3.1.1 and passes allowed_classes => false precisely to prevent object instantiation. Where the field has a content template enabled, the submitted row reaches that call verbatim. This makes it possible for unauthenticated attackers to inject a PHP object into post meta. No PHP Object Injection gadget chain is present in the plugin itself; however, if a gadget chain is present via an additional plugin or theme, it could allow the attacker to perform actions such as remote code execution. Where the custom field is mapped to the protected _wp_page_template meta key, WordPress itself supplies the chain: validate_file() accepts non-scalars, WP_Theme::__toString() then resolves an attacker-controlled path, and on hosts with a readable PEAR install and register_argc_argv enabled this yields remote code execution.
Exploits & references
Proof-of-concept & detection
No public proof-of-concept or detection template is known for this vulnerability.
Advisories & patches
- Advisorywordfence.com
Related CVEs
More in Gravity Forms
All 30| Severity | Vulnerability | CVE | Published |
|---|---|---|---|
| High7.2 | Unauthenticated Stored Cross-Site Scripting via Post Excerpt / Post Custom Field / Rich-Text Paragraph Field Values ≤3.1.1Update to 3.1.2 | CVE-2026-90437 | |
| High7.2 | Unauthenticated Stored Cross-Site Scripting via List Field ≤3.1.2Update to 3.1.3 | CVE-2026-97645 | |
| High8.1 | Unauthenticated PHP Object Injection <3.1.1Update to 3.1.1 | CVE-2026-97296 | |
| Critical9.8 | Unauthenticated Arbitrary File Upload via Hidden File Upload Field ≤3.1.0.4Update to 3.1.1 | CVE-2026-84434 | |
| High7.2 | Unauthenticated Stored Cross-Site Scripting via Post Body Field Value ≤2.10.5Update to 3.0.0 | CVE-2026-16649 |
- High7.2Unauthenticated Stored Cross-Site Scripting via Post Excerpt / Post Custom Field / Rich-Text Paragraph Field Values
≤3.1.1Update to 3.1.2
- High7.2Unauthenticated Stored Cross-Site Scripting via List Field
≤3.1.2Update to 3.1.3
- High8.1Unauthenticated PHP Object Injection
<3.1.1Update to 3.1.1
- Critical9.8Unauthenticated Arbitrary File Upload via Hidden File Upload Field
≤3.1.0.4Update to 3.1.1
- High7.2Unauthenticated Stored Cross-Site Scripting via Post Body Field Value
≤2.10.5Update to 3.0.0
Same weakness (PHP Object Injection)
All PHP Object Injection| Severity | Vulnerability | CVE | Published |
|---|---|---|---|
| High7.2 | Unauthenticated Stored Cross-Site Scripting via Comment User-Agent Header | CVE-2026-120688 | |
| Critical9.8 | Unauthenticated Arbitrary File Upload via File Upload via Public Form Submission | CVE-2026-125055 | |
| Critical9.8 | Unauthenticated PHP Object Injection to Remote Code Execution via 'form' Parameter | CVE-2026-119077 | |
| Medium5.3 | Unauthenticated Sensitive Information Exposure in 'search' Parameter | CVE-2026-121518 |
- High7.2Unauthenticated Stored Cross-Site Scripting via Comment User-Agent Header
EZ SQL Reports Shortcode Widget and DB Backup
≤5.25.25Update to 5.26.45
- Critical9.8Unauthenticated Arbitrary File Upload via File Upload via Public Form Submission
Chatterbug Forms – Fast, Flexible WordPress Form Builder
≤1.0.2Update to 1.1
- Critical9.8Unauthenticated PHP Object Injection to Remote Code Execution via 'form' Parameter
ELEX WordPress HelpDesk & Customer Ticketing System
≤3.3.9Update to 3.4.0
- Medium5.3Unauthenticated Sensitive Information Exposure in 'search' Parameter
Customer Reviews for WooCommerce
≤5.127.0Update to 5.128.0
Timeline
CVE published
Severity critical, CVSS 9.8
Record last updated
Sources & licenses
Wordfence record- Vulnerability data
- Wordfence Intelligence. Copyright 2012-2026 Defiant Inc. Licensed under the CC BY-SA 4.0.
- CVE® identifiers
- Copyright 1999-2026 The MITRE Corporation. Used under the CVE Program. CVE® is a registered trademark of The MITRE Corporation.
- CVSS / CWE
- National Vulnerability Database (NVD), shown unmodified. This product uses the NVD API but is not endorsed or certified by the NVD.
- EPSS
- Exploit Prediction Scoring System by FIRST.org.
- VulnCrest content
- Summary, remediation guidance and page layout © VulnCrest. Not sourced from NVD.
