Parse Server subject to Prototype pollution via Cloud Code Webhooks
Description
Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. In versions prior to 5.3.3 or 4.10.20, a compromised Parse Server Cloud Code Webhook target endpoint allows an attacker to use prototype pollution to bypass the Parse Server requestKeywordDenylist option. This issue has been patched in versions 5.3.3 and 4.10.20. There are no known workarounds.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
parse-servernpm | < 4.10.20 | 4.10.20 |
parse-servernpm | >= 5.0.0, < 5.3.3 | 5.3.3 |
Affected products
1- Range: < 4.10.20
Patches
26c63f04ba371fix: Prototype pollution via Cloud Code Webhooks; fixes security vulnerability [GHSA-93vw-8fm5-p2jf](https://github.com/parse-community/parse-server/security/advisories/GHSA-93vw-8fm5-p2jf) (#8306)
2 files changed · +16 −1
spec/vulnerabilities.spec.js+11 −0 modified@@ -109,6 +109,17 @@ describe('Vulnerabilities', () => { ); }); + it('denies expanding existing object with polluted keys', async () => { + const obj = await new Parse.Object('RCE', { a: { foo: [] } }).save(); + await reconfigureServer({ + requestKeywordDenylist: ['foo'], + }); + obj.addUnique('a.foo', 'abc'); + await expectAsync(obj.save()).toBeRejectedWith( + new Parse.Error(Parse.Error.INVALID_KEY_NAME, `Prohibited keyword in request data: "foo".`) + ); + }); + it('denies creating a cloud trigger with polluted data', async () => { Parse.Cloud.beforeSave('TestObject', ({ object }) => { object.set('obj', {
src/Controllers/DatabaseController.js+5 −1 modified@@ -1701,7 +1701,11 @@ class DatabaseController { if (this.options && this.options.requestKeywordDenylist) { // Scan request data for denied keywords for (const keyword of this.options.requestKeywordDenylist) { - const match = Utils.objectContainsKeyValue({ firstKey: undefined }, keyword.key, undefined); + const match = Utils.objectContainsKeyValue( + { [firstKey]: true, [nextPath]: true }, + keyword.key, + true + ); if (match) { throw new Parse.Error( Parse.Error.INVALID_KEY_NAME,
60c5a73d257efix: Prototype pollution via Cloud Code Webhooks; fixes security vulnerability [GHSA-93vw-8fm5-p2jf](https://github.com/parse-community/parse-server/security/advisories/GHSA-93vw-8fm5-p2jf) (#8305)
2 files changed · +16 −1
spec/vulnerabilities.spec.js+11 −0 modified@@ -109,6 +109,17 @@ describe('Vulnerabilities', () => { ); }); + it('denies expanding existing object with polluted keys', async () => { + const obj = await new Parse.Object('RCE', { a: { foo: [] } }).save(); + await reconfigureServer({ + requestKeywordDenylist: ['foo'], + }); + obj.addUnique('a.foo', 'abc'); + await expectAsync(obj.save()).toBeRejectedWith( + new Parse.Error(Parse.Error.INVALID_KEY_NAME, `Prohibited keyword in request data: "foo".`) + ); + }); + it('denies creating a cloud trigger with polluted data', async () => { Parse.Cloud.beforeSave('TestObject', ({ object }) => { object.set('obj', {
src/Controllers/DatabaseController.js+5 −1 modified@@ -1765,7 +1765,11 @@ class DatabaseController { if (this.options && this.options.requestKeywordDenylist) { // Scan request data for denied keywords for (const keyword of this.options.requestKeywordDenylist) { - const match = Utils.objectContainsKeyValue({ firstKey: undefined }, keyword.key, undefined); + const match = Utils.objectContainsKeyValue( + { [firstKey]: true, [nextPath]: true }, + keyword.key, + true + ); if (match) { throw new Parse.Error( Parse.Error.INVALID_KEY_NAME,
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
9- github.com/advisories/GHSA-93vw-8fm5-p2jfghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2022-41879ghsaADVISORY
- github.com/parse-community/parse-server/commit/60c5a73d257e0d536056b38bdafef8b7130524d8ghsaWEB
- github.com/parse-community/parse-server/commit/6c63f04ba37174021082a5b5c4ba1556dcc954f4ghsaWEB
- github.com/parse-community/parse-server/pull/8305ghsaWEB
- github.com/parse-community/parse-server/pull/8306ghsaWEB
- github.com/parse-community/parse-server/releases/tag/4.10.20ghsaWEB
- github.com/parse-community/parse-server/releases/tag/5.3.3ghsaWEB
- github.com/parse-community/parse-server/security/advisories/GHSA-93vw-8fm5-p2jfghsaWEB
News mentions
0No linked articles in our index yet.