Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to versions 8.6.67 and 9.7.0-alpha.11, an attacker can bypass Cloud Function validator access controls by appending "prototype.constructor" to the function name in the URL. When a Cloud Function handler is declared using the function keyword and its validator is a plain object or arrow function, the trigger store traversal resolves the handler through its own prototype chain while the validator store fails to mirror this traversal, causing all access control enforcement to be skipped. This allows unauthenticated callers to invoke Cloud Functions that are meant to be protected by validators such as requireUser, requireMaster, or custom validation logic. This issue has been patched in versions 8.6.67 and 9.7.0-alpha.11.
When a Cloud Function handler is declared with the 'function' keyword and its validator is a plain object or arrow function, the handler lookup mechanism searches the JavaScript prototype chain. However, the validator is stored in a separate location that does not reflect the same prototype chain search. As a result, when an attacker adds 'prototype.constructor' to the function name in an HTTP request, the server finds the handler through the prototype chain but does not find the corresponding validator — resulting in complete bypass of access control enforcement. An attacker can thus invoke functions protected by validators such as requireUser, requireMaster, or custom validation logic.
An unauthenticated attacker can invoke any protected Cloud Functions, including those requiring user permissions or master key, which may lead to unauthorized reading and modification of application data.
Parse Server should be updated to version 8.6.67 or newer (v8 branch) or to version 9.7.0-alpha.11 or newer (v9 branch). Patches are available in vendor references under commits 4fc48cf and dc59e27.
Parse Server (parseplatform parse-server) in versions earlier than 8.6.67 (v8 branch) and earlier than 9.7.0-alpha.11 (v9 branch)
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XParseplatform Parse Server
APPParseplatform9.7.0< 8.6.679.0.0 – 9.7.0 (excl.)
Related vulnerabilities
Parse Server — przejęcie konta przez manipulację zapytaniem (Auth Bypass)
Race condition w Parse Server — błędna walidacja tokenów OAuth2
SQL Injection w Parse Server poprzez dot-notation i parametr sort (PostgreSQL)
SQL Injection w Parse Server (PostgreSQL) — operacje Increment na polach zagnieżdżonych
SQL Injection w Parse Server (PostgreSQL) — operacje Increment na zagnieżdżonych polach