Critical CVSS 9.5 Security news
MongoDB fixes a critical replication flaw that lets unauthenticated attackers crash servers and, in some conditions, run code
MongoDB disclosed CVE-2026-118383 on 10 November 2026, rated 9.5 under CVSS 4.0. The use-after-free bug sits in replication and is hit when a newly elected replica set primary finishes catching up. It can be triggered by unauthenticated requests and leads to a crash or, under certain conditions, arbitrary code execution. Standalone instances are not affected, and there are no reports of exploitation so far.
Key points
- Who is affected: admins running self-managed MongoDB replica sets and sharded clusters. Standalone mongod instances are not affected.
- Fixed releases: 9.0.7, 8.3.16, 8.0.37, 7.0.48, 6.0.30, 5.0.35 and 4.4.32 (MongoDB alert, 10 Nov 2026).
- The bug is in primary catch-up after an election. Network access to the database is enough; no login is needed. CVSS 4.0 9.5, CVSS 3.1 9.0, high attack complexity.
- MongoDB has published no indicators of compromise or workarounds; the flaw was found internally.
Vulnerabilities: CVE-2026-118383
What happened
MongoDB published a security alert on 10 November 2026 for CVE-2026-118383 in MongoDB Server. It is a use-after-free (CWE-416) in the replication code. MongoDB, acting as the CNA, scores it 9.5 under CVSS 4.0 and 9.0 under CVSS 3.1 - critical. Fixed releases are out for every line from 4.4 to 9.0.
According to MongoDB, the flaw can be triggered by unauthenticated requests. The result is a server crash and, under certain conditions, arbitrary code execution. MongoDB found the issue internally and does not mention exploitation.
MongoDB issued alerts for several other bugs the same day (for example CVE-2026-120828, memory exhaustion, 8.7). This article covers the most serious one.
Technical details
- Component: replication in MongoDB Server, specifically the catch-up phase after a new replica set primary is elected.
- Bug class: use-after-free. Ticket SERVER-138175 describes it as re-entrancy into
CatchupState::abort(). - Conditions: the attacker only needs network access to a replica set member - no credentials and no user interaction. The bug only fires while a newly elected primary is completing catch-up, hence the high attack complexity (AC:H).
- Fix: alongside the bug fix, MongoDB restricted the
afterOpTimeread concern to internal system users (SERVER-138119).
For context: a replica set is the standard way to run MongoDB in production. One primary accepts writes, secondaries keep copies of the data, and if the primary goes down they elect a new one. The new primary first pulls any recent writes it is missing from the other members (the catch-up phase, bounded by settings.catchUpTimeoutMillis) and only then starts accepting writes. The bug is hit when that phase ends.
MongoDB has not released proof-of-concept code, and neither do we.
Who is affected
| Line | Affected | Fixed |
|---|---|---|
| 9.0 | 9.0.0 to before 9.0.7 | 9.0.7 |
| 8.3 | 8.3.0 to before 8.3.16 | 8.3.16 |
| 8.0 | 8.0.0 to before 8.0.37 | 8.0.37 |
| 7.0 | 7.0.0 to before 7.0.48 | 7.0.48 |
| 6.0 | 6.0.0 to before 6.0.30 | 6.0.30 |
| 5.0 | 5.0.0 to before 5.0.35 | 5.0.35 |
| 4.4 | 4.4.0 to before 4.4.32 | 4.4.32 |
Affected nodes are replica set members, including shard and config server members. Standalone mongod is not affected, according to MongoDB. Check the version and role in mongosh:
db.version()
rs.status().members.map(m => [m.name, m.stateStr])
How to tell if you were compromised
MongoDB has not published indicators of compromise. From our experience:
- Review the
mongodlog around primary elections (electionandcatchupentries) for unexpected process crashes or restarts by systemd or Kubernetes. - Check which addresses outside your application servers connected to the database port (27017 by default). Our IOC extractor pulls IP addresses out of logs and runs entirely in your browser.
- If you suspect code execution, investigate processes and files created under the account that runs
mongod.
What to do
- Upgrade every member of the replica set to the fixed release for its line - secondaries first, then the primary after
rs.stepDown(). Keep in mind that a primary election is exactly when the bug fires, so restrict network access before you start. - Restrict database access: the MongoDB port should only be reachable from application servers and other cluster members (firewall,
net.bindIp). Authentication does not protect against this flaw. This is our recommendation; MongoDB lists no workarounds. - Find out where the database listens: run
ss -tlnp | grep mongodon the server and checknet.bindIpin/etc/mongod.conf. A value of0.0.0.0means all interfaces, so your firewall has to do the filtering. - Confirm the version with
db.version()on every member after upgrading. - Update distribution packages and container images (such as
mongo:8.0) as their publishers release fixes.
Timeline
Updates
- 12 Nov 2026 - first version of this article.
FAQ
I only run a single MongoDB server. Am I affected?
MongoDB says standalone mongod is not affected. If you start the instance with the replSet option, even as a one-member replica set, treat it as affected and upgrade. You can check with rs.status() in mongosh.
Why is the attack complexity rated high?
The bug only fires at a specific moment: when a newly elected primary completes catch-up. Elections happen during outages, restarts or maintenance. That is why the CVSS 3.1 vector has AC:H. The impact is severe, so the overall score is still critical.
What about MongoDB Atlas?
MongoDB's alert does not state the status of Atlas. Check your cluster version in the Atlas console; if it is older than the fixed release for its line, watch MongoDB's maintenance notices.
Sources
Spotted a mistake? Let us know and we will correct it openly.