CVE-2026-109954 Overview
CVE-2026-109954 affects Parse Server, an open-source backend framework. The vulnerability exists in versions 5.4.0 before 8.6.96 and 9.0.0 before 9.10.2-alpha.5. Parse Server shares transactional batch state across concurrent requests, allowing any client's transactional batch request to interfere with other clients' database writes.
On PostgreSQL or MongoDB replica sets and sharded clusters, acknowledged writes from unrelated clients are rolled back when a batch fails. PostgreSQL transactions can also remain open indefinitely, causing subsequent writes to fail. The flaw is classified as a concurrent execution race condition [CWE-362].
Critical Impact
Any unauthenticated network client can corrupt or roll back other clients' acknowledged database writes and exhaust PostgreSQL transaction resources.
Affected Products
- Parse Server versions 5.4.0 through 8.6.95
- Parse Server versions 9.0.0 through 9.10.2-alpha.4
- Deployments using PostgreSQL or MongoDB replica sets and sharded clusters
Discovery Timeline
- 2026-10-13 - CVE-2026-109954 published to NVD
- 2026-10-13 - Last updated in NVD database
Technical Details for CVE-2026-109954
Vulnerability Analysis
Parse Server processes transactional batch requests by maintaining shared state across the server process. The implementation fails to isolate transactional context per request. When multiple clients submit concurrent batch requests, the server conflates their database transaction state.
The result is cross-request interference against the backing database. If one client's batch fails and triggers a rollback, writes acknowledged for unrelated clients can be reverted. On PostgreSQL, the shared transaction may remain open after the triggering request completes, blocking further writes until the connection is reset.
The issue is a classic concurrent execution using shared resource with improper synchronization bug [CWE-362]. Impact is primarily to data integrity and availability of write operations on affected database backends.
Root Cause
The root cause is global or module-scoped storage of transactional batch state that should instead be scoped to the individual request context. Because Node.js runs the Parse Server event loop single-threaded but handles I/O asynchronously, interleaved request handlers read and mutate the same batch state. The absence of request-scoped isolation produces the race condition.
Attack Vector
An unauthenticated client with network access to the Parse Server HTTP API can send transactional batch requests concurrently with legitimate client traffic. No special privileges or user interaction are required. The attacker does not need to read affected data; the attack targets the write path and transaction lifecycle. Successful exploitation produces rolled-back writes for other clients and, on PostgreSQL, hung transactions that stall subsequent writes.
No verified public proof-of-concept code is available. Refer to the GitHub Security Advisory GHSA-jhh9-hrgh-c9gv and the VulnCheck Advisory on Parse Server for maintainer-provided technical detail.
Detection Methods for CVE-2026-109954
Indicators of Compromise
- Unexpected rollbacks of successfully acknowledged writes in PostgreSQL or MongoDB server logs
- Long-running or orphaned PostgreSQL transactions observable via pg_stat_activity with state = 'idle in transaction'
- Spikes in Parse Server /batch endpoint traffic from a single client or IP
- Application-level errors reporting failed writes on previously healthy collections or tables
Detection Strategies
- Monitor Parse Server access logs for high-concurrency POST requests to the batch endpoint
- Alert on PostgreSQL transactions open longer than an operational threshold, for example 60 seconds
- Correlate Parse Server HTTP 5xx responses with database rollback events in the same time window
- Track MongoDB transactions.currentActive and abort rate for anomalous growth
Monitoring Recommendations
- Enable database query and transaction auditing on all Parse Server backends
- Forward Parse Server application logs and database transaction metrics to a central analytics platform
- Baseline normal batch request volume per client and alert on deviations
How to Mitigate CVE-2026-109954
Immediate Actions Required
- Upgrade Parse Server to version 8.6.96 or later on the 5.x/8.x branch
- Upgrade Parse Server to version 9.10.2-alpha.5 or later on the 9.x branch
- Restrict network exposure of the Parse Server API to trusted clients until patched
- Audit recent database writes on PostgreSQL and MongoDB replica sets for unexpected rollbacks
Patch Information
Parse Server maintainers released fixes in versions 8.6.96 and 9.10.2-alpha.5. The patches isolate transactional batch state per request, eliminating the shared state responsible for cross-client interference. See the GitHub Security Advisory GHSA-jhh9-hrgh-c9gv for the full patch notes and commit references.
Workarounds
- Disable transactional batch request handling in application code if operationally feasible
- Place the Parse Server behind an authenticated API gateway to limit anonymous batch traffic
- Rate-limit requests to the /batch endpoint to reduce concurrency windows
- Configure PostgreSQL idle_in_transaction_session_timeout to automatically terminate stalled transactions
# Configuration example - upgrade Parse Server via npm
npm install parse-server@^8.6.96
# or for the 9.x branch
npm install parse-server@9.10.2-alpha.5
# PostgreSQL mitigation: cap idle-in-transaction sessions
psql -c "ALTER SYSTEM SET idle_in_transaction_session_timeout = '60s';"
psql -c "SELECT pg_reload_conf();"
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

