Mar 13, 2026·5 min read·102 visits
Unauthenticated attackers can achieve full account takeover in Parse Server by injecting MongoDB or PostgreSQL query operators into the anonymous authentication identifier, forcing the backend to return a valid session token for existing users.
Parse Server versions prior to 8.6.38 and 9.6.0-alpha.12 are vulnerable to a critical account takeover vulnerability due to improper input validation in the authentication logic. Unauthenticated remote attackers can bypass authentication and obtain valid session tokens by injecting database operators into the anonymous authentication provider's identifier payload.
Parse Server exposes a flexible authentication system supporting multiple providers, including an anonymous authentication feature enabled by default. This system processes incoming authentication data to identify existing user records or provision new ones.
The vulnerability, tracked as CVE-2026-32248, affects the processing of the authData payload during authentication flows. An unauthenticated remote attacker can exploit a lack of input validation to alter the underlying database query logic.
By supplying a database operator object instead of a string literal, the attacker forces the database adapter to perform a pattern-matching query. This query matches existing user records, prompting the application to issue a valid session token for the compromised account.
The vulnerability affects Parse Server branches 8.x prior to 8.6.38 and 9.x up to 9.6.0-alpha.12. It manifests across both MongoDB and PostgreSQL backend deployments due to the shared operator injection vector.
The core issue resides in how Parse Server processes the id field within the authData object for specific authentication providers. The application implicitly trusts the structure of the incoming JSON payload without enforcing strict type constraints on the expected string identifier.
Node.js frameworks handling JSON input parse nested objects directly into memory representations that are subsequently passed to database adapters. When the MongoDB or PostgreSQL adapters receive these objects in a query context, they interpret them as query operators rather than literal string values.
Specifically, the authentication logic constructs a query to locate a user matching the provided authData.[provider].id. Because the input is not sanitized, an attacker can substitute the expected string with an object containing operators like $regex or $ne.
This behavior constitutes CWE-943, defined as Improper Neutralization of Special Elements in Data Query Logic. The database executes the modified query, successfully matching a record that satisfies the injected operator logic rather than verifying an exact identifier match.
The vulnerability is triggered during the authentication handling process where the authData object is mapped to a database query. Prior to the patch, the system extracted the id field and inserted it directly into the lookup query without verifying its data type.
An attacker submitting a payload containing the $regex operator causes the query builder to construct a database command equivalent to searching for an identifier matching a regular expression. This invariably matches the first user record in the database configured with the anonymous provider.
{
"authData": {
"anonymous": {
"id": { "$regex": "^" }
}
}
}The patch implemented in commit 93425df2bc9368eab89644c93fa9ef481c043e3a introduces mandatory type checking and validation for the identifier. The application now enforces that the id field must be a standard string and rejects payloads containing complex objects or unauthorized query operators.
By validating the input at the application layer before passing it to the database adapter, Parse Server prevents the query parser from misinterpreting the payload. This remediation strategy completely eliminates the operator injection vector for the affected authentication routes.
Exploitation requires network access to the Parse Server authentication endpoints, typically /parse/users or /parse/login. The attacker does not need prior authentication or specific privileges, making this a zero-click, unauthenticated attack vector.
The attacker constructs a malicious HTTP POST request containing a nested JSON payload targeting the anonymous authentication provider. By substituting the expected identifier string with a database operator, the attacker submits a query guaranteed to evaluate to true for existing records.
The server processes this request and queries the database via the configured adapter. The database returns the first user record matching the injected condition, which Parse Server accepts as a valid login event.
Parse Server subsequently generates and returns a valid session token associated with the matched user account. With the compromised session token, the attacker authenticates as the target user and gains unauthorized access to the application data.
The successful exploitation of CVE-2026-32248 results in a complete account takeover. An attacker obtains persistent, authenticated access to the compromised user's account and all associated data within the application.
If the matched user record belongs to an administrative or highly privileged account, the attacker escalates privileges and compromises the entire Parse Server instance. This access allows the attacker to modify schema structures, access sensitive database tables, and alter system configurations.
The vulnerability scores a 9.3 on the CVSS 4.0 scale, reflecting the critical severity of the flaw. The impact on confidentiality and integrity is high, as the attacker can indiscriminately read and modify user data.
Deployments utilizing the default configuration with anonymous authentication enabled are universally exposed. The attack vector is highly reliable, leaves minimal forensic footprint beyond standard authentication logs, and requires no user interaction.
System administrators must immediately upgrade Parse Server deployments to patched versions to resolve this vulnerability. For the 8.x branch, the minimum secure version is 8.6.38. For the 9.x branch, deployments must be updated to 9.6.0-alpha.12 or later.
> [!NOTE] > Disabling the anonymous authentication provider completely removes the vulnerable code path from execution, providing effective mitigation until patching is possible.
If an immediate upgrade is unfeasible, administrators can mitigate the vulnerability by modifying the Parse Server configuration to disable the anonymous authentication provider. Setting auth.anonymous to false in the initialization options removes the primary attack surface.
Security teams should review application logs for anomalous authentication requests to the login endpoints. Requests containing $regex, $ne, or $gt operators within the authData payload indicate active exploitation attempts.
Implementing Web Application Firewall rules to inspect incoming JSON payloads provides a defense-in-depth measure. Firewalls should block requests containing NoSQL operator patterns within authentication fields, preventing malicious payloads from reaching the application logic.
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N| Product | Affected Versions | Fixed Version |
|---|---|---|
Parse Server Parse Community | < 8.6.38 | 8.6.38 |
Parse Server Parse Community | >= 9.0.0, < 9.6.0-alpha.12 | 9.6.0-alpha.12 |
| Attribute | Detail |
|---|---|
| CWE ID | CWE-943 |
| Attack Vector | Network |
| CVSS Score | 9.3 |
| Impact | Account Takeover |
| Exploit Status | POC Available |
| CISA KEV | Not Listed |
The software receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended data query logic.
An out-of-bounds read vulnerability (CWE-125) exists in the Open Neural Network Exchange (ONNX) library across versions 1.2.1 prior to 1.22.0. The flaw occurs within the shape inference routines for the ConvTranspose operator when processing a model with a weight tensor rank less than three and an omitted kernel_shape attribute. Unchecked indexing into an empty vector triggers a memory segmentation fault, resulting in a Denial of Service (DoS) against applications inspecting or loading untrusted ONNX models.
A session-binding vulnerability in Python Social Auth (social-core) versions prior to 6.2.0 allows an attacker to perform authorization code injection against the OpenID Connect authentication backend. By storing generated OIDC nonces in a global database table without binding them to the initiating browser session, the library accepts any valid, unexpired nonce returned in an ID token regardless of which session originated the authentication transaction. When combined with the default disablement of Proof Key for Code Exchange (PKCE), an attacker who intercepts an unused authorization code can inject it into their own authentication flow to achieve full account takeover.
CVE-2026-111497, tracked in threat intelligence under the aliases Node2Shell, Broccoli2Shell, and HTTP2Shell, is a critical out-of-bounds heap write and denial-of-service vulnerability in the reference Google Brotli decompression library (c/dec/decode.c). The flaw originates from an unchecked return value and error-code conflation in DecodeBlockTypeAndLength() when processing malformed streams with single-block-type declarations (max_block_type <= 1). On the fast decoding path, the ignored error return causes the 32-bit unsigned block_length counter to underflow from 0 to UINT32_MAX (0xFFFFFFFF), corrupting internal decoder tables and enabling arbitrary heap memory overwrites via memmove16(). On the streaming path, the error return is misinterpreted as an incomplete bit-stream, trapping the worker process in an infinite 100% CPU loop. Because Google Brotli is embedded across major runtimes and infrastructure components—including Node.js, Envoy Proxy, Microsoft .NET, Istio, and Python—the vulnerability exposes a broad attack surface via standard HTTP Content-Encoding: br request and response bodies.
CVE-2026-116575 (GHSA-5324-3w58-qpp2) is an unescaped delimiter injection and canonicalization flaw in the Mem0 persistent memory platform for AI agents and applications. Prior to Python SDK version 2.0.18 and TypeScript SDK version 3.1.6, the session scope key construction functions join caller-controlled user_id, agent_id, and run_id identifiers using raw '=' and '&' delimiters without sanitization. An attacker who controls one of these identifiers in a multi-tenant deployment can inject delimiter sequences to force a string collision with a target tenant's session scope key, resulting in unauthorized disclosure, poisoning, or eviction of the target tenant's recent conversation buffer.
Seroval versions prior to 1.6.8 contain an insecure deserialization vulnerability (CWE-502) in the `fromJSON` parser. When reconstructing `AsyncIteratorFactoryInstance` or `IteratorFactoryInstance` nodes, the deserializer verifies the source node type using its identifier in the AST lookup table rather than verifying the runtime identity of the deserialized object. Because unmarked node identifiers omitted from the `m` reference array can be reused in vanilla deserialization mode, an attacker can substitute an arbitrary plain object or plugin-produced value as the stream source. This causes the runtime to invoke `.on(listener)` on an attacker-controlled target.
A Denial of Service (DoS) vulnerability exists in the Seroval JavaScript serialization library affecting versions 1.4.1 through 1.6.7. The deserialization routines fromJSON and fromCrossJSON fail to verify that node element lists are actual JavaScript Array primitives before reading their length property. An unauthenticated remote attacker can supply a compact, malformed JSON payload containing an array-like object with an arbitrary length value, causing unbounded memory allocation and synchronous loop iterations that block the event loop or crash the process via heap exhaustion.