
Descrição "CVE-2026-8053 CHECKER"-20260518-16h30-GMT+7
| Propriedade | Valor |
|---|
| CVE ID | CVE-2026-8053 |
| Nome técnico | FlatBSON Duplicate Field Index Drift |
| Tipo de vulnerabilidade | CWE-787 — Out-of-bounds Write |
| CVSS v4.0 | 8.7 (ALTO) |
| CVSS v3.1 | 8.8 (ALTO) |
| EPSS | 0.064% (percentil 20 — baixa probabilidade de exploração) |
| KEV (Known Exploited) | Não registrado |
| Data de detecção | Descoberta interna (MongoDB) |
| Data de publicação | 12/05/2026 |
| Data reservada | 06/05/2026 |
| Status NVD | PUBLISHED / Awaiting Analysis |
A vulnerabilidade existe no sistema de coleções de séries temporais do MongoDB Server. Especificamente, o erro ocorre devido a:
Uma inconsistência (inconsistency) no mecanismo de mapeamento entre nome do campo (field name) e índice (index) dentro do catálogo de buckets de séries temporais.
Quando esse mecanismo de mapeamento sofre um desvio (drift), uma operação de gravação pode causar uma escrita fora dos limites (out-of-bounds write) no processo mongod. Sob determinadas condições, isso pode escalar para execução remota de código (Remote Code Execution).
| Condição | Descrição |
|---|---|
| Autenticação | Necessária — o atacante deve ter uma conta MongoDB válida |
| Privilégios | Requer privilégio de escrita (write privilege) no banco de dados |
| Interação do usuário | Não é necessária |
| Rede | Explorável remotamente pela rede |
| Complexidade | Baixa (attack complexity: LOW) |
| Branch do MongoDB | Versão afetada | Corrigido a partir da versão |
|---|---|---|
| 5.0 | < 5.0.33 | ≥ 5.0.33 |
| 6.0 | < 6.0.28 | ≥ 6.0.28 |
| 7.0 | < 7.0.34 | ≥ 7.0.34 |
| 8.0 | < 8.0.23 | ≥ 8.0.23 |
| 8.2 | < 8.2.9 | ≥ 8.2.9 |
| 8.3 | < 8.3.2 | ≥ 8.3.2 |
Nota: As versões anteriores à 5.0 (4.x, 3.x) estão fora do ciclo de vida de suporte (EOL). Se você estiver executando essas versões, faça upgrade urgente para uma branch suportada.
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
| Thành phần | Giá trị | Ý nghĩa |
|------------|---------|---------|
| AV (Attack Vector) | **Network (N)** | Exploração remota pela rede |
| AC (Attack Complexity) | **Low (L)** | Não requer condições especiais |
| AT (Attack Requirements) | **None (N)** | Não requer pré-requisitos |
| PR (Privileges Required) | **Low (L)** | Apenas usuário com permissão de escrita |
| UI (User Interaction) | **None (N)** | Não requer interação da vítima |
| VC/VI/VA (Vulnerable System) | **High / High / High** | Toda a tríade CIA afetada |
| SC/SI/SA (Subsequent System) | **None** | Não afeta outros sistemas |
---
## Guia de correção
### 1. Medida principal: Atualizar o MongoDB Server
Esta é a medida **única e definitiva**. Atualize o MongoDB Server para a versão corrigida correspondente:```bash
# Kiểm tra phiên bản hiện tại
mongod --version
# Debian/Ubuntu — nâng cấp qua APT
sudo apt update
sudo apt install -y mongodb-org=<phiên-bản-đã-vá>
# RHEL/CentOS/Rocky — nâng cấp qua YUM/DNF
sudo yum update mongodb-org-<phiên-bản-đã-vá>
# Docker — pull image mới
docker pull mongo:<phiên-bản-đã-vá>
Versões de patch específicas por branch:
| Branch | Comando de atualização de exemplo (APT) |
|---|---|
| 5.0 | sudo apt install -y mongodb-org=5.0.33 |
| 6.0 | sudo apt install -y mongodb-org=6.0.28 |
| 7.0 | sudo apt install -y mongodb-org=7.0.34 |
| 8.0 | sudo apt install -y mongodb-org=8.0.23 |
| 8.2 | sudo apt install -y mongodb-org=8.2.9 |
| 8.3 | sudo apt install -y mongodb-org=8.3.2 |
authorization: enabled em mongod.conf: ```yaml
security:
authorization: enabled
mongod --version
sudo systemctl status mongod
mongosh --eval "db.version()"
sudo bash CVE-2026-8053-MongoDB-Fixed.sh
---
## Ferramenta de verificação: `CVE-2026-8053-MongoDB-Fixed.sh`
Script bash que verifica e avalia automaticamente se o MongoDB Server é afetado pela CVE-2026-8053. O script foi projetado para execução segura em **produção** — todas as operações são em modo **somente leitura**, sem gravar qualquer dado no MongoDB.
### Principais recursos
| Recurso | Descrição |
|-----------|-------|
| Detecção de instalação | Localiza automaticamente o caminho do `mongod` e do shell (`mongosh`/`mongo`) |
| Comparação de versões | Cruza a versão instalada com a lista de versões afetadas (6 branches) |
| Detecção de EOL | Alerta se o MongoDB estiver em branch com fim de vida (4.4 ou inferior) |
| Varredura time-series | Lista todas as time-series collections em todo o cluster |
| Verificação de permissões | Lista usuários com permissão de gravação — possíveis alvos de exploração da vulnerabilidade |
| Verificação de segurança | Avalia as configurações de `authorization`, `bindIp`, `TLS/SSL` |
| Suporte a replica set | Conecta via connection string `mongodb://host:port/?replicaSet=name` |
| Múltiplas saídas | Modo normal (colorido), quiet (código de saída), JSON (CI/CD) |
| Segurança absoluta | **0 operações de gravação** — todos os comandos MongoDB são somente leitura |
### Requisitos de sistema
| Requisito | Detalhes |
|----------|----------|
| Sistema operacional | Linux (Ubuntu, Debian, RHEL, CentOS, Rocky, Alma, etc.) |
| Bash | ≥ 4.0 (suporte a associative array) |
| MongoDB Shell | `mongosh` (recomendado) ou `mongo` (legado) |
| Permissão de SO | `sudo` / `root` (para ler o arquivo de configuração `/etc/mongod.conf`) |
| Permissão MongoDB | Usuário com permissão de leitura em `system.users` e para executar `listDatabases` |
### Opções de linha de comando (CLI Options)
| Opção curta | Opção longa | Parâmetro | Padrão | Descrição |
|-------------|------------|---------|----------|-------|
| `-h` | `--help` | — | — | Exibe a ajuda e sai |
| `-q` | `--quiet` | — | `false` | Exibe apenas o resultado principal, usa o código de saída para determinar o status |
| `-j` | `--json` | — | `false` | Exibe o resultado em JSON (adequado para pipeline CI/CD) |
| `-H` | `--host` | `HOST` | `localhost` | Endereço do servidor MongoDB |
| `-P` | `--port` | `PORT` | `27017` | Porta do MongoDB |
| `-u` | `--user` | `USER` | `super_admin` | Nome de usuário do MongoDB |
| `-p` | `--pass` | `PASS` | *(valor padrão interno)* | Senha do MongoDB |
| `-r` | `--replica-set` | `NAME` | `rs_cams` | Nome do replica set (se houver) |
| — | `--auth-db` | `DB` | `admin` | Banco de dados de autenticação |
| — | `--no-color` | — | `false` | Desativa cores ANSI na saída |
### Processo de verificação em 6 etapas
O script executa sequencialmente 6 etapas. Cada etapa possui log de status `[INFO]` / `[OK]` / `[WARN]` / `[ERROR]`.```
Bước 1: Phát hiện MongoDB installation
├─ Tìm mongod trong $PATH
├─ Duyệt các thư mục phổ biến:
│ /usr/bin, /usr/local/bin, /opt/mongodb/bin, /usr/lib/mongodb, /snap/bin
└─ Thất bại → exit 0 (không cài đặt = không bị ảnh hưởng)
Bước 2: Lấy phiên bản MongoDB
├─ Chạy: mongod --version
├─ Parse output: "db version v6.0.15" → "6.0.15"
└─ Thất bại → exit 2 (lỗi không xác định)
Bước 3: So sánh phiên bản với danh sách bị ảnh hưởng
├─ Tách major.minor.patch bằng regex
├─ Kiểm tra EOL (4.4, 4.2, 4.0, 3.6, ...)
├─ Đối chiếu với bảng PATCHED_VERSIONS:
│ ┌────────────┬──────────────┬────────┐
│ │ Nhánh │ Ngưỡng vá │ Ví dụ │
│ ├────────────┼──────────────┼────────┤
│ │ 5.0 │ patch ≥ 33 │ 5.0.33 │
│ │ 6.0 │ patch ≥ 28 │ 6.0.28 │
│ │ 7.0 │ patch ≥ 34 │ 7.0.34 │
│ │ 8.0 │ patch ≥ 23 │ 8.0.23 │
│ │ 8.2 │ patch ≥ 9 │ 8.2.9 │
│ │ 8.3 │ patch ≥ 2 │ 8.3.2 │
│ └────────────┴──────────────┴────────┘
├─ Nhánh ≥ 8.4 → mặc định AN TOÀN
└─ Kết quả: SAFE | VULNERABLE | EOL | UNKNOWN
Bước 4: Kiểm tra trạng thái mongod
├─ pgrep -x mongod
├─ systemctl is-active mongod
├─ ss / netstat kiểm tra port đang listen
└─ Kết quả: đang chạy / không chạy
Bước 5: Kiểm tra time-series collections & quyền người dùng
│ (chỉ thực hiện nếu mongod đang chạy và kết nối được)
├─ check_timeseries_collections():
│ ├─ listDatabases → lấy danh sách tất cả database
│ ├─ getCollectionInfos({ type: "timeseries" }) → từng database
│ └─ Output: JSON array [{ database, collection, timeseries }]
│
├─ check_user_privileges():
│ ├─ Đọc admin.system.users
│ ├─ Lọc user có role ghi: readWrite, dbOwner, root,
│ │ readWriteAnyDatabase, dbAdmin, userAdmin, backup,
│ │ restore, clusterAdmin, hostManager, __system
│ ├─ Output: JSON array [{ user, database, roles }]
│ └─ Đây là những user CÓ THỂ khai thác lỗ hổng
│
└─ Kết nối thất bại → gợi ý dùng -u -p để xác thực
Bước 6: Kiểm tra cấu hình bảo mật
├─ Tìm file mongod.conf (/etc/mongod.conf, /etc/mongodb.conf, ...)
├─ Fallback: đọc /proc/<pid>/cmdline nếu không tìm thấy file
├─ Kiểm tra 3 hạng mục:
│ ├─ authorization: enabled → [OK] / [WARN]
│ ├─ bindIp: 127.0.0.1 → [OK] / [WARN] (public)
│ └─ TLS/SSL: requireTLS → [OK] / [WARN]
└─ Kết quả: "OK" hoặc danh sách vấn đề (authorization_disabled, ...)
detect_mongod_path()Detecta o caminho do binário mongod no sistema.
$PATH usando command -v mongod/usr/bin, /usr/local/bin, /opt/mongodb/bin, /usr/lib/mongodb, /snap/binget_mongod_version()Extrai a versão a partir da saída de mongod --version.
mongodv?\K\d+\.\d+\.\d+db version v6.0.15 → 6.0.15check_version_vulnerable()Compara a versão do MongoDB com o banco de dados de vulnerabilidades.
major.minor e patch usando a regex ^(\d+)\.(\d+)\.(\d+)$EOL_BRANCHES[]PATCHED_VERSIONS[associative_array]patch < threshold → VULNERABLE0 = SAFE, 1 = VULNERABLE, 2 = EOL/UNKNOWNbuild_mongo_cmd()Constrói o comando completo de conexão ao MongoDB shell.
mongosh (prioridade) → mongo (fallback)MONGOD_REPLICA_SET estiver definido, usa a connection string "mongodb://HOST:PORT/?replicaSet=NAME" — os parâmetros --host / --port são ignorados (já estão na URI)--host (se diferente de localhost) e --port (se diferente de 27017)--username, --password, --authenticationDatabase (se MONGOD_USER estiver definido)check_timeseries_collections()Escaneia todo o cluster para encontrar coleções time-series.
adminDb.adminCommand({ listDatabases: 1, nameOnly: true }) — lista todos os bancos de dadosdb.getCollectionInfos({ type: "timeseries" }) — filtra time-series{ database, collection, timeseries }[] se não houver nenhuma coleção time-seriescheck_user_privileges()Lista usuários com permissão de escrita — alvos potenciais para exploração de CVE.
admin.system.users.find()readWrite — grava em um banco de dados específicoreadWriteAnyDatabase — grava em qualquer banco de dadosdbAdmin, dbOwner — administração do banco de dadosuserAdmin, userAdminAnyDatabase — gerenciamento de usuáriosroot — acesso total__system, backup, restore, clusterAdmin, hostManager — privilégios de sistema[{ user, database, roles }]check_security_config()Avalia a configuração de segurança a partir do arquivo mongod.conf.
/proc/<pid>/cmdline| Item | Padrão grep | Risco se ausente |
|---|---|---|
| Authorization | authorization: enabled | Qualquer pessoa pode se conectar sem autenticação |
| Bind IP | bindIp: 127.0.0.1 ou bindIpAll: false | Expõe à rede pública |
| TLS/SSL | mode: requireTLS ou ssl: requireSSL | Dados transmitidos sem criptografia |
"OK" (perfeito) ou lista de problemas (ex.: authorization_disabled\ntls_disabled)O script suporta 3 modos de saída, atendendo a diferentes propósitos:
sudo bash CVE-2026-8053-MongoDB-Fixed.sh
Saída completa com cores ANSI: banner, log de cada etapa, tabela de resumo, recomendações detalhadas.```
==============================================
CVE-2026-8053 Scanner v1.0.0
CVE-2026-8053: FlatBSON Duplicate Field Index Drift
Ngay quet: 2026-05-18 14:30:00
==============================================
[INFO] Buoc 1/6: Phat hien MongoDB installation...
[OK] Tim thay mongod tai: /usr/bin/mongod
[INFO] Buoc 2/6: Kiem tra phien ban MongoDB...
[INFO] Phien ban cai dat: 7.0.32
[INFO] Buoc 3/6: So sanh voi danh sach phien ban bi anh huong...
[ERROR] MongoDB 7.0.32 BI ANH HUONG boi CVE-2026-8053 — CAN NANG CAP NGAY!
...
==============================================
KET QUA QUET
==============================================
Phien ban MongoDB : 7.0.32
mongod dang chay : Co
Replica Set : rs_cams
Trang thai CVE-2026-8053: NGUY HIEM — CO LO HONG
==============================================
KHUYEN NGHI
==============================================
[!!!] HANH DONG KHAN CAP:
1. Nang cap MongoDB Server NGAY LAP TUC len phien ban da va:
-> Nang cap len 7.0.34 hoac moi hon
...
-q)```bashsudo bash CVE-2026-8053-MongoDB-Fixed.sh -q
Apenas exibe as linhas `[ERROR]` / `[WARN]` / `[OK]` — adequado para verificação rápida. Baseie-se apenas no **código de saída**:
| Código de Saída | Significado | Ação |
|-----------|---------|-----------|
| `0` | **SEGURO** — MongoDB foi corrigido | Nada a fazer |
| `1` | **PERIGO** — Há vulnerabilidade | Atualize imediatamente |
| `2` | **EOL / ERRO** — Versão no fim da vida útil ou erro de identificação | Atualize com urgência |
#### 3. Modo JSON (`-j`)```bash
sudo bash CVE-2026-8053-MongoDB-Fixed.sh -j -q
Saída JSON pura — adequada para integração com pipeline CI/CD, sistema de monitoramento.```json { "cve": "CVE-2026-8053", "title": "FlatBSON Duplicate Field Index Drift", "scan_date": "2026-05-18T14:30:00+07:00", "host": "localhost", "port": "27017", "replica_set": "rs_cams", "mongodb": { "installed": true, "version": "7.0.32", "running": true, "vulnerable": true, "status": "VULNERABLE" }, "time_series_collections": [ { "database": "iot", "collection": "sensor_readings", "timeseries": { "timeField": "ts", "metaField": "sensorId" } } ], "risky_users": [ { "user": "app_user", "database": "admin", "roles": ["readWriteAnyDatabase"] }, { "user": "super_admin", "database": "admin", "roles": ["root"] } ], "security_config": ["authorization_disabled", "tls_disabled"], "remediation": { "action": "UPGRADE", "patched_versions": { "5.0": "5.0.33", "6.0": "6.0.28", "7.0": "7.0.34", "8.0": "8.0.23", "8.2": "8.2.9", "8.3": "8.3.2" } } }
### Garantia de segurança — Somente leitura
O script **não executa nenhuma operação de escrita** no cluster MongoDB. Todos os comandos MongoDB utilizados:
| Comando | Propósito | Tipo |
|------|----------|------|
| `db.version()` | Verificar conexão + versão do runtime | **Leitura** |
| `adminCommand({ listDatabases: 1, nameOnly: true })` | Listar nomes de bancos de dados | **Leitura** (Comando Admin) |
| `db.getCollectionInfos({ type: "timeseries" })` | Obter metadados da collection | **Leitura** |
| `admin.system.users.find({})` | Ler a lista de usuários e papéis | **Leitura** (Coleção do Sistema) |
Não há `insert`, `update`, `delete`, `createCollection`, `drop`, `grantRolesToUser`, `replSetReconfig` nem qualquer comando de escrita. **O script é seguro para ser executado em cluster de produção.**
### Exemplo de uso```bash
# 1. Quét cơ bản trên localhost (yêu cầu sudo để đọc /etc/mongod.conf)
sudo bash CVE-2026-8053-MongoDB-Fixed.sh
# 2. Quét với thông tin xác thực tùy chỉnh
sudo bash CVE-2026-8053-MongoDB-Fixed.sh \
-H 10.0.0.5 -P 27017 \
-u myadmin -p 'MyStr0ngP@ss'
# 3. Quét replica set với auth
sudo bash CVE-2026-8053-MongoDB-Fixed.sh \
-H 10.0.0.5 -P 27017 \
-u app_user -p 'pass123' \
-r rs_production
# 4. Chỉ lấy exit code, không hiển thị log (dùng trong script)
sudo bash CVE-2026-8053-MongoDB-Fixed.sh -q
if [ $? -eq 0 ]; then
echo "MongoDB an toan"
else
echo "CAN NANG CAP MongoDB NGAY!"
fi
# 5. Output JSON cho CI/CD pipeline
sudo bash CVE-2026-8053-MongoDB-Fixed.sh -q -j > scan_result.json
# 6. Dùng jq để trích xuất thông tin từ JSON
sudo bash CVE-2026-8053-MongoDB-Fixed.sh -q -j | jq -r '.mongodb.status'
sudo bash CVE-2026-8053-MongoDB-Fixed.sh -q -j | jq '.risky_users | length'
# 7. Tích hợp vào cron job (quét hàng ngày lúc 7h sáng)
# Thêm vào /etc/cron.d/mongodb-cve-scan:
# 0 7 * * * root /opt/scripts/CVE-2026-8053-MongoDB-Fixed.sh -q -j | \
# tee /var/log/mongodb-cve-scan/$(date +\%Y\%m\%d).json
/opt/scripts/CVE-2026-8053-MongoDB-Fixed.sh -q exit $? # 0=OK, 1=CRITICAL, 2=WARNING
sudo bash CVE-2026-8053-MongoDB-Fixed.sh -q -j |
jq '{cve_2026_8053_vulnerable: (.mongodb.vulnerable | if . then 1 else 0 end),
cve_2026_8053_risky_users: (.risky_users | length),
cve_2026_8053_ts_collections: (.time_series_collections | length)}' \
/var/lib/node_exporter/textfile_collector/mongodb_cve.prom
---
## Impacto Prático
| Aspecto | Avaliação |
|-----------|----------|
| **Disponibilidade do exploit** | Nenhum PoC público (no momento da publicação) |
| **Dificuldade de exploração** | Média — requer profundo conhecimento dos internals do FlatBSON |
| **Escopo de impacto** | Todos os MongoDB Server que implementam time-series collections |
| **Alvos de alto risco** | Sistemas que permitem vários usuários com permissão de escrita, MongoDB exposto à Internet |
---
## Linha do Tempo
| Data | Evento |
|------|---------|
| 06/05/2026 | CVE reservado |
| 12/05/2026 | MongoDB publica advisory e lança o patch |
| 12/05/2026 | GitHub Advisory (GHSA-pr63-cc36-q84h) publicado |
| 13/05/2026 | Atualizações no NVD, Tenable, Snyk, Debian Security Tracker |
---
## Referências
- [MongoDB Jira — SERVER-126021](https://jira.mongodb.org/browse/SERVER-126021)
- [NVD — CVE-2026-8053](https://nvd.nist.gov/vuln/detail/CVE-2026-8053)
- [GitHub Advisory — GHSA-pr63-cc36-q84h](https://github.com/advisories/ghsa-pr63-cc36-q84h)
- [Fórum da Comunidade MongoDB — Patch importante de maio de 2026](https://www.mongodb.com/community/forums/t/important-mongodb-patch-available-may-2026/339172)
- [Tenable — CVE-2026-8053](https://www.tenable.com/cve/CVE-2026-8053)
- [Snyk — SNYK-UNMANAGED-MONGODB-16678063](https://security.snyk.io/vuln/SNYK-UNMANAGED-MONGODB-16678063)
- [Debian Security Tracker — CVE-2026-8053](https://security-tracker.debian.org/tracker/CVE-2026-8053)
- [Cyber Security News — RCE crítico no MongoDB](https://cybersecuritynews.com/mongodb-rce-vulnerability/)