阿里云告警发现 /tmp 出现可疑 node 子进程,经排查确认为 YApi Mock 沙盒绕过导致 RCE,MongoDB 仅被当作恶意脚本仓库。
!!!仅供参考,我是先升级了yapiPRO,后面发现备份的mongodb文件被阿里云报错了,后面清洗了下
4.3 升级 YApi → YApiPro(解决 RCE)
| 镜像 |
说明 |
yapipro/yapi:latest |
官方修复版,Mock 沙盒改用 VM2 |
# 1. 停旧服务
docker stop yapi && docker rm yapi
# 2. 保留配置文件
cp "$CONFIG_DIR/config.json" "$CONFIG_DIR/config.json.bak.$NOW"
# 3. 启动新版本(host 网络,复用 3000 端口)
docker run -d \
--name yapi \
--restart always \
--net host \
-v "$CONFIG_DIR/config.json:/yapi/config.json" \
yapipro/yapi \
server/app.js
# 4. 验证
curl -s http://127.0.0.1:3000/api/user/status | jq -r '.message'
# 预期输出:success
| 源版本 |
目标版本 |
原因 |
| 4.4.27 |
4.4.30 |
修复 Zlib 堆内存泄漏 |
# 1. 配置 4.4 仓库
sudo tee /etc/yum.repos.d/mongodb-org-4.4.repo <<'EOF'
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc
EOF
# 2. 原地升级(二进制替换,数据文件兼容)
sudo yum install -y mongodb-org-4.4.30 mongodb-org-server-4.4.30 \
mongodb-org-shell-4.4.30 mongodb-org-tools-4.4.30
# 3. 确认版本
mongod --version | head -n1
# db version v4.4.30
# 4. 滚动重启
sudo systemctl restart mongod
sudo systemctl is-active mongod
4.5 清洗污染数据
思路:新建临时实例 → 清洗 → 导出 → 覆盖生产库,避免直接在生产库执行 updateMany 造成锁表。
4.5.1 搭建临时 MongoDB(Docker 单节点)
docker run -d --name mongo-clean -p 37017:27017 mongo:4.4.30
# 导入备份数据
mongorestore -h 127.0.0.1:37017 -d yapi "$BACKUP_DIR/yapi"
4.5.2 执行清洗脚本
cat > /tmp/clean.js <<'EOF'
use yapi;
// 1. 干跑确认
var dirty = db.adv_mock.find({
mock_script: {$regex: /(curl|wget).*http/i}
}, {interface_id: 1, mock_script: 1});
print("Dirty count:", dirty.count());
// 2. 清洗
db.adv_mock.updateMany(
{mock_script: {$regex: /(curl|wget).*http/i}},
{$set: {mock_script: "/* Security: malicious script removed */"}}
);
// 3. 验证
print("After clean:", db.adv_mock.find({
mock_script: {$regex: /(curl|wget).*http/i}
}).count());
EOF
mongo 127.0.0.1:37017 /tmp/clean.js
4.5.3 覆盖生产库
# 1. 再次全量导出(已清洗)
mongodump -h 127.0.0.1:37017 -d yapi -o "$BACKUP_DIR/clean"
# 2. 停业务(30s 内完成)
docker stop yapi
# 3. 删库 & 导入
mongo --eval 'db.getSiblingDB("yapi").dropDatabase()'
mongorestore -h 127.0.0.1:27017 -d yapi "$BACKUP_DIR/clean/yapi"
# 4. 启业务
docker start yapi
阿里云告警发现
/tmp出现可疑node子进程,经排查确认为 YApi Mock 沙盒绕过导致 RCE,MongoDB 仅被当作恶意脚本仓库。!!!仅供参考,我是先升级了yapiPRO,后面发现备份的mongodb文件被阿里云报错了,后面清洗了下
4.3 升级 YApi → YApiPro(解决 RCE)
yapipro/yapi:latest4.4 升级 MongoDB(解决 CVE-2025-14847)
4.5 清洗污染数据
4.5.1 搭建临时 MongoDB(Docker 单节点)
4.5.2 执行清洗脚本
4.5.3 覆盖生产库