
설명 "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 percentile — 낮은 악용 확률) |
| KEV (Known Exploited) | 기록되지 않음 |
| 발견 날짜 | MongoDB 내부 |
| 공개 날짜 | 12/05/2026 |
| 예약 날짜 | 06/05/2026 |
| NVD 상태 | PUBLISHED / Awaiting Analysis |
취약점은 MongoDB Server의 time-series collection 시스템에 존재합니다. 구체적으로, 오류는 다음과 같은 이유로 발생합니다:
time-series bucket catalog 내부의 필드 이름 (field name) 과 인덱스 (index) 간의 매핑 메커니즘에 불일치 (inconsistency) 가 있습니다.
이 매핑 메커니즘이 잘못되면(drift), 쓰기 작업으로 인해 mongod 프로세스에서 메모리 범위를 벗어난 쓰기(out-of-bounds write) 가 발생할 수 있습니다. 특정 조건에서는 이것이 임의 코드 실행(Remote Code Execution) 으로 확대될 수 있습니다.
| 조건 | 설명 |
|---|---|
| 인증 | 필요 — 공격자는 유효한 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 |
참고: 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:
| 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 |
mongod.conf에서 authorization: enabled로 MongoDB가 구성되었는지 확인하십시오: ```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 컬렉션 나열 |
| 권한 확인 | 쓰기 권한이 있는 사용자 나열 — 취약점을 악용할 수 있는 대상 |
| 보안 점검 | `authorization`, `bindIp`, `TLS/SSL` 구성 평가 |
| 레플리카 셋 지원 | connection string `mongodb://host:port/?replicaSet=name`을 통한 연결 |
| 다양한 출력 | 일반 모드(색상), quiet(exit code), JSON(CI/CD) |
| 절대적 안전 | **쓰기 작업 0회** — 모든 MongoDB 명령은 읽기 전용 |
### 시스템 요구 사항
| 요구 사항 | 세부 사항 |
|----------|----------|
| 운영체제 | Linux (Ubuntu, Debian, RHEL, CentOS, Rocky, Alma 등) |
| Bash | ≥ 4.0 (associative array 지원) |
| MongoDB 셸 | `mongosh`(권장) 또는 `mongo`(레거시) |
| OS 권한 | `sudo` / `root` (`/etc/mongod.conf` 구성 파일 읽기용) |
| MongoDB 권한 | `system.users` 읽기 및 `listDatabases` 실행 권한이 있는 사용자 |
### 명령줄 매개변수 (CLI 옵션)
| 짧은 옵션 | 긴 옵션 | 매개변수 | 기본값 | 설명 |
|-------------|------------|---------|----------|-------|
| `-h` | `--help` | — | — | 도움말 표시 후 종료 |
| `-q` | `--quiet` | — | `false` | 주요 결과만 출력하고 exit code로 상태 확인 |
| `-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