Search

Mongo Bleed CVE-2025-14847 취약점 분석

태그
PurpleHound
DB
Property
1.png
작성날짜
2026/01/27

1. 개요

본 보고서는 NoSQL의 일종인 MongoDB의 Zlib 압축 처리 과정에서 잘못된 길이를 처리해 발생하는 CVE-2025-14847 취약점에 대해 다룬다. 공격자는 네트워크를 통해 어떠한 인증도 없이 네트워크로 MongoDB 서버에 접속해 힙 메모리를 읽어 관리자 패스워드, 세션 등 민감한 정보를 탈취할 수 있다.
실제로 CVE-2025-14847 취약점을 통해 Ubisoft사의 Rainbow Six Siege 게임 서버가 제어권 탈취, 소스코드 유출 등 사고를 당한 사례가 발생하는 등 실제 공격에 악용되고 있어, 즉시 보안 업데이트를 적용해야 한다.
본 보고서는 CVE-2025-14847 취약점의 근본 원인을 심층 분석하고, 이에 대한 방어 및 완화 전략을 제시한다.

2. 취약점 근본 원인 분석

항목
내용
취약점 번호
CVE-2025-14847
취약점 이름
MongoDB Unauthenticated Memory Leak
CWE
Improper Handling of Length Parameter Inconsistency
취약점 영향
Sensitive Memory Leak (Accout Information, Session, Etc…)
CVSS 4.0
8.7(AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N)
@@ -74,7 +74,7 @@ StatusWith<std::size_t> ZlibMessageCompressor::decompressData(ConstDataRange input, DataRange output) { uLongf length = output.length(); int ret = ::uncompress(const_cast<Bytef*>(reinterpret_cast<const Bytef*>(output.data())), &length, reinterpret_cast<const Bytef*>(input.data()), input.length()); if (ret != Z_OK) { return Status{ErrorCodes::BadValue, "Compressed message was invalid or corrupted"}; } counterHitDecompress(input.length(), output.length()); - return {output.length()}; + return length; }
C++
복사
[코드 1] src/mongo/transport/message_compressor_zlib.cpp git 커밋 로그
[코드 1]의 CVE-2025-14847 취약점 패치 커밋을 살펴보면 취약한 함수의 반환 값이 output.length()에서 length로 변경되었다.
::uncompress() 함수는 두 번째 파라미터인 &length에 압축 해제된 실제 데이터의 크기를 반환한다. 결과적으로 위 함수가 압축 해제된 데이터의 길이를 반환함을 보장할 수 있다.
하지만, output.length()는 클라이언트가 임의로 제어할 수 있는 헤더에 포함된 압축 해제 후 데이터 크기를 나타낸다. 따라서, 실제 압축 해제된 데이터의 크기, 클라이언트가 요청한 압축 해제된 데이터의 크기가 서로 다를 수 있다. 공격자는 두 크기의 차이만큼 추가 힙 메모리를 읽을 수 있게 된다.
CVE-2025-14847 시연 영상

3. 공격 영향

본 취약점을 성공적으로 악용할 경우, 공격자는 MongoDB 서비스의 힙 메모리를 읽을 수 있으며, 이는 다음과 같은 심각한 위협으로 이어질 수 있다.
민감 정보 탈취: 공격자는 힙 메모리 상에 존재할 수 있는 DB 로그인 정보, 세션 정보 등 민감할 수 있는 정보를 탈취할 가능성이 있다. 최악의 경우 공격자는 알아낸 정보를 바탕으로 서버의 제어권을 탈취하는 등 추가 공격을 감행할 수 있다.

4. 완화 및 권고사항

Product
취약점 영향 버전
MongoDB
8.2.0 ~ 8.2.2
MongoDB
8.0.0 ~ 8.0.16
MongoDB
7.0.0 ~ 7.0.27
MongoDB
6.0.0 ~ 7.0.26
MongoDB
5.0.0 ~ 7.0.31
MongoDB
4.4.0 ~ 4.4.29
MongoDB
4.2.0 ~
MongoDB
4.0.0 ~
MongoDB
3.6.0 ~
1.
즉각적인 보안 업데이트 적용: 본 보고서에서 분석한 취약점에 해당하는 MongoDB 버전은 위의 표에 명시된 바와 같다. 해당 버전의 MongoDB를 사용 중인 시스템은 즉시 보안 업데이트를 적용해야 한다.
2.
Zlib 압축 비활성화: CVE-2025-14847 취약점은 Zlib 압축 처리 과정에서 발생하기 때문에, 임시로 Zlib 압축 기능을 비활성화 시켜 취약점을 완화할 수 있다. 하지만 근본적인 해결책이 아니기 때문에 즉시 보안 업데이트를 적용 시켜야 한다.
3.
IDS/IPS를 통한 네트워크 접근 제어 및 공격 표면 감소: 가능하다면 MongoDB 서비스 포트(TCP/27017)는 신뢰할 수 있는 네트워크 대역에서만 접근 가능하도록 방화벽 정책을 강화해 공격 표면을 감소 시켜야 한다. MongoDB 서비스를 인터넷에 직접 노출 시키는 것은 본 취약점 외에도 예측하지 못한 다른 보안 위협에 시스템을 노출 시킬 수 있다.

5. 결론

CVE-2025-14847은 Zlib 압축 과정에서 클라이언트가 제어할 수 있는 길이 필드의 값을 부적절하게 사용해 Memory Leak 취약점이 발생했다.
당사의 솔루션인 PurpleHound는 실전 기반 시나리오를 재구성하여 기업이 보유한 보안 장비와 시스템이 실제 공격에 얼마나 효과적으로 대응 가능한지 검증할 수 있도록 지원한다.
본 보고서에서 분석한 취약점 뿐만 아니라 다른 유형의 취약점, 악성코드 활동, 파일 시스템 조작 등 다양한 위협 시나리오를 직접 실행해보며 보안 인프라의 실효성을 객관적으로 확인할 수 있다

6. 참고자료