{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-87112","assignerOrgId":"b15e7b5b-3da4-40ae-a43c-f7aa60e62599","state":"PUBLISHED","assignerShortName":"Wordfence","dateReserved":"2026-09-08T20:36:46.771Z","datePublished":"2026-11-07T06:39:37.565Z","dateUpdated":"2026-11-07T06:39:37.565Z"},"containers":{"cna":{"providerMetadata":{"orgId":"b15e7b5b-3da4-40ae-a43c-f7aa60e62599","shortName":"Wordfence","dateUpdated":"2026-11-07T06:39:37.565Z"},"affected":[{"vendor":"quarka","product":"QA Assistants – Driven by data","versions":[{"version":"0","status":"affected","lessThanOrEqual":"5.3.0","versionType":"semver"}],"defaultStatus":"unaffected"}],"descriptions":[{"lang":"en","value":"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."}],"title":"QA Assistants <= 5.3.0 - Unauthenticated PHP Object Injection to Remote Code Execution via 'raw_name' and 'dlevent_ver' Parameters","references":[{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/76c5b5f1-a04b-4219-b8c0-ee53139fa787?source=cve"},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-base.php#L701"},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-admin-page-realtime.php#L183"},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php#L38"},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-cron-proc.php#L698"},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-core-base.php#L780"},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/qahm-ajax.php#L319"},{"url":"https://plugins.trac.wordpress.org/browser/qa-heatmap-analytics/tags/5.2.0.1/class-qahm-behavioral-data.php#L770"},{"url":"https://plugins.trac.wordpress.org/changeset?reponame=&old=3728466%40qa-heatmap-analytics&new=3728466%40qa-heatmap-analytics"}],"problemTypes":[{"descriptions":[{"lang":"en","description":"CWE-502 Deserialization of Untrusted Data","cweId":"CWE-502","type":"CWE"}]}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":8.8,"baseSeverity":"HIGH"}}],"credits":[{"lang":"en","type":"finder","value":"Supakiad S. (m3ez)"}],"timeline":[{"time":"2026-11-06T18:15:14.000Z","lang":"en","value":"Disclosed"}]}}}