
Desc "CVE-2026-8053 チェッカー"-20260518-16h30-GMT+7
| 属性 | 値 |
|---|---|
| CVE ID | CVE-2026-8053 |
| 技術名 | FlatBSON Duplicate Field Index Drift |
| 脆弱性タイプ | CWE-787 — 領域外書き込み (Out-of-bounds Write) |
| CVSS v4.0 | 8.7 (HIGH) |
| CVSS v3.1 | 8.8 (HIGH) |
| EPSS | 0.064% (20th パーセンタイル — 悪用の可能性は低い) |
| KEV (既知の悪用) | 記録なし |
| 発見日 | MongoDB 内部 |
| 公開日 | 12/05/2026 |
| 予約日 | 06/05/2026 |
| NVD ステータス | PUBLISHED / Awaiting Analysis |
この脆弱性は MongoDB Server の time-series collection システム に存在します。具体的には、以下の原因で発生します。
time-series bucket catalog 内の フィールド名 (field name) と インデックス (index) の間のマッピング機構における不整合 (inconsistency)。
このマッピング機構がずれる(ドリフト)と、書き込み操作によって mongod プロセス内でバッファ外メモリへの書き込み (out-of-bounds write) が発生する可能性があります。特定の条件下では、これは任意のコード実行 (Remote Code Execution) にエスカレーションする可能性があります。
注記: 5.0 より古いバージョン(4.x、3.x)はサポート終了(EOL)です。これらのバージョンを実行している場合は、サポート対象のブランチへの緊急アップグレードが必要です。
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
| コンポーネント | 値 | 意味 |
|------------|---------|---------|
| AV (Attack Vector) | **Network (N)** | ネットワーク経由のリモート攻撃 |
| AC (Attack Complexity) | **Low (L)** | 特別な条件は不要 |
| AT (Attack Requirements) | **None (N)** | 前提条件は不要 |
| PR (Privileges Required) | **Low (L)** | 書き込み権限のあるユーザーのみで十分 |
| UI (User Interaction) | **None (N)** | 被害者の操作は不要 |
| VC/VI/VA (Vulnerable System) | **High / High / High** | CIAトライアド全体が影響を受ける |
| SC/SI/SA (Subsequent System) | **None** | 他のシステムへの影響なし |
---
## 修復ガイド
### 1. 主な対策: MongoDB Server のアップグレード
これは**唯一かつ完全な**対策です。MongoDB Server を対応する修正済みバージョンにアップグレードしてください:```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á>
Phiên bản vá cụ thể cho từng nhánh: → 各ブランチの具体的なパッチバージョン:
authorization: enabled を使用して mongod.conf 内で構成されていることを確認してください: ```yaml
security:
authorization: enabled
mongod --version
sudo systemctl status mongod
mongosh --eval "db.version()"
sudo bash CVE-2026-8053-MongoDB-Fixed.sh
---
## スキャンツール: `CVE-2026-8053-MongoDB-Fixed.sh`
MongoDB Server が CVE-2026-8053 の影響を受けるかどうかを自動的にスキャンおよび評価する Bash スクリプトです。このスクリプトは **本番環境** で安全に実行できるように設計されています — すべての操作は **読み取り専用** モードであり、MongoDB へデータを書き込むことは一切ありません。
### 主な機能
| 機能 | 説明 |
|-----------|-------|
| インストール検出 | `mongod` とシェル (`mongosh`/`mongo`) のパスを自動検出 |
| バージョン比較 | インストール済みバージョンを影響を受けるリスト (6 ブランチ) と照合 |
| EOL 検出 | MongoDB がサポート終了ブランチ (4.4 以下) の場合に警告 |
| time-series スキャン | クラスター全体のすべての time-series collections を一覧表示 |
| 権限チェック | 書き込み権限を持つユーザーを一覧表示 — 脆弱性を悪用される可能性のある対象 |
| セキュリティチェック | `authorization`、`bindIp`、`TLS/SSL` の構成を評価 |
| レプリカセット対応 | 接続文字列 `mongodb://host:port/?replicaSet=name` で接続 |
| 多彩な出力 | 通常モード (色付き)、quiet (終了コード)、JSON (CI/CD) |
| 完全に安全 | **書き込み操作ゼロ** — すべての MongoDB コマンドは読み取り専用 |
### システム要件
| 要件 | 詳細 |
|----------|----------|
| OS | Linux (Ubuntu、Debian、RHEL、CentOS、Rocky、Alma など) |
| Bash | ≥ 4.0 (連想配列対応) |
| MongoDB Shell | `mongosh` (推奨) または `mongo` (レガシー) |
| OS 権限 | `sudo` / `root` (設定ファイル `/etc/mongod.conf` を読むため) |
| MongoDB 権限 | `system.users` の読み取りと `listDatabases` の実行権限を持つユーザー |
### コマンドラインオプション (CLI Options)
| 短いオプション | 長いオプション | 引数 | デフォルト | 説明 |
|-------------|------------|---------|----------|-------|
| `-h` | `--help` | — | — | ヘルプを表示して終了 |
| `-q` | `--quiet` | — | `false` | 主要な結果のみ出力し、終了コードで状態を判定 |
| `-j` | `--json` | — | `false` | 結果を JSON 形式で出力 (CI/CD パイプライン向け) |
| `-H` | `--host` | `HOST` | `localhost` | MongoDB サーバーのアドレス |
| `-P` | `--port` | `PORT` | `27017` | MongoDB のポート |
| `-u` | `--user` | `USER` | `super_admin` | MongoDB のログインユーザー名 |
| `-p` | `--pass` | `PASS` | *(内部デフォルト値)* | MongoDB のパスワード |
| `-r` | `--replica-set` | `NAME` | `rs_cams` | レプリカセット名 (存在する場合) |
| — | `--auth-db` | `DB` | `admin` | 認証データベース |
| — | `--no-color` | — | `false` | 出力の ANSI カラーを無効化 |
### 6 ステップのスキャン手順
スクリプトは 6 つのステップを順番に実行します。各ステップには `[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()システム上の mongod バイナリのパスを検出します。
command -v mongod で $PATH 内を検索/usr/bin、/usr/local/bin、/opt/mongodb/bin、/usr/lib/mongodb、/snap/binget_mongod_version()mongod --version の出力からバージョンを抽出します。
mongod のパスv?\K\d+\.\d+\.\d+ を使用db version v6.0.15 → 6.0.15check_version_vulnerable()MongoDB のバージョンを脆弱性データベースと比較します。
^(\d+)\.(\d+)\.(\d+)$ でバージョンを major.minor と patch に分割EOL_BRANCHES[] と照合PATCHED_VERSIONS[associative_array] を検索patch < threshold → VULNERABLE0 = SAFE、1 = VULNERABLE、2 = EOL/UNKNOWNbuild_mongo_cmd()完全な MongoDB シェル接続コマンドを構築します。
mongosh(優先) → mongo(フォールバック)MONGOD_REPLICA_SET がある場合、接続文字列 "mongodb://HOST:PORT/?replicaSet=NAME" を使用 — --host / --port パラメータは無視(URI に含まれるため)--host(localhost 以外の場合)と --port(27017 以外の場合)を追加--username、--password、--authenticationDatabase(MONGOD_USER が設定されている場合)check_timeseries_collections()クラスタ全体をスキャンしてタイムシリーズコレクションを探します。
adminDb.adminCommand({ listDatabases: 1, nameOnly: true }) — すべてのDBを一覧表示db.getCollectionInfos({ type: "timeseries" }) — タイムシリーズをフィルタリング{ database, collection, timeseries }[]check_user_privileges()書き込み権限を持つユーザーを一覧表示 — CVEエクスプロイトの潜在的な対象。
admin.system.users.find()readWrite — 特定のデータベースへの書き込みreadWriteAnyDatabase — すべてのデータベースへの書き込みdbAdmin, dbOwner — データベース管理userAdmin, userAdminAnyDatabase — ユーザー管理root — 全権限__system, backup, restore, clusterAdmin, hostManager — システム権限[{ user, database, roles }]check_security_config()mongod.conf ファイルからセキュリティ設定を評価します。
/proc/<pid>/cmdline を読み取るスクリプトは、さまざまな目的に応じて3つの出力モードをサポートしています:
sudo bash CVE-2026-8053-MongoDB-Fixed.sh
Output đầy đủ với màu sắc ANSI: banner, log từng bước, bảng tổng kết, khuyến nghị chi tiết.```
==============================================
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
`[ERROR]` / `[WARN]` / `[OK]` 行のみを表示 — クイックチェックに適しています。**exit code** のみに依存:
| Exit Code | 意味 | アクション |
|-----------|---------|-----------|
| `0` | **安全** — MongoDB はパッチ適用済み | 何もする必要はありません |
| `1` | **危険** — 脆弱性あり | 今すぐアップグレード |
| `2` | **EOL / エラー** — サポート終了または識別エラー | 緊急アップグレード |
#### 3. JSONモード (`-j`)```bash
sudo bash CVE-2026-8053-MongoDB-Fixed.sh -j -q
純粋なJSON出力 — CI/CDパイプライン、モニタリングシステムとの統合に適しています。```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" } } }
### 安全性の確保 — 読み取り専用
このスクリプトは MongoDB クラスタに対して**書き込み操作を一切実行しません**。使用されるすべての MongoDB コマンドは次のとおりです:
| コマンド | 目的 | 種類 |
|------|----------|------|
| `db.version()` | 接続確認 + ランタイムバージョン | **Read** |
| `adminCommand({ listDatabases: 1, nameOnly: true })` | データベース名の一覧表示 | **Read** (Admin Command) |
| `db.getCollectionInfos({ type: "timeseries" })` | コレクションメタデータの取得 | **Read** |
| `admin.system.users.find({})` | ユーザーとロールの一覧を読み取り | **Read** (System Collection) |
`insert`、`update`、`delete`、`createCollection`、`drop`、`grantRolesToUser`、`replSetReconfig`、その他いかなる書き込みコマンドも実行されません。**このスクリプトは本番クラスタ上で安全に実行できます。**
### 使用例```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
---
## 実際の影響
| 側面 | 評価 |
|-----------|----------|
| **Exploitの可用性** | 公開時点では公開PoCは存在しない |
| **悪用の難易度** | 中程度 — FlatBSON内部構造の深い理解が必要 |
| **影響範囲** | time-seriesコレクションを展開しているすべてのMongoDB Server |
| **高リスク対象** | 複数ユーザーに書き込み権限を許可しているシステム、インターネットに公開されたMongoDB |
---
## タイムライン
| 日付 | イベント |
|------|---------|
| 06/05/2026 | CVEが予約された |
| 12/05/2026 | MongoDBがアドバイザリを公開し、パッチをリリース |
| 12/05/2026 | GitHub Advisory(GHSA-pr63-cc36-q84h)が公開された |
| 13/05/2026 | NVD、Tenable、Snyk、Debian Security Trackerで更新 |
---
## 参考資料
- [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)
- [MongoDB Community Forum — Important patch May 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 — Critical MongoDB RCE](https://cybersecuritynews.com/mongodb-rce-vulnerability/)
| 条件 | 説明 |
|---|
| 認証 | 必須 — 攻撃者は有効な MongoDB アカウントを持っている必要があります |
| 権限 | データベースへの書き込み権限 (write privilege) が必要 |
| ユーザー操作 | 不要 |
| ネットワーク | ネットワーク経由でリモートから悪用可能 |
| 複雑さ | 低い (attack complexity: LOW) |
| MongoDB ブランチ | 影響を受けるバージョン | 修正済みバージョン |
|---|
| 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 |
| Nhánh | Lệnh nâng cấp mẫu (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 |
| 項目 | grepパターン | 欠落時のリスク |
|---|
| Authorization | authorization: enabled | 誰でも認証なしで接続できる |
| Bind IP | bindIp: 127.0.0.1 または bindIpAll: false | パブリックネットワークに公開されている |
| TLS/SSL | mode: requireTLS または ssl: requireSSL | データ転送が暗号化されない |
"OK" (完全) または問題のリスト (例: authorization_disabled\ntls_disabled)