Staging Environment: Content and features may be unstable or change without notice.
Search for packages
Package details: pkg:npm/parse-server@9.7.0-alpha.14
purl pkg:npm/parse-server@9.7.0-alpha.14
Next non-vulnerable version 9.9.0-alpha.2
Latest non-vulnerable version 9.9.1-alpha.2
Risk 4.0
Vulnerabilities affecting this package (6)
Vulnerability Summary Fixed by
VCID-davb-xyy3-2qf1
Aliases:
CVE-2026-35200
GHSA-vr5f-2r24-w5hc
Parse Server: File upload Content-Type override via extension mismatch ### Impact A file can be uploaded with a filename extension that passes the file extension allowlist (e.g., `.txt`) but with a `Content-Type` header that differs from the extension (e.g., `text/html`). The `Content-Type` is passed to the storage adapter without consistency validation. Storage adapters that store and serve the provided Content-Type (such as S3 or GCS) serve the file with the mismatched Content-Type. The default GridFS adapter is not affected because it derives Content-Type from the filename at serving time. ### Patches The file upload now derives the Content-Type from the filename extension, overriding any user-provided Content-Type when the file has an extension. ### Workarounds Configure the storage adapter or CDN to derive Content-Type from the filename extension instead of using the stored Content-Type.
9.7.1-alpha.4
Affected by 3 other vulnerabilities.
VCID-jsgf-t1ga-x7eq
Aliases:
CVE-2026-43930
GHSA-jpq4-7fmq-q5fj
parse-server: MFA SMS one-time password accepted twice under concurrent login ### Impact A race condition in the MFA SMS one-time password (OTP) login path allows two concurrent `/login` requests carrying the same OTP to both succeed and both receive valid session tokens, breaking the single-use property of the OTP. The vulnerability requires the attacker to already possess the victim's password and intercept the active SMS OTP (e.g. via SIM swap, network mirror, or phishing relay) and to race the legitimate login request, so the practical attack surface is narrow. This advisory is the same class of incomplete fix as [GHSA-2299-ghjr-6vjp](https://github.com/parse-community/parse-server/security/advisories/GHSA-2299-ghjr-6vjp) (TOTP recovery codes) and [GHSA-w73w-g5xw-rwhf](https://github.com/parse-community/parse-server/security/advisories/GHSA-w73w-g5xw-rwhf) (MFA recovery in authData-only login). Those previous fixes added optimistic locking only for array-typed authData fields; SMS MFA stores the OTP as a string, so the guard skipped it. ### Patches The optimistic lock has been generalized to cover primitive (string, number, boolean) and array authData fields. The lock is implemented as a shared helper `applyAuthDataOptimisticLock` that adds equality predicates on the original values of changed fields to the update WHERE clause. Concurrent writers racing the same single-use token now miss the WHERE condition and surface as `Invalid auth data`. ### Workarounds - Disable SMS MFA and use TOTP instead (TOTP tokens are time-window validated, not stored single-use). - Place a rate limiter on the `/login` endpoint to reduce concurrent-request burst capacity. ### Resources - GitHub security advisory: https://github.com/parse-community/parse-server/security/advisories/GHSA-jpq4-7fmq-q5fj - Fix Parse Server 9: https://github.com/parse-community/parse-server/pull/10448 - Fix Parse Server 8: https://github.com/parse-community/parse-server/pull/10449
9.9.0-alpha.2
Affected by 0 other vulnerabilities.
VCID-kar5-6zet-aqad
Aliases:
CVE-2026-39381
GHSA-g4v2-qx3q-4p64
Parse Server's Endpoint `/sessions/me` bypasses `_Session` `protectedFields` ### Impact The `GET /sessions/me` endpoint returns `_Session` fields that the server operator explicitly configured as protected via the `protectedFields` server option. Any authenticated user can retrieve their own session's protected fields with a single request. The equivalent `GET /sessions` and `GET /sessions/:objectId` endpoints correctly strip protected fields. ### Patches The `GET /sessions/me` handler now re-fetches the session with the caller's auth context after validating the session token, ensuring `protectedFields` and CLP apply consistently with other session endpoints. ### Workarounds None. ### References - GitHub security advisory: https://github.com/parse-community/parse-server/security/advisories/GHSA-g4v2-qx3q-4p64 - Fix Parse Server 9: https://github.com/parse-community/parse-server/pull/10406 - Fix Parse Server 8: https://github.com/parse-community/parse-server/pull/10407
9.8.0-alpha.7
Affected by 1 other vulnerability.
VCID-r9jq-4te8-xkfb
Aliases:
CVE-2026-34595
GHSA-mmg8-87c5-jrc2
Parse Server has a LiveQuery protected-field guard bypass via array-like logical operator value ### Impact An authenticated user with `find` class-level permission can bypass the `protectedFields` class-level permission setting on LiveQuery subscriptions. By sending a subscription with a `$or`, `$and`, or `$nor` operator value as a plain object with numeric keys and a `length` property (an "array-like" object) instead of an array, the protected-field guard is bypassed. The subscription event firing acts as a binary oracle, allowing the attacker to infer whether a protected field matches a given test value. ### Patches The fix validates that `$or`, `$and`, and `$nor` operator values are arrays in the LiveQuery subscription handler, the query depth checker, and the protected-field guard. As defense in depth, the LiveQuery query evaluator also rejects non-array values for these operators. ### Workarounds There is no known workaround.
9.7.0-alpha.16
Affected by 5 other vulnerabilities.
VCID-sd7z-5aa7-f7aw
Aliases:
CVE-2026-39321
GHSA-mmpq-5hcv-hf2v
Parse Server has a login timing side-channel reveals user existence ### Impact The login endpoint response time differs measurably depending on whether the submitted username or email exists in the database. When a user is not found, the server responds immediately. When a user exists but the password is wrong, a bcrypt comparison runs first, adding significant latency. This timing difference allows an unauthenticated attacker to enumerate valid usernames. ### Patches A dummy bcrypt comparison is now performed when no user is found, normalizing response timing regardless of user existence. Additionally, accounts without a stored password (e.g. OAuth-only) now also run a dummy comparison to prevent the same timing oracle. ### Workarounds Configure rate limiting on the login endpoint to slow automated enumeration. This reduces throughput but does not eliminate the timing signal for individual requests.
9.8.0-alpha.6
Affected by 2 other vulnerabilities.
VCID-w48t-hex5-qkcs
Aliases:
CVE-2026-34784
GHSA-hpm8-9qx6-jvwv
Parser Server's streaming file download bypasses afterFind file trigger authorization ### Impact File downloads via HTTP Range requests bypass the `afterFind(Parse.File)` trigger and its validators on storage adapters that support streaming (e.g. the default GridFS adapter). This allows access to files that should be protected by `afterFind` trigger authorization logic or built-in validators such as `requireUser`. ### Patches The streaming file download path now executes the `afterFind(Parse.File)` trigger before sending any data. Authentication is resolved from the session token header so that trigger validators can distinguish authenticated from unauthenticated requests. ### Workarounds Use `beforeFind(Parse.File)` instead of `afterFind(Parse.File)` for file access authorization. The `beforeFind` trigger runs on all download paths including streaming.
9.7.1-alpha.1
Affected by 4 other vulnerabilities.
Vulnerabilities fixed by this package (1)
Vulnerability Summary Aliases
VCID-n8kv-67nw-xbaw Parse Server has a session field immutability bypass via falsy-value guard ### Impact An authenticated user can bypass the immutability guard on session fields (`expiresAt`, `createdWith`) by sending a null value in a PUT request to the session update endpoint. This allows nullifying the session expiry, making the session valid indefinitely and bypassing configured session length policies. ### Patches The truthiness-based guard checks were replaced with key-presence checks that reject any value for protected session fields, including null. ### Workarounds There is no known workaround. A `beforeSave` trigger on `_Session` could be used to reject null values for `expiresAt` and `createdWith`. CVE-2026-34574
GHSA-f6j3-w9v3-cq22

Date Actor Action Vulnerability Source VulnerableCode Version
2026-06-07T20:52:35.798724+00:00 GHSA Importer Fixing VCID-n8kv-67nw-xbaw https://github.com/advisories/GHSA-f6j3-w9v3-cq22 38.6.0
2026-06-06T08:26:18.183463+00:00 GitLab Importer Affected by VCID-jsgf-t1ga-x7eq https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/parse-server/CVE-2026-43930.yml 38.6.0
2026-06-06T07:50:48.472049+00:00 GitLab Importer Affected by VCID-kar5-6zet-aqad https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/parse-server/CVE-2026-39381.yml 38.6.0
2026-06-06T07:50:10.165470+00:00 GitLab Importer Affected by VCID-sd7z-5aa7-f7aw https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/parse-server/CVE-2026-39321.yml 38.6.0
2026-06-06T07:46:47.292337+00:00 GitLab Importer Affected by VCID-davb-xyy3-2qf1 https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/parse-server/CVE-2026-35200.yml 38.6.0
2026-06-06T07:42:14.713275+00:00 GitLab Importer Fixing VCID-n8kv-67nw-xbaw https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/parse-server/CVE-2026-34574.yml 38.6.0
2026-06-06T07:41:41.788978+00:00 GitLab Importer Affected by VCID-w48t-hex5-qkcs https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/parse-server/CVE-2026-34784.yml 38.6.0
2026-06-06T07:41:31.264354+00:00 GitLab Importer Affected by VCID-r9jq-4te8-xkfb https://gitlab.com/gitlab-org/advisories-community/-/blob/main/npm/parse-server/CVE-2026-34595.yml 38.6.0
2026-06-04T16:51:49.258963+00:00 GithubOSV Importer Fixing VCID-n8kv-67nw-xbaw https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/04/GHSA-f6j3-w9v3-cq22/GHSA-f6j3-w9v3-cq22.json 38.6.0