CVE-2026-87112

QA Assistants <= 5.3.0 - Unauthenticated PHP Object Injection to Remote Code Execution via 'raw_name' and 'dlevent_ver' Parameters

2026-11-06 18:15
Supakiad S. (m3ez)

Strategic Overview

Status
Patched in 5.3.0.1
Affected Version
<= 5.3.0
CVSS
8.8High
Weakness type
CWE-502 · Deserialization of Untrusted Data
CVE
CVE-2026-87112
View all QA Assistants – Driven by data vulnerabilities

At a glance

CVE-2026-87112 is a high-severity Deserialization of Untrusted Data vulnerability in the QA Assistants WordPress plugin, affecting versions <= 5.3.0. It carries a CVSS score of 8.8 (reachable over the network; low attack complexity; high confidentiality, integrity, availability impact). Exploitation requires no authentication. The issue is fixed in version 5.3.0.1; sites on affected versions should update now. Disclosed November 2026, reported by Supakiad S. (m3ez).

Vulnerability Overview

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.

Technical Analysis

The vector marks this flaw as remotely reachable over the network, with low attack complexity — no special timing or configuration is needed, and no interaction from a victim user. A successful exploit has high impact on confidentiality, integrity, availability — full site compromise territory.

CWE-502: Deserialization of Untrusted Data

QA Assistants <= 5.3.0 carries this weakness at dlevent_ver, and reaching it takes no account at all. Deserialization of untrusted data means the application reconstructs objects from input a caller controls, letting the attacker choose which classes get instantiated and what their properties hold.

A workable chain turns deserialization into file writes, deletions or code execution, depending on what the loaded classes do in their magic methods. For QA Assistants the fix is 5.3.0.1: builds <= 5.3.0 are affected, anything from 5.3.0.1 onward is not.

Remediation

Update to version 5.3.0.1, or a newer patched version

How does WordSec protect against this?

Requests carrying this pattern arrive without a session, so nothing upstream of the firewall gets a chance to reject them: WordSec's web application firewall inspects request payloads before WordPress loads them. Classes like this one can leave something behind, so the staged malware scanner is the second half: it looks for dropped files and modified code rather than for the request that created them. None of that substitutes for the fix: QA Assistants 5.3.0.1 closes this, and updating the plugin is the step that ends it.

  • Firewall
  • Scanner
  • Login Security

External References

Related records

Vulnerability data © Defiant, Inc., provided under the Wordfence Intelligence T&C