Severity by source
AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:L/A:L
Requires authenticated low-privilege account (PR:L) and victim to visit crafted URL (UI:R); high complexity (AC:H) due to social delivery requirement; impact confined to victim browser session (S:U) with limited CIA.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
FreeScout is a free help desk and shared inbox built with PHP's Laravel framework. A Prototype Pollution condition in the getQueryParam function /public/js/main.js and was addressed in version 1.8.139 by blocking URL query keys matching the pattern __proto__. However, this mitigation is incomplete: it only filters top-level __proto__ keys and fails to sanitize nested forms such as b[__proto__][polluted]=PWNED. As a result, an attacker-controlled URL query string can still write into Object.prototype on any page that loads main.js. Version 1.8.223 contains a updated fix.
AnalysisAI
Prototype Pollution in FreeScout's client-side getQueryParam function allows an authenticated attacker to write arbitrary properties into Object.prototype via crafted URL query strings on any page loading main.js. An initial mitigation introduced in version 1.8.139 blocked direct top-level __proto__ keys but failed to sanitize nested bracket-notation bypass forms such as b[__proto__][polluted]=PWNED, leaving all installations between 1.8.139 and 1.8.222 still exploitable. The complete fix shipped in version 1.8.223; no public exploit or active exploitation is confirmed at time of analysis.
Technical ContextAI
FreeScout is a self-hosted, open-source help desk and shared inbox application built on PHP's Laravel framework. The vulnerability resides in the client-side JavaScript function getQueryParam within /public/js/main.js, which parses URL query parameters and passes them into JavaScript object structures without adequate sanitization. CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes - Prototype Pollution) describes the root cause: an attacker-controlled key traverses the prototype chain through an intermediate property (e.g., b[__proto__]), ultimately writing into the global Object.prototype. The naive first-pass fix checked only for a top-level literal __proto__ key, which is a well-documented bypass pattern in prototype pollution research. Any JavaScript code in the victim's browser session that later accesses inherited properties may encounter attacker-injected values, potentially altering application logic. The affected CPE is cpe:2.3:a:freescout-help-desk:freescout:*:*:*:*:*:*:*:*.
RemediationAI
Upgrade FreeScout to version 1.8.223 or later, which contains the complete updated fix for the prototype pollution bypass; the vendor advisory is at https://github.com/freescout-help-desk/freescout/security/advisories/GHSA-w5fc-8pp3-f755. Installations already on version 1.8.139 through 1.8.222 are still vulnerable and must upgrade - the prior fix is insufficient. If an immediate upgrade is not feasible, deploy a web application firewall rule to reject or strip URL query parameters containing __proto__ in any bracket-notation form (e.g., matching [__proto__] as a substring), though aggressive WAF rules on query strings risk breaking legitimate parameterized URLs and should be tested thoroughly. Additionally, restricting FreeScout access to internal networks or VPN reduces the reachable attacker surface given the PR:L requirement, though this is a defense-in-depth measure, not a substitute for patching.
More in Prototype Pollution
View allPrototype pollution in Adobe Acrobat Reader versions 24.001.30356, 26.001.21367 and earlier enables arbitrary code execu
Prototype pollution in the farinspace Partners WordPress plugin (versions up to and including 0.2.0) enables remote unau
Prototype pollution vulnerability in 'deephas' versions 1.0.0 through 1.0.5 allows attacker to cause a denial of service
A Prototype Pollution issue in Cronvel Tree-kit v.0.7.4 and before allows a remote attacker to execute arbitrary code vi
A Prototype Pollution issue in Aliconnect /sdk v.0.0.6 allows an attacker to execute arbitrary code via the aim function
All versions of the package safe-eval are vulnerable to Prototype Pollution via the safeEval function, due to improper s
This affects the package vm2 before 3.9.4 via a Prototype Pollution attack vector, which can lead to execution of arbitr
Prototype Pollution in chargeover redoc v2.0.9-rc.69 allows attackers to execute arbitrary code or cause a Denial of Ser
alizeait unflatto <= 1.0.2 was discovered to contain a prototype pollution via the method exports.unflatto at /dist/inde
A vulnerability exists in the 'dagre-d3-es' Node.js package version 7.0.9, specifically within the 'bk' module's addConf
A Prototype Pollution vulnerability in the util-deps.addFileDepend function of magix-combine-ex versions thru 1.2.10 all
Chartist 1.x through 1.3.0 allows Prototype Pollution via the extend function. Rated critical severity (CVSS 9.8), this
Same technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-46082