FKIE_CVE-2026-4394
Vulnerability from fkie_nvd - Published: 2026-04-08 00:16 - Updated: 2026-07-24 23:10
Severity
Summary
The Gravity Forms plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the Credit Card field's 'Card Type' sub-field (`input_<id>.4`) in all versions up to, and including, 2.9.30. This is due to the `get_value_entry_detail()` method in the `GF_Field_CreditCard` class outputting the card type value without escaping, combined with `get_value_save_entry()` accepting and storing unsanitized user input for the `input_<id>.4` parameter. The Card Type field is not rendered on the frontend form (it is normally derived from the card number), but the backend submission parser blindly accepts it if included in the POST request. This makes it possible for unauthenticated attackers to inject arbitrary web scripts that execute when an administrator views the form entry in the WordPress dashboard.
References
Impacted products
| Vendor | Product | Version |
|---|
{
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"product": "Gravity Forms",
"vendor": "Gravity Forms",
"versions": [
{
"lessThanOrEqual": "2.9.30",
"status": "affected",
"version": "0",
"versionType": "semver"
}
]
}
],
"source": "security@wordfence.com"
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "The Gravity Forms plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the Credit Card field\u0027s \u0027Card Type\u0027 sub-field (`input_\u003cid\u003e.4`) in all versions up to, and including, 2.9.30. This is due to the `get_value_entry_detail()` method in the `GF_Field_CreditCard` class outputting the card type value without escaping, combined with `get_value_save_entry()` accepting and storing unsanitized user input for the `input_\u003cid\u003e.4` parameter. The Card Type field is not rendered on the frontend form (it is normally derived from the card number), but the backend submission parser blindly accepts it if included in the POST request. This makes it possible for unauthenticated attackers to inject arbitrary web scripts that execute when an administrator views the form entry in the WordPress dashboard."
},
{
"lang": "es",
"value": "El plugin Gravity Forms para WordPress es vulnerable a cross-site scripting almacenado a trav\u00e9s del subcampo Tipo de Tarjeta del campo Tarjeta de Cr\u00e9dito (\u0027input_ id .4\u0027) en todas las versiones hasta la 2.9.30, inclusive. Esto se debe a que el m\u00e9todo \u0027get_value_entry_detail()\u0027 en la clase \u0027GF_Field_CreditCard\u0027 emite el valor del tipo de tarjeta sin escapar, combinado con que \u0027get_value_save_entry()\u0027 acepta y almacena entrada de usuario no saneada para el par\u00e1metro \u0027input_ id .4\u0027. El campo Tipo de Tarjeta no se renderiza en el formulario de frontend (normalmente se deriva del n\u00famero de tarjeta), pero el analizador de env\u00edo de backend lo acepta ciegamente si se incluye en la solicitud POST. Esto hace posible que atacantes no autenticados inyecten scripts web arbitrarios que se ejecutan cuando un administrador ve la entrada del formulario en el panel de WordPress."
}
],
"id": "CVE-2026-4394",
"lastModified": "2026-07-24T23:10:00.563",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"exploitabilityScore": 2.8,
"impactScore": 2.7,
"source": "security@wordfence.com",
"type": "Secondary"
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-4394",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-04-08T14:47:27.701858Z",
"version": "2.0.3"
}
}
]
},
"published": "2026-04-08T00:16:05.147",
"references": [
{
"source": "security@wordfence.com",
"url": "https://docs.gravityforms.com/gravityforms-change-log/"
},
{
"source": "security@wordfence.com",
"url": "https://plugins.trac.wordpress.org/browser/gravityforms/tags/2.9.25/includes/fields/class-gf-field-creditcard.php#L516"
},
{
"source": "security@wordfence.com",
"url": "https://plugins.trac.wordpress.org/browser/gravityforms/tags/2.9.25/includes/fields/class-gf-field-creditcard.php#L577"
},
{
"source": "security@wordfence.com",
"url": "https://plugins.trac.wordpress.org/browser/gravityforms/trunk/includes/fields/class-gf-field-creditcard.php#L516"
},
{
"source": "security@wordfence.com",
"url": "https://plugins.trac.wordpress.org/browser/gravityforms/trunk/includes/fields/class-gf-field-creditcard.php#L577"
},
{
"source": "security@wordfence.com",
"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/6f38d7b7-6df6-47a2-a9ba-87ef1f039e44?source=cve"
}
],
"sourceIdentifier": "security@wordfence.com",
"vulnStatus": "Deferred",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-79"
}
],
"source": "security@wordfence.com",
"type": "Secondary"
}
]
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…