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.
Parse Server: Protected field change detection oracle via LiveQuery watch parameter
Problem type
Affected products
parse-community
< 8.6.54 - AFFECTED
>= 9.0.0, < 9.6.0-alpha.43 - AFFECTED
References
https://github.com/parse-community/parse-server/security/advisories/GHSA-qpc3-fg4j-8hgm
https://github.com/parse-community/parse-server/pull/10253
https://github.com/parse-community/parse-server/pull/10254
https://github.com/parse-community/parse-server/commit/0c0a0a5a37ca821d2553119f2cb3be35322eda4b
https://github.com/parse-community/parse-server/commit/c62eacaf38de86913f09240583448360b1cc8e67
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-8hgmImpact
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-33429Click 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": [
{}
]
}
}
}