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

结尾

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

相关推荐
爬山算法8 小时前
MongoDB(38)如何使用聚合进行投影?
数据库·mongodb
数据知道13 小时前
MongoDB容量规划与资源预测:如何预估未来增长需求?
数据库·mongodb
数据知道16 小时前
详解MongoDB监控体系:Zabbix/Prometheus集成实战指南
mongodb·zabbix·prometheus
数据知道17 小时前
MongoDB认证机制实战:详细讲述SCRAM-SHA与X.509证书认证配置
数据库·mongodb
数据知道17 小时前
MongoDB审计日志配置:详细讲述满足合规性要求的安全记录
数据库·安全·mongodb
Full Stack Developme17 小时前
MongoDB 应用场景
数据库·mongodb
数据知道19 小时前
MongoDB安全加固最佳实践:CIS基准符合性检查与实施步骤
数据库·安全·mongodb
数据知道21 小时前
MongoDB网络安全配置:详细讲述IP白名单与防火墙规则
tcp/ip·mongodb·web安全
数据知道21 小时前
MongoDB灾难恢复计划:RTO/RPO目标下的应急响应完整方案
数据库·mongodb·wpf
数据知道21 小时前
MongoDB的Kerberos认证:详细讲述大型企业环境安全集成的实用技术
数据库·安全·mongodb