Impact
An attacker can exploit LiveQuery subscriptions to infer the values of protected fields without directly receiving them. By subscribing with a WHERE clause that references a protected field (including via dot-notation or $regex), the attacker can observe whether LiveQuery events are delivered for matching objects. This creates a boolean oracle that leaks protected field values. The attack affects any class that has both protectedFields configured in Class-Level Permissions and LiveQuery enabled.
Patches
The fix adds validation of the LiveQuery subscription WHERE clause against the class's protected fields, mirroring the existing REST API validation. If a subscription's WHERE clause references a protected field directly, via dot-notation, or inside $or / $and / $nor operators, the subscription is rejected with a permission error. This is applied during subscription creation, so existing event delivery paths are not affected.
Workarounds
Disable LiveQuery for classes that use protectedFields in their Class-Level Permissions, or remove protectedFields from classes that require LiveQuery.
References
Impact
An attacker can exploit LiveQuery subscriptions to infer the values of protected fields without directly receiving them. By subscribing with a WHERE clause that references a protected field (including via dot-notation or
$regex), the attacker can observe whether LiveQuery events are delivered for matching objects. This creates a boolean oracle that leaks protected field values. The attack affects any class that has bothprotectedFieldsconfigured in Class-Level Permissions and LiveQuery enabled.Patches
The fix adds validation of the LiveQuery subscription WHERE clause against the class's protected fields, mirroring the existing REST API validation. If a subscription's WHERE clause references a protected field directly, via dot-notation, or inside
$or/$and/$noroperators, the subscription is rejected with a permission error. This is applied during subscription creation, so existing event delivery paths are not affected.Workarounds
Disable LiveQuery for classes that use
protectedFieldsin their Class-Level Permissions, or removeprotectedFieldsfrom classes that require LiveQuery.References