Loading...
Skip to main content

CVE-2026-25521 — Vulnerability in locutus — CVE Details

CRITICAL

locutus is vulnerable to Prototype Pollution

Published February 2, 2026Updated October 5, 2026Source: osv

Summary

### Summary A Prototype Pollution vulnerability exists in the the npm package locutus (>2.0.12). Despite a previous fix that attempted to mitigate Prototype Pollution by checking whether user input contained a forbidden key, it is still possible to pollute Object.prototype via a crafted input using String.prototype. This issue was fixed in version 2.0.39. ### Details The vulnerability resides in line 77 to 79 of https://github.com/locutusjs/locutus/blob/main/src/php/strings/parse_str.js where includes() function is used to check whether user provided input contain forbidden strings. ### PoC #### Steps to reproduce 1. Install latest version of locutus using npm install or cloning from git 2. Run the following code snippet: ```javascript String.prototype.includes = () => false; console.log({}.polluted); const locutus = require('locutus'); locutus.php.strings.parse_str('constructor[prototype][polluted]=yes'); console.log({}.polluted); // prints yes -> indicating that the patch was bypassed and Prototype Pollution occurred ``` #### Expected behavior Prototype Pollution should be prevented and {} should not gain new properties. This should be printed on the console: ``` undefined undefined OR throw an Error ``` #### Actual behavior Object.prototype is polluted This is printed on the console: ``` undefined yes ``` ### Impact This is a Prototype Pollution vulnerability, which can have severe security implications depending on how locutus is used by downstream applications. Any application that processes attacker-controlled input using this `locutus.php.strings.parse_str` may be affected. It could potentially lead to the following problems: 1. Authentication bypass 2. Denial of service 3. Remote code execution (if polluted property is passed to sinks like eval or child_process)

Advisory Timeline

  • First published February 2, 2026 (252 days ago).
  • Last revised October 5, 2026 — 245 days after initial publication.

Remediation

Upgrade to the fixed version using your package manager.

npm
Update locutus to 2.0.39 or later
npm install locutus@2.0.39

After upgrading, run your dependency scanner again to confirm the vulnerability is resolved.

Affected Packages (1)

Affects 1 ecosystem: npm (1).

PackageEcosystemAffectedFixed In
locutus
npm
All versions2.0.39

Vulnerability Classification

Common Weakness Enumeration (CWE) identifiers for this vulnerability type.

CVSS Score Breakdown

What the CVSS (Common Vulnerability Scoring System) 9.3 score means for each attack dimension.

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
—
Confidentiality
—
Integrity
—
Availability
—

CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Frequently Asked Questions

What is CVE-2026-25521?
locutus is vulnerable to Prototype Pollution This vulnerability has been assigned a severity rating of CRITICAL (CVSS score: 9.3/10).
How do I check if my project is affected by CVE-2026-25521?
CVE-2026-25521 affects locutus. Use GeekWala's free vulnerability scanner to check your dependencies against CVE-2026-25521 and 200,000+ other known vulnerabilities.

Severity & Exploitability

CVSS Score
9.3

Exploitation is straightforward and causes maximum impact. Patch immediately.

Also Known As

GHSA-rxrv-835q-v5mh

Related CVEs

Check if you're affected

Scan your dependencies to see if this vulnerability affects your projects.

Scan Your Dependencies