CVE-2026-33409
JavaScript vulnerability analysis and mitigation

Overview

CVE-2026-33409 is an authentication bypass vulnerability in Parse Server (npm package parse-server) that allows an attacker to log in as any user who has linked a third-party authentication provider, without knowing the user's credentials. The attacker only needs to know the target user's provider ID to obtain a valid session token and gain full account access. This vulnerability exclusively affects deployments where the server option allowExpiredAuthDataToken is set to true (the default is false). It affects all versions prior to 8.6.52 (8.x branch) and versions >= 9.0.0 prior to 9.6.0-alpha.41 (9.x branch). Disclosed on March 19, 2026, it carries a CVSS v3.1 base score of 9.1 (Critical) and a CVSS v4.0 base score of 7.0 (High) (GitHub Advisory, Parse Server Advisory).

Technical details

The root cause is improper authentication (CWE-287) in Parse Server's RestWrite.prototype.handleAuthData function in src/RestWrite.js. When allowExpiredAuthDataToken was set to true, the server's auth-data validation logic checked whether the incoming authData had mutated compared to stored data before invoking the auth provider's validateAuthData method. An attacker could send a login request with only a partial authData payload — specifically, just the provider id field without an access_token — which would be recognized as a subset of the stored data (not mutated), causing the server to skip provider validation entirely and grant a session token. The fix adds an explicit isLogin check to the condition, ensuring auth provider validation always runs on login regardless of the allowExpiredAuthDataToken setting (GitHub Advisory, Patch Commit 9.x, Patch Commit 8.x).

Impact

Successful exploitation allows an attacker to fully impersonate any user account that has a linked third-party authentication provider (e.g., OAuth, social login), gaining a valid session token without knowing the user's password or access token. This results in high confidentiality and integrity impact: the attacker can read sensitive user data, modify user records, and perform any action on behalf of the compromised account. Availability is not directly impacted, but the account takeover could facilitate lateral movement within the application, data exfiltration, or privilege escalation if compromised accounts hold elevated roles (GitHub Advisory, Parse Server Advisory).

Exploitability

No public proof-of-concept exploit code has been identified, and there is no evidence of in-the-wild exploitation at the time of disclosure (GitHub Advisory). The vulnerability is conditionally exploitable — it requires the non-default server configuration allowExpiredAuthDataToken: true to be present, which limits the exposed attack surface. The EPSS score is approximately 0.069% (8th percentile), indicating a low current probability of exploitation. No threat actor attribution has been reported, and the vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.

Exploitation steps

  1. Reconnaissance: Identify Parse Server deployments (e.g., via Shodan, Censys, or application fingerprinting) running versions prior to 8.6.52 or 9.6.0-alpha.41. Confirm or infer that allowExpiredAuthDataToken is set to true in the server configuration.
  2. Identify target user: Obtain a target user's third-party authentication provider ID (e.g., a social login user ID from a public profile, API leak, or enumeration). The provider ID is stored in the _User.authData field.
  3. Craft partial authData login request: Send a POST request to the Parse Server users endpoint with only the provider id field in the authData payload, omitting the access_token:
POST /1/users HTTP/1.1
Host: <parse-server-host>
Content-Type: application/json
X-Parse-Application-Id: <app-id>
X-Parse-REST-API-Key: <rest-key>

{"authData": {"<provider>": {"id": "<victim-provider-id>"}}}
  1. Bypass validation: Because the incoming authData is a subset of the stored data and allowExpiredAuthDataToken is true, the server skips calling validateAuthData on the auth provider adapter, treating the login as valid.
  2. Obtain session token: The server responds with a 200 OK containing the victim user's objectId and a valid sessionToken, granting full account access without any credentials (GitHub Advisory, Patch Commit 9.x).

Indicators of compromise

  • Network: Unusual POST requests to /1/users (or equivalent Parse Server login endpoint) containing authData payloads with only a provider id field and no access_token or other expected credential fields; repeated login attempts for the same provider ID from different source IPs.
  • Logs: Parse Server access logs showing successful login responses (HTTP 200) to /1/users where the request body contains minimal authData (e.g., {"authData": {"<provider>": {"id": "..."}}}) without accompanying token fields; absence of auth provider validation log entries for login events on servers with allowExpiredAuthDataToken: true.
  • Application: New or unexpected active sessions (_Session class records) for users with linked third-party providers, especially from unfamiliar IP addresses or user agents; user account data modifications shortly after an anomalous login event.

Mitigation and workarounds

Immediate workaround: Set allowExpiredAuthDataToken to false (the default value) or remove the option entirely from the Parse Server configuration. This prevents the bypass even on unpatched versions, as the vulnerable code path is only triggered when this option is true.

Patched versions:

  • Parse Server 8.x: upgrade to 8.6.52 or later (commit 8d7df56)
  • Parse Server 9.x: upgrade to 9.6.0-alpha.41 or later (commit 98f4ba5); the stable release 9.6.0 also includes this fix

Note: The allowExpiredAuthDataToken option has been deprecated (DEPPS20) and will be removed in a future major version. After patching, audit user accounts with linked third-party providers for unauthorized access, review authentication logs for anomalous login patterns, and consider forcing session invalidation for potentially affected accounts (Parse Server Advisory, GitHub Advisory).

Community reactions

The vulnerability was reported and patched by Parse Server maintainer mtrezza, who published the security advisory on March 19, 2026. The fix was released the same day in version 9.6.0-alpha.41 and subsequently included in the stable 9.6.0 release on March 22, 2026. No significant broader media coverage or notable external researcher commentary has been identified beyond the official advisory and automated vulnerability database entries (Parse Server Advisory).

Additional resources


SourceThis report was generated using AI

Related JavaScript vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-45618CRITICAL10
  • JavaScript logoJavaScript
  • liquidjs
NoYesAug 11, 2026
CVE-2026-48170CRITICAL9.1
  • JavaScript logoJavaScript
  • scim-patch
NoYesAug 07, 2026
CVE-2026-48007HIGH8.6
  • JavaScript logoJavaScript
  • @element-hq/element-call-embedded
NoYesAug 07, 2026
CVE-2026-69207MEDIUM5.3
  • JavaScript logoJavaScript
  • gemini-cli
NoYesAug 07, 2026
CVE-2026-71850MEDIUM4.8
  • JavaScript logoJavaScript
  • langfuse-fips-3
NoYesAug 07, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management