CVE-2026-27206
Zumba Json Serializer has a potential PHP Object Injection via Unrestricted @type in unserialize()
Zumba Json Serializer is a library to serialize PHP variables in JSON format. In versions 3.2.2 and below, the library allows deserialization of PHP objects from JSON using a special @type field. The deserializer instantiates any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application. If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies. This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction. Applications are impacted only if untrusted or attacker-controlled JSON is passed into JsonSerializer::unserialize() and the application or its dependencies contain classes that can be leveraged as a gadget chain. This issue has been fixed in version 3.2.3. If an immediate upgrade isn't feasible, mitigate the vulnerability by never deserializing untrusted JSON with JsonSerializer::unserialize(), validating and sanitizing all JSON input before deserialization, and disabling @type-based object instantiation wherever possible.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used 8.1
Zumba Json Serializer has a potential PHP Object Injection via Unrestricted @type in unserialize()
Zumba Json Serializer is a library to serialize PHP variables in JSON format. In versions 3.2.2 and below, the library allows deserialization of PHP objects from JSON using a special @type field. The deserializer instantiates any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application. If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies. This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction. Applications are impacted only if untrusted or attacker-controlled JSON is passed into JsonSerializer::unserialize() and the application or its dependencies contain classes that can be leveraged as a gadget chain. This issue has been fixed in version 3.2.3. If an immediate upgrade isn't feasible, mitigate the vulnerability by never deserializing untrusted JSON with JsonSerializer::unserialize(), validating and sanitizing all JSON input before deserialization, and disabling @type-based object instantiation wherever possible.
- Record
CVE-2026-27206- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
EUVDEUVD-2026-7724 8.1
Zumba Json Serializer is a library to serialize PHP variables in JSON format. In versions 3.2.2 and below, the library allows deserialization of PHP objects from JSON using a special @type field. The deserializer instantiates any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application. If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies. This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction. Applications are impacted only if untrusted or attacker-controlled JSON is passed into JsonSerializer::unserialize() and the application or its dependencies contain classes that can be leveraged as a gadget chain. This issue has been fixed in version 3.2.3. If an immediate upgrade isn't feasible, mitigate the vulnerability by never deserializing untrusted JSON with JsonSerializer::unserialize(), validating and sanitizing all JSON input before deserialization, and disabling @type-based object instantiation wherever possible.
- Record
EUVD-2026-7724- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-v7m3-fpcr-h7m2 8.1
Zumba Json Serializer has a potential PHP Object Injection via Unrestricted @type in unserialize()
Description
The zumba/json-serializer library allows deserialization of PHP objects from JSON using a special @type field.
Prior to version 3.2.3, the deserializer would instantiate any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application.
If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies.
This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction.
Impact
This vulnerability allows instantiation of arbitrary PHP classes via the @type field when deserializing JSON.
Applications are impacted only if:
- Untrusted or attacker-controlled JSON is passed into
JsonSerializer::unserialize(), and - The application or its dependencies contain classes that can be leveraged as a gadget chain.
Successful exploitation may lead to:
- Arbitrary code execution
- Data exfiltration
- File manipulation
- Denial of service
Applications that only deserialize trusted data are not affected.
Patches
This issue is mitigated in version 3.2.3.
Version 3.2.3 introduces the method: setAllowedClasses(?array $allowedClasses)
This allows applications to restrict which classes may be instantiated during deserialization, similar to PHP's native unserialize() allowed_classes option.
Users should upgrade to version 3.2.3 or later and configure an appropriate class allowlist.
Workarounds
If upgrading is not immediately possible, applications should ensure that:
JsonSerializer::unserialize()is never called on untrusted or attacker-controlled JSON.- JSON input is validated and sanitized before deserialization.
- Object instantiation via
@typeis disabled in application logic where possible.
After upgrading, users can mitigate risk by explicitly configuring:
$serializer->setAllowedClasses([]);
to disable all object instantiation, or by providing a strict allowlist of safe classes.
References
- CWE-502: https://cwe.mitre.org/data/definitions/502.html
- PHP
unserialize()documentation: https://www.php.net/manual/en/function.unserialize.php - OWASP PHP Object Injection: https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection
- Record
GHSA-v7m3-fpcr-h7m2- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
NVD 8.1
Zumba Json Serializer is a library to serialize PHP variables in JSON format. In versions 3.2.2 and below, the library allows deserialization of PHP objects from JSON using a special @type field. The deserializer instantiates any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application. If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies. This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction. Applications are impacted only if untrusted or attacker-controlled JSON is passed into JsonSerializer::unserialize() and the application or its dependencies contain classes that can be leveraged as a gadget chain. This issue has been fixed in version 3.2.3. If an immediate upgrade isn't feasible, mitigate the vulnerability by never deserializing untrusted JSON with JsonSerializer::unserialize(), validating and sanitizing all JSON input before deserialization, and disabling @type-based object instantiation wherever possible.
- Record
CVE-2026-27206- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSV 8.1
Zumba Json Serializer has a potential PHP Object Injection via Unrestricted @type in unserialize()
Zumba Json Serializer is a library to serialize PHP variables in JSON format. In versions 3.2.2 and below, the library allows deserialization of PHP objects from JSON using a special @type field. The deserializer instantiates any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application. If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies. This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction. Applications are impacted only if untrusted or attacker-controlled JSON is passed into JsonSerializer::unserialize() and the application or its dependencies contain classes that can be leveraged as a gadget chain. This issue has been fixed in version 3.2.3. If an immediate upgrade isn't feasible, mitigate the vulnerability by never deserializing untrusted JSON with JsonSerializer::unserialize(), validating and sanitizing all JSON input before deserialization, and disabling @type-based object instantiation wherever possible.
- Record
CVE-2026-27206- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-27206 8.1
Zumba Json Serializer is a library to serialize PHP variables in JSON format. In versions 3.2.2 and below, the library allows deserialization of PHP objects from JSON using a special @type field. The deserializer instantiates any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application. If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies. This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction. Applications are impacted only if untrusted or attacker-controlled JSON is passed into JsonSerializer::unserialize() and the application or its dependencies contain classes that can be leveraged as a gadget chain. This issue has been fixed in version 3.2.3. If an immediate upgrade isn't feasible, mitigate the vulnerability by never deserializing untrusted JSON with JsonSerializer::unserialize(), validating and sanitizing all JSON input before deserialization, and disabling @type-based object instantiation wherever possible.
- Record
DEBIAN-CVE-2026-27206- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVGHSA-v7m3-fpcr-h7m2 8.1
Zumba Json Serializer has a potential PHP Object Injection via Unrestricted @type in unserialize()
Description
The zumba/json-serializer library allows deserialization of PHP objects from JSON using a special @type field.
Prior to version 3.2.3, the deserializer would instantiate any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application.
If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies.
This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction.
Impact
This vulnerability allows instantiation of arbitrary PHP classes via the @type field when deserializing JSON.
Applications are impacted only if:
- Untrusted or attacker-controlled JSON is passed into
JsonSerializer::unserialize(), and - The application or its dependencies contain classes that can be leveraged as a gadget chain.
Successful exploitation may lead to:
- Arbitrary code execution
- Data exfiltration
- File manipulation
- Denial of service
Applications that only deserialize trusted data are not affected.
Patches
This issue is mitigated in version 3.2.3.
Version 3.2.3 introduces the method: setAllowedClasses(?array $allowedClasses)
This allows applications to restrict which classes may be instantiated during deserialization, similar to PHP's native unserialize() allowed_classes option.
Users should upgrade to version 3.2.3 or later and configure an appropriate class allowlist.
Workarounds
If upgrading is not immediately possible, applications should ensure that:
JsonSerializer::unserialize()is never called on untrusted or attacker-controlled JSON.- JSON input is validated and sanitized before deserialization.
- Object instantiation via
@typeis disabled in application logic where possible.
After upgrading, users can mitigate risk by explicitly configuring:
$serializer->setAllowedClasses([]);
to disable all object instantiation, or by providing a strict allowlist of safe classes.
References
- CWE-502: https://cwe.mitre.org/data/definitions/502.html
- PHP
unserialize()documentation: https://www.php.net/manual/en/function.unserialize.php - OWASP PHP Object Injection: https://owasp.org/www-community/vulnerabilities/PHP_Object_Injection
- Record
GHSA-v7m3-fpcr-h7m2- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-502
- Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-27206 8.1
Zumba Json Serializer is a library to serialize PHP variables in JSON format. In versions 3.2.2 and below, the library allows deserialization of PHP objects from JSON using a special @type field. The deserializer instantiates any class specified in the @type field without restriction. When processing untrusted JSON input, this behavior may allow an attacker to instantiate arbitrary classes available in the application. If a vulnerable application passes attacker-controlled JSON into JsonSerializer::unserialize() and contains classes with dangerous magic methods (such as __wakeup() or __destruct()), this may lead to PHP Object Injection and potentially Remote Code Execution (RCE), depending on available gadget chains in the application or its dependencies. This behavior is similar in risk profile to PHP's native unserialize() when used without the allowed_classes restriction. Applications are impacted only if untrusted or attacker-controlled JSON is passed into JsonSerializer::unserialize() and the application or its dependencies contain classes that can be leveraged as a gadget chain. This issue has been fixed in version 3.2.3. If an immediate upgrade isn't feasible, mitigate the vulnerability by never deserializing untrusted JSON with JsonSerializer::unserialize(), validating and sanitizing all JSON input before deserialization, and disabling @type-based object instantiation wherever possible.
- Record
UBUNTU-CVE-2026-27206- CVSS 3.1
- 8.1 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
zumba/json-serializerPackagist | before 3.2.3 | 3.2.3 |
php-zumba-json-serializerDebian:12 | All versions, plus listed versions 3.0.2-13.0.2-23.2.0-13.2.1-13.2.2-13.2.4-1 | None known |
php-zumba-json-serializerDebian:13 | All versions, plus listed versions 3.2.2-13.2.4-1 | None known |
php-zumba-json-serializerDebian:14 | before 3.2.4-1, plus listed versions 3.2.2-1 | 3.2.4-1 |
zumba/json-serializerPackagist | before 3.2.3, plus listed versions 1.0.01.0.11.0.22.0.02.0.1 Show 9 moreShow less2.1.02.2.03.0.03.0.13.0.23.1.03.2.03.2.13.2.2 | 3.2.3 |
php-zumba-json-serializerUbuntu:24.04:LTS | All versions, plus listed versions 3.0.2-13.2.1-1 | None known |
php-zumba-json-serializerUbuntu:25.10 | All versions, plus listed versions 3.2.2-1 | None known |
php-zumba-json-serializerUbuntu:26.10 | All versions, plus listed versions 3.2.2-13.2.4-1 | None known |
php-zumba-json-serializerUbuntu:26.04:LTS | All versions, plus listed versions 3.2.2-1 | None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-27206 is a high vulnerability (CVSS 8.1) in Zumba Json-serializer, published February 19, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.84%, the 58th percentile. Fixed in zumba/json-serializer 3.2.3.
References
github.com/zumba/json-serializer/security/advisories/GHSA-v7m3-fpcr-h7m2
github.com/zumba/json-serializer/commit/bf26227879adefce75eb9651040d8982be97b881
github.com/zumba/json-serializer/releases/tag/3.2.3
nvd.nist.gov/vuln/detail/CVE-2026-27206
github.com/advisories/GHSA-v7m3-fpcr-h7m2
github.com/CVEProject/cvelistV5/tree/main/cves/2026/27xxx/CVE-2026-27206.json