CVE-2026-87112
8.8 HIGHPublished 2026-11-07 · Updated 2026-11-08
AI risk analysis
- Summary
- The QA Assistants – Driven by data WordPress plugin (<=5.3.0) contains a PHP Object Injection vulnerability due to unsafe deserialization via wrap_unserialize_static() and insufficient sanitization in serialize_escape(), allowing unauthenticated attackers to inject malicious PHP objects. Attackers can leverage the bundled Guzzle FileCookieJar gadget to write arbitrary files, potentially achieving Remote Code Execution.
- Exploitability
- Exploitation requires no authentication and is triggered automatically via the wp-cron.php endpoint every two minutes after an attacker plants a crafted queue file, making it highly exploitable once the initial payload is delivered.
- Blast radius
- Successful exploitation could lead to full server compromise via arbitrary file write (e.g., webshell deployment), enabling complete data breach, system takeover, or lateral movement within the hosting environment.
- Detection
- Defenders should monitor wp-content/uploads/ for unexpected or recently modified files with non-standard extensions (e.g., .php, .inc) in directories accessible via the web, and inspect wp_options table entries related to cron events for anomalies in scheduled task payloads; additionally, logs at wp-content/debug.log may contain PHP warnings or errors during deserialization attempts if WP_DEBUG is enabled.
- Prioritized remediation
- Upgrade to version 5.3.1 or later, which addresses the deserialization vulnerability by applying allowed_classes restrictions and sanitizing raw_name path traversal sequences.
Analysis generated locally by garnet-coder (no data left the box). AI-assisted — verify against primary sources before acting.
NVD description
The QA Assistants – Driven by data plugin for WordPress is vulnerable to PHP Object Injection in all versions up to, and including, 5.3.0 via the 'dlevent_ver' parameter. This is due to unrestricted PHP deserialization via wrap_unserialize_static() calling unserialize() without an allowed_classes restriction, combined with serialize_escape() failing to sanitize path traversal sequences in the raw_name parameter. This makes it possible for unauthenticated attackers to inject a PHP Object. The Guzzle FileCookieJar gadget present in the plugin's bundled Composer dependencies can be leveraged to perform an Arbitrary File Write, writing attacker-controlled content to an attacker-chosen filename, which can result in Remote Code Execution. Exploitation requires triggering the qahm_cron_data_manage scheduled event via wp-cron.php to invoke the deserialization sink against a planted queue file, but this endpoint requires no authentication and fires automatically on a two-minute schedule.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weaknesses
CWE-502
All references
- https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-admin-page-realtime.php#L183
- https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-base.php#L701
- https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-behavioral-data.php#L770
- https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-core-base.php#L780
- https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-cron-proc.php#L698
- https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/qahm-ajax.php#L319
- https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php#L38
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3728466%40qa-heatmap-analytics&new=3728466%40qa-heatmap-analytics
- https://www.wordfence.com/threat-intel/vulnerabilities/id/76c5b5f1-a04b-4219-b8c0-ee53139fa787?source=cve
Source data: NVD (nvd.nist.gov), public domain. Exploit-DB.ai adds local AI analysis for defensive use only.
Related CVEs
- CRITICALCVE-2026-103693
- HIGHCVE-2026-104932
- CRITICALCVE-2026-112854
- CRITICALCVE-2026-112862
- CRITICALCVE-2026-115968
- CRITICALCVE-2026-119516
- CRITICALCVE-2026-115252
- CRITICALCVE-2026-100512
Related by shared AI tags and CWE weakness class. Browse the full archive.