【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})"

结尾

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

相关推荐
吴声子夜歌30 分钟前
MongoDB 8.0——聚合
数据库·mongodb
吴声子夜歌1 天前
MongoDB 8.0——可视化管理工具
数据库·mongodb
吴声子夜歌1 天前
MongoDB 4.2——安装 MongoDB
数据库·mongodb
吴声子夜歌1 天前
MongoDB 8.0——MongoDB的安装
数据库·mongodb
吴声子夜歌2 天前
MongoDB 4.2——了解应用程序的动态
数据库·mongodb
czhaii3 天前
STC ai助手单片机工程项目创建实例
数据库·mongodb
吴声子夜歌3 天前
MongoDB 4.2——配置分片
数据库·mongodb
吴声子夜歌3 天前
MongoDB 4.2——分片简介
数据库·mongodb
吴声子夜歌4 天前
MongoDB 4.2——备份
数据库·mongodb
吴声子夜歌4 天前
MongoDB 4.2——选择片键
数据库·mongodb