文章目录
问题产生原因

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会报错
- 查看服务器系统是什么操作系统:
第一轮升级
powershell
uname -a
- 上传mongodb 压缩包,一共3个
- 4.0
- 4.2
- 4.4.30
- 解压压缩包并移动到指定位置
powershell
tar -xvf mongodb-linux-x86_64-4.0.28.tgz
sudo mv mongodb-linux-x86_64-4.0.28 /usr/local/mongodb
- 停库做冷备,如果不知道在哪个文件可以通过 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
- 设置启动不需要认证
powershell
./bin/mongod -f /mongodb/single/mongod.conf --noauth
- 进入数据库
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版本
-- 先将上一步解压压缩包
- 然后启动4.2的版本
powershell
./bin/mongo -f /mongodb/single/mongod.conf
- 设置版本号为4.2 通过管理员账户登陆
powershell
./bin/mongo -u <管理员用户名> -p --authenticationDatabase admin
- 设置版本号
powershell
db.adminCommand({setFeatureCompatibilityVersion:"4.2"})
返回 { "ok" : 1 } 即成功。
4.退出并关机
powershell
quit()
./bin/mongod --shutdown -f /mongodb/single/mongod.conf
第三轮升级,重复上个步骤,只是安装包是4.4.30
-- 先将上一步解压压缩包
- 然后启动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})"
结尾
好的,这样我们就成功升级到最新版本啦!
