CVE-2021-20088
Description
Mootools-more 1.6.0 allows prototype pollution via String.parseQueryString when parsing untrusted query strings.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Mootools-more 1.6.0 allows prototype pollution via `String.parseQueryString` when parsing untrusted query strings.
Vulnerability
CVE-2021-20088 is a prototype pollution vulnerability in the mootools-more JavaScript library version 1.6.0 and possibly earlier. The flaw resides in the String.parseQueryString method defined in Source/Types/String.QueryString.js [1][2][3]. The method recursively assigns parsed key-value pairs into an object without sanitizing keys that can modify Object.prototype. Specifically, when a query string contains keys such as __proto__[test] or constructor[prototype][test], the vulnerable code at lines 46+ will traverse into the object prototype chain and inject properties into Object.prototype [3]. The vulnerability is reachable whenever an application calls String.parseQueryString on user-controlled input (e.g., from location.search or any untrusted string) without prior sanitization.
Exploitation
An attacker requires no authentication and only needs to deliver a specially crafted query string to an application that uses the vulnerable parseQueryString method. The exploitation steps involve: (1) crafting a URL or input string containing payloads such as ?__proto__[test]=test or ?constructor[prototype][test]=test; (2) passing that string to String.parseQueryString() (e.g., via String.parseQueryString(location.search.slice(1))); (3) the method then iterates over the keys and, due to the lack of prototype-key filtering, sets properties on Object.prototype, effectively polluting all JavaScript objects in the page context [3]. No user interaction beyond loading the affected page is required.
Impact
Successful exploitation leads to arbitrary property injection into Object.prototype. This can alter the behavior of all objects in the runtime, potentially enabling further attacks such as property injection, denial of service, or privilege escalation depending on the application logic that relies on object property existence or defaults. The impact is considered high because it can compromise client-side security assumptions and facilitate cross-site scripting or data corruption in applications using the library.
Mitigation
As of the available references, no official patched version of mootools-more has been released [1][2][3]. Users are advised to avoid using the String.parseQueryString method with untrusted input, or to apply input sanitization that rejects prototype-related keys (e.g., __proto__, constructor, prototype). If the library is no longer maintained, consider migrating to an alternative query-string parsing library that is not vulnerable to prototype pollution. This CVE is not currently listed on the CISA Known Exploited Vulnerabilities (KEV) catalog.
AI Insight generated on May 21, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
mootools-morenpm | <= 1.6.0 | — |
Affected products
2- mootools-more/mootools-moredescription
Patches
0No patches discovered yet.
Vulnerability mechanics
AI mechanics synthesis has not run for this CVE yet.
References
3- github.com/advisories/GHSA-fw45-938v-p26jghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2021-20088ghsaADVISORY
- github.com/BlackFan/client-side-prototype-pollution/blob/master/pp/mootools-more.mdghsax_refsource_MISCWEB
News mentions
0No linked articles in our index yet.