
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2026-27206 is a PHP Object Injection vulnerability in the zumba/json-serializer library (Composer package) caused by unrestricted deserialization via the @type field in JsonSerializer::unserialize(). It affects all versions prior to 3.2.3 and was disclosed on February 19, 2026, with the patch released the same day. The vulnerability carries a CVSS v3.1 base score of 8.1 (High) (GitHub Advisory, Security Advisory).
The root cause is CWE-502 (Deserialization of Untrusted Data): the library's JsonSerializer::unserialize() method reads a special @type field from JSON input and instantiates the named PHP class without any restriction on which classes are permitted. An attacker who controls the JSON payload can specify any class available in the application's autoloader, including those with dangerous magic methods such as __wakeup() or __destruct(). If the application or its dependencies contain exploitable gadget chains, this can escalate to Remote Code Execution (RCE) — a risk profile analogous to PHP's native unserialize() called without the allowed_classes restriction. Exploitation requires that attacker-controlled JSON reaches JsonSerializer::unserialize() and that a usable gadget chain exists in the application's class hierarchy (GitHub Advisory, Security Advisory).
Successful exploitation can result in arbitrary code execution, data exfiltration, file manipulation, and denial of service, depending on the gadget chains available in the target application. Confidentiality, integrity, and availability are all rated High. Applications that only deserialize internally generated, trusted JSON are not affected; the risk is limited to deployments that pass user-supplied or third-party JSON directly into JsonSerializer::unserialize() (GitHub Advisory).
No public proof-of-concept exploit or evidence of in-the-wild exploitation has been reported as of the time of disclosure (GitHub Advisory). The EPSS score is approximately 0.39% (0.003880), placing it in the 34th percentile for exploitation likelihood within 30 days. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation complexity is rated High because a usable gadget chain must exist in the target application's dependencies, limiting the pool of exploitable targets.
zumba/json-serializer versions below 3.2.3 (e.g., via composer.lock exposure, package metadata, or dependency scanning tools like Composer Audit).JsonSerializer::unserialize() — such as an API endpoint, cookie value, or deserialized session data.__wakeup(), __destruct(), or __toString() magic methods that can be chained to achieve code execution or other malicious effects.@type field set to the target gadget class and populate its properties to trigger the desired behavior upon instantiation, for example:{"@type": "VulnerableGadgetClass", "command": "id"}JsonSerializer::unserialize().__wakeup() or __destruct() with attacker-controlled property values, potentially achieving RCE, file write, or data exfiltration (GitHub Advisory, Security Advisory).JsonSerializerException with unknown class names (may indicate probing attempts).@type field specifying non-standard or unexpected class names; anomalous outbound connections from the PHP application server following deserialization events./tmp; modification timestamps on PHP files inconsistent with deployment history.bash, curl, wget, python, nc); unexpected cron jobs or scheduled tasks created under the web server user account.Upgrade zumba/json-serializer to version 3.2.3 or later, which introduces the setAllowedClasses(?array $allowedClasses) method to restrict which classes may be instantiated during deserialization (Release 3.2.3). After upgrading, configure an explicit allowlist: use $serializer->setAllowedClasses([]) to block all class instantiation, or provide a strict list of trusted classes. If immediate upgrade is not feasible, ensure JsonSerializer::unserialize() is never called on untrusted or attacker-controlled JSON, and validate/sanitize all JSON input before deserialization (Security Advisory).
The vulnerability was reported by security researcher TheDeepOpc and remediated by maintainers jrbasso and cjsaylor, with the patch released on the same day as disclosure (February 19, 2026) (Release 3.2.3). Community coverage appeared on dev.to and security aggregators shortly after disclosure, with posts noting the similarity to PHP's native unserialize() risk. Social media mentions were observed on Mastodon and Bluesky via TheHackerWire. Overall community sentiment treated this as a moderate-severity supply chain concern requiring prompt patching for applications handling untrusted JSON.
Fix availability across major Linux distributions and their releases.
bookworm
php-zumba-json-serializer
sid
php-zumba-json-serializer: 3.2.4-1
trixie
php-zumba-json-serializer
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."