Parse Server, LiveQuery Protected-Field Guard Bypass, (CVE pending) (Moderate)

Listen to this Post

How the CVE Works

The vulnerability resides in Parse Server’s LiveQuery feature, which allows real-time subscriptions to queries. When a class has `protectedFields` configured, certain fields should be hidden from users even if they have `find` permission.
An authenticated attacker with `find` class-level permission can circumvent this guard by crafting a LiveQuery subscription. Instead of sending a standard array for logical operators ($or, $and, $nor), the attacker supplies a plain JavaScript object that mimics an array (numeric keys and a `length` property).
Parse Server’s validation logic did not strictly enforce that these operator values must be arrays. The malformed object passes the initial checks and reaches the protected‑field guard.
The guard then processes the query incorrectly, failing to redact the protected fields. As a result, the LiveQuery subscription fires events that include those protected fields when they match the test value.
By observing whether the subscription event is triggered (a binary oracle), the attacker can infer the value of a protected field, effectively exfiltrating sensitive data without direct read access.
The issue affects all Parse Server versions 8.6.70 and below, and 9.0.0 up to but not including 9.7.0-alpha.16.
The fix introduces explicit type checking: logical operator values must be arrays in the subscription handler, query depth checker, and protected‑field guard. As defense in depth, the LiveQuery evaluator also rejects non‑array values.

No workaround exists; upgrading is required.

DailyCVE Form

Platform: Parse Server
Version: <8.6.70, 9.0.0–<9.7.0-alpha.16
Vulnerability : Bypass protectedFields via array-like
Severity: Moderate
date: Apr 1, 2026

Prediction: Already patched

What Undercode Say:

Analytics

Check current Parse Server version
npm list parse-server
Upgrade to patched version (8.6.70 or 9.7.0-alpha.16)
npm install [email protected]
or
npm install [email protected]

JavaScript test snippet to detect vulnerability

const subscription = {
query: {
$or: { 0: { protectedField: "targetValue" }, length: 1 } // array-like object
}
};
// If subscription succeeds and events contain protectedField, server is vulnerable

How Exploit:

  1. Identify a class with `protectedFields` and a `find` permission.
  2. Authenticate as a user who has `find` permission.
  3. Build a LiveQuery subscription where `$or` (or $and/$nor) is an array‑like object with a numeric key and length.
  4. Set the inner condition to test a guessed value for a protected field.
  5. If a subscription event arrives, the guessed value is correct.
  6. Repeat with different guesses to brute‑force the protected field’s content.

Protection from this CVE

  • Upgrade to Parse Server 8.6.70 or 9.7.0-alpha.16 or later.
  • If immediate upgrade is impossible, restrict LiveQuery subscriptions at the network level (e.g., API gateway) to trusted users only.
  • Monitor logs for subscriptions containing non‑array logical operators.

Impact

Information Disclosure – An authenticated attacker can infer values of protected fields (e.g., email, phone number, internal flags) by using the subscription event as a binary oracle. This bypasses the intended `protectedFields` restriction and undermines data confidentiality.

🎯Let’s Practice Exploiting & Learn Patching For Free:

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top