【mongoDB】mongoDB 单节点版本升级,基于CVE-2025-14847漏洞进行版本升级

文章目录

问题产生原因

https://www.aliyun.com/notice/117852

调研

结合 aikido 网安数据库昨天更新,该漏洞被标记为 CVE-2025-14847(IT之家注:代号"MongoBleed"),可让未经身份验证的网络攻击者侵入服务器,提取未初始化的内存片段。如果服务器开启了网络访问并启用 zlib 压缩,那黑客就不需要任何凭据即可启用漏洞。

同时,由于该漏洞可在消息解压阶段、身份验证前触发,因此黑客可以在入侵的服务器中执行任意代码。

本次漏洞的影响范围相当广泛,涵盖 8.2.0-8.2.3 版、8.0.0-8.0.16 版、7.0.0-7.0.26 版、6.0.0-6.0.26 版、5.0.0-5.0.31 版、4.4.0-4.4.29 版 MongoDB;同时 4.2 版、4.0 版,以及 3.6 版 MongoDB Server 也受到对应影响。

MongoDB 目前已发布修复补丁,官方强烈建议用户升级至以下修复版本:

  • 8.2.3
  • 8.0.17
  • 7.0.28
  • 6.0.27
  • 5.0.32
  • 4.4.30
    如果管理员暂时无法将 MongoDB 更新到最新版本,也可以使用以下临时缓解措施来降低影响:
  • 禁用 zlib 压缩,改用 snappy、zstd 或不启用压缩
  • 通过防火墙、安全组或 Kubernetes NetworkPolicy 限制 MongoDB 访问网络
  • 移除任何不必要的公网暴露

mongoDB版本包

https://www.mongodb.com/try/download/community-kubernetes-operator

升级步骤

确认目前使用的JDK是什么版本,我们是1.8的,所以用4.4.30补丁
确认目前版本号,当前我们是3.6

升级版本 3.6 → 4.0 → 4.2 → 4.4 ,必须是一步一步升,不能跨版本,mongodb会报错

  1. 查看服务器系统是什么操作系统:

第一轮升级

powershell 复制代码
uname -a
  1. 上传mongodb 压缩包,一共3个
  2. 4.0
  3. 4.2
  4. 4.4.30
  5. 解压压缩包并移动到指定位置
powershell 复制代码
tar -xvf mongodb-linux-x86_64-4.0.28.tgz 
sudo mv mongodb-linux-x86_64-4.0.28 /usr/local/mongodb
  1. 停库做冷备,如果不知道在哪个文件可以通过 ps -ef | grep mongod 去看下
powershell 复制代码
./bin/mongod --shutdown --dbpath /mongodb/single/data/db

-- 做备份

powershell 复制代码
sudo cp -a /mongodb/single/data/db  /data/db_$(date +%F)

-- 确认当前版本已经是3.6版本

powershell 复制代码
./bin/mongo --eval "db.adminCommand({getParameter:1,featureCompatibilityVersion:1})"

若不是 3.6,先执行

powershell 复制代码
 ./bin/mongo --eval "db.adminCommand({setFeatureCompatibilityVersion:'3.6'})"

-- 进入升级版本的mongodb 4.0 版本,将数据和日志的配置文件指向现在的

powershell 复制代码
```powershell
./bin/mongod -f /mongodb/single/mongod.conf --fork

-- 设兼容性,如果当前是有用户名密码,就输入用户名密码去改,或者是暂时取消认证启动进入

powershell 复制代码
./bin/mongo --eval "db.adminCommand({setFeatureCompatibilityVersion:'4.0'})"

-- 查看现在版本

powershell 复制代码
./bin/mongo --eval "db.adminCommand({getParameter:1,featureCompatibilityVersion:1})"

-- 停掉当前版本

powershell 复制代码
./bin/mongod --shutdown -f /mongodb/single/mongod.conf

升级如果不成功,请看这里

  • 但是升级时会说版本不符合,进入4.0版本手动设置
    -- 如果不知道账号密码就建一个账号密码
    1.先杀死启动进程
powershell 复制代码
./bin/mongod --shutdown -f /mongodb/single/mongod.conf
  1. 设置启动不需要认证
powershell 复制代码
./bin/mongod -f /mongodb/single/mongod.conf --noauth
  1. 进入数据库
powershell 复制代码
./bin/mongo
powershell 复制代码
use admin

-- 设置管理员账号

powershell 复制代码
db.createUser({user:"dba",pwd:"123456",roles:[{role:"root",db:"admin"}]})

-- 设置版本号

powershell 复制代码
db.adminCommand({setFeatureCompatibilityVersion:"4.0"})

--停掉进程

powershell 复制代码
./bin/mongod --shutdown -f /mongodb/single/mongod.conf 

第二轮升级到4.2版本

-- 先将上一步解压压缩包

  1. 然后启动4.2的版本
powershell 复制代码
./bin/mongo -f /mongodb/single/mongod.conf 
  1. 设置版本号为4.2 通过管理员账户登陆
powershell 复制代码
./bin/mongo -u <管理员用户名> -p --authenticationDatabase admin
  1. 设置版本号
powershell 复制代码
db.adminCommand({setFeatureCompatibilityVersion:"4.2"})
返回 { "ok" : 1 } 即成功。

4.退出并关机

powershell 复制代码
quit()
./bin/mongod --shutdown -f /mongodb/single/mongod.conf

第三轮升级,重复上个步骤,只是安装包是4.4.30

-- 先将上一步解压压缩包

  1. 然后启动4.4.30 的版本
    2.启动4.4.30版本
powershell 复制代码
./bin/mongod -f /mongodb/single/mongod.conf

3.通过管理员账户登陆,设置版本号

powershell 复制代码
./bin/mongo -u <管理员用户名> -p --authenticationDatabase admin
  • 确认是否是4.4.30版本号
    -- 方式1
powershell 复制代码
./bin/mongod --version | head -1

-- 方式2

powershell 复制代码
./bin/mongo --quiet --eval "db.version()"

-- 方式3

powershell 复制代码
./bin/mongo -u <管理员用户名> -p --authenticationDatabase admin --quiet --eval "db.adminCommand({getParamet
er:1,featureCompatibilityVersion:1})"

结尾

好的,这样我们就成功升级到最新版本啦!

相关推荐
没钥匙的锁120 小时前
04-Java面向对象基础
java·开发语言·mongodb
喜欢的名字被抢了2 天前
MongoDB生产实践:架构设计、分片集群与运维监控
数据库·mongodb·教程
JSON_L2 天前
MongoDB文档关系详解
数据库·mongodb
葫芦和十三2 天前
图解 MongoDB 30|查询路由与广播查询:带片键定向,不带就广播
后端·mongodb·agent
葫芦和十三2 天前
图解 MongoDB 29|分片键陷阱:jumbo chunk、孤儿文档和写入热点
后端·mongodb·agent
霖霖总总3 天前
[MongoDB小技巧24]MongoDB $lookup 聚合阶段深度解析:从入门到实战
数据库·mongodb
霖霖总总3 天前
[MongoDB小技巧25]MongoDB 聚合管道内核剖析:$match 过滤与 $project 投影的终极指南
数据库·mongodb
喜欢的名字被抢了3 天前
MongoDB基础入门:从安装到CRUD与索引优化
数据库·mongodb
葫芦和十三3 天前
图解 MongoDB 27|分片策略:范围分片 vs 哈希分片
后端·mongodb·agent
全栈前端老曹3 天前
【MongoDB】安全与权限管理 —— 用户认证、角色权限、SSL 加密
前端·javascript·数据库·安全·mongodb·nosql·ssl