2026-03-24 18:16CVE-2026-33429GitHub_M
PUBLISHED5.2CWE-203

Parse Server: Protected field change detection oracle via LiveQuery watch parameter

Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to versions 8.6.54 and 9.6.0-alpha.43, an attacker can subscribe to LiveQuery with a watch parameter targeting a protected field. Although the protected field value is properly stripped from event payloads, the presence or absence of update events reveals whether the protected field changed, creating a binary oracle. For boolean protected fields, the timing of change events is equivalent to knowing the field value. This issue has been patched in versions 8.6.54 and 9.6.0-alpha.43.

Problem type

Affected products

parse-community

parse-server

< 8.6.54 - AFFECTED

>= 9.0.0, < 9.6.0-alpha.43 - AFFECTED

References

GitHub Security Advisories

GHSA-qpc3-fg4j-8hgm

Parse Server has a protected field change detection oracle via LiveQuery watch parameter

https://github.com/advisories/GHSA-qpc3-fg4j-8hgm

Impact

An attacker can subscribe to LiveQuery with a watch parameter targeting a protected field. Although the protected field value is properly stripped from event payloads, the presence or absence of update events reveals whether the protected field changed, creating a binary oracle. For boolean protected fields, the timing of change events is equivalent to knowing the field value.

Patches

The watch parameter is now validated against protected fields at subscription time, mirroring the existing validation for the where clause. Subscriptions that include protected fields in watch are rejected with a permission error. Master key connections are exempt.

Workarounds

None.

JSON source

https://cveawg.mitre.org/api/cve/CVE-2026-33429
Click to expand
{
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "cveMetadata": {
    "cveId": "CVE-2026-33429",
    "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
    "assignerShortName": "GitHub_M",
    "dateUpdated": "2026-03-24T18:16:35.414Z",
    "dateReserved": "2026-03-19T18:45:22.434Z",
    "datePublished": "2026-03-24T18:16:35.414Z",
    "state": "PUBLISHED"
  },
  "containers": {
    "cna": {
      "providerMetadata": {
        "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
        "shortName": "GitHub_M",
        "dateUpdated": "2026-03-24T18:16:35.414Z"
      },
      "title": "Parse Server: Protected field change detection oracle via LiveQuery watch parameter",
      "descriptions": [
        {
          "lang": "en",
          "value": "Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to versions 8.6.54 and 9.6.0-alpha.43, an attacker can subscribe to LiveQuery with a watch parameter targeting a protected field. Although the protected field value is properly stripped from event payloads, the presence or absence of update events reveals whether the protected field changed, creating a binary oracle. For boolean protected fields, the timing of change events is equivalent to knowing the field value. This issue has been patched in versions 8.6.54 and 9.6.0-alpha.43."
        }
      ],
      "affected": [
        {
          "vendor": "parse-community",
          "product": "parse-server",
          "versions": [
            {
              "version": "< 8.6.54",
              "status": "affected"
            },
            {
              "version": ">= 9.0.0, < 9.6.0-alpha.43",
              "status": "affected"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "lang": "en",
              "description": "CWE-203: Observable Discrepancy",
              "cweId": "CWE-203",
              "type": "CWE"
            }
          ]
        }
      ],
      "references": [
        {
          "url": "https://github.com/parse-community/parse-server/security/advisories/GHSA-qpc3-fg4j-8hgm",
          "name": "https://github.com/parse-community/parse-server/security/advisories/GHSA-qpc3-fg4j-8hgm",
          "tags": [
            "x_refsource_CONFIRM"
          ]
        },
        {
          "url": "https://github.com/parse-community/parse-server/pull/10253",
          "name": "https://github.com/parse-community/parse-server/pull/10253",
          "tags": [
            "x_refsource_MISC"
          ]
        },
        {
          "url": "https://github.com/parse-community/parse-server/pull/10254",
          "name": "https://github.com/parse-community/parse-server/pull/10254",
          "tags": [
            "x_refsource_MISC"
          ]
        },
        {
          "url": "https://github.com/parse-community/parse-server/commit/0c0a0a5a37ca821d2553119f2cb3be35322eda4b",
          "name": "https://github.com/parse-community/parse-server/commit/0c0a0a5a37ca821d2553119f2cb3be35322eda4b",
          "tags": [
            "x_refsource_MISC"
          ]
        },
        {
          "url": "https://github.com/parse-community/parse-server/commit/c62eacaf38de86913f09240583448360b1cc8e67",
          "name": "https://github.com/parse-community/parse-server/commit/c62eacaf38de86913f09240583448360b1cc8e67",
          "tags": [
            "x_refsource_MISC"
          ]
        }
      ],
      "metrics": [
        {}
      ]
    }
  }
}