VYPR
High severityNVD Advisory· Published Nov 10, 2022· Updated Apr 23, 2025

Parse Server subject to Prototype pollution via Cloud Code Webhooks

CVE-2022-41879

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.

PackageAffected versionsPatched versions
parse-servernpm
< 4.10.204.10.20
parse-servernpm
>= 5.0.0, < 5.3.35.3.3

Affected products

1

Patches

2
6c63f04ba371

fix: 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,
    
60c5a73d257e

fix: 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

News mentions

0

No linked articles in our index yet.