{"id":"CVE-2026-87112","published":"2026-11-07T07:17:05.090","lastModified":"2026-11-08T19:17:42.300","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.","cvssScore":8.8,"cvssSeverity":"HIGH","cvssVector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","cwes":["CWE-502"],"vendors":[],"products":[],"references":[{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-admin-page-realtime.php#L183","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-base.php#L701","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-behavioral-data.php#L770","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-core-base.php#L780","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-cron-proc.php#L698","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/qahm-ajax.php#L319","tags":[]},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php#L38","tags":[]},{"url":"https://plugins.trac.wordpress.org/changeset?reponame=&old=3728466%40qa-heatmap-analytics&new=3728466%40qa-heatmap-analytics","tags":[]},{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/76c5b5f1-a04b-4219-b8c0-ee53139fa787?source=cve","tags":[]}],"exploitRefs":[],"hasPoc":false,"ai":{"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.","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.","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.","tags":["rce","object-injection","unserialize","wordpress","cron-abuse","file-write"],"model":"garnet-coder","analyzedAt":"2026-11-08T09:53:14.172Z"}}