CVE-2026-33993 Details
Description
Locutus brings stdlibs of other programming languages to JavaScript for educational purposes. Prior to version 3.0.25, the `unserialize()` function in `locutus/php/var/unserialize` assigns deserialized keys to plain objects via bracket notation without filtering the `__proto__` key. When a PHP serialized payload contains `__proto__` as an array or object key, JavaScript's `__proto__` setter is invoked, replacing the deserialized object's prototype with attacker-controlled content. This enables property injection, for...in propagation of injected properties, and denial of service via built-in method override. This is distinct from the previously reported prototype pollution in `parse_str` (GHSA-f98m-q3hr-p5wq, GHSA-rxrv-835q-v5mh) — `unserialize` is a different function with no mitigation applied. Version 3.0.25 patches the issue.
A prototype injection vulnerability has been identified in the Locutus library, specifically in the 'unserialize()' function within 'locutus/php/var/unserialize'. This vulnerability exists in versions prior to 3.0.25. The issue arises because the 'unserialize()' function assigns deserialized keys to plain objects using bracket notation, without filtering the '__proto__' key. When a PHP serialized payload includes '__proto__' as a key, it triggers JavaScript's '__proto__' setter, allowing an attacker to inject properties into the deserialized object. This injection can be exploited to override built-in methods, such as 'hasOwnProperty', leading to a denial-of-service condition. The vulnerability is distinct from a similar issue in the 'parse_str' function, as 'unserialize' lacked any mitigation.
Users can upgrade to Locutus version 3.0.25 or later, where this vulnerability has been patched. The fix involves modifying the 'unserialize()' function to treat '__proto__', 'constructor', and 'prototype' as dangerous keys, ensuring they are assigned as plain own properties without invoking the prototype setter. This change prevents the injection of properties that could be used to manipulate the object's prototype or override built-in methods.
Metrics
CVSS 4.0 Severity and Vector Strings:
CVSS 3.x Severity and Vector Strings:
No data available for CVSS Version 2.0 on this CVE.
CISA-ADP
Assessed Mar 30, 2026References to Advisories, Solutions, and Tools
By selecting these links, you will be leaving this site. These are references gathered from the official CVE record and are not endorsed by Volerion.
| URL | Source(s) | Tag(s) |
|---|---|---|
| https://github.com/locutusjs/locutus/commit/345a6211e1e6f939f96a7090bfeff642c9fcf9e4 | [email protected] | Patch |
| https://github.com/locutusjs/locutus/pull/597 | [email protected] | Issue Tracking |
| https://github.com/locutusjs/locutus/releases/tag/v3.0.25 | [email protected] | Release Notes |
| https://github.com/locutusjs/locutus/security/advisories/GHSA-4mph-v827-f877 | [email protected] | ExploitMitigationVendor Advisory |
Weakness Enumeration
| CWE-ID | CWE Name | Source |
|---|---|---|
| CWE-1321 | Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution') | [email protected] |
Affected Products
| Product | Versions |
|---|---|
| locutus locutus | < 3.0.25 |
CPE
Remediation
| |
Change History
4 change records found show changes
| Date | Action | Recorded By |
|---|---|---|
| Jun 17, 2026 | CVE Modified | [email protected] |
| Jun 17, 2026 | CVE Modified | CISA-ADP |
| Apr 1, 2026 | Initial Analysis | [email protected] |
| Mar 27, 2026 | New CVE Received | [email protected] |