Summary
CVE-2026-28149 is a critical, unauthenticated PHP Object Injection (Insecure Deserialization) vulnerability affecting the Headless Single Sign On WordPress plugin developed by miniOrange, in all versions up to and including 1.6. The flaw allows a remote, unauthenticated attacker to submit crafted serialized data that the plugin unsafely deserializes, potentially leading to object injection and — depending on other classes ("gadget chains") available in the WordPress installation — remote code execution, arbitrary file operations, or full site compromise. The issue carries a CVSS v3.1 base score of 9.8 (Critical).
Technical details
- Root cause: The plugin passes attacker-controllable input into a PHP deserialization function (e.g.,
unserialize()) without validating or sanitizing it first, classified under CWE-502 (Deserialization of Untrusted Data). - Trigger conditions: No authentication or user interaction is required; an attacker only needs network access to a vulnerable WordPress site running the affected plugin version.
- Attack vector: Network-based (AV:N), low attack complexity (AC:L), no privileges required (PR:N), no user interaction (UI:N).
- Impact: Successful exploitation can inject arbitrary PHP objects into the application. The practical severity depends on the presence of exploitable "POP chain" classes elsewhere in the WordPress core, theme, or other installed plugins — if such gadgets exist, this can escalate to remote code execution, arbitrary file read/write/delete, or complete takeover of the affected site (High confidentiality, integrity, and availability impact).
Affected software
- miniOrange Headless Single Sign On WordPress plugin, versions ≤ 1.6
Severity
- CVSS v3.1 Base Score: 9.8 (Critical)
- Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Mitigation and recommended actions
- Immediate: Upgrade the Headless Single Sign On plugin to version 1.6.1 or later, where the vulnerable deserialization behavior has been remediated.
- If immediate patching is not possible:
- Temporarily deactivate the plugin until it can be updated.
- Restrict or monitor unauthenticated inbound traffic to WordPress endpoints exposed by the plugin using a web application firewall (WAF), blocking requests containing suspicious serialized PHP object payloads (e.g., strings beginning with
O:,a:, ors:patterns typical of PHP serialization). - Audit installed plugins and themes for known "gadget chain" classes that could be leveraged in conjunction with this deserialization flaw, and update or remove any that are outdated or unmaintained.
- Review WordPress access and error logs for anomalous POST requests to plugin-related endpoints as an indicator of exploitation attempts.

