紧急排查!cPGuard 5.88.12-19版本爆发后门投毒事件,你的/etc/shadow可能已经被打包带走了
原创
Kit Chung
Kit Chung
安全圈动向
2026年11月5日 08:00
广东
去阅读
大家好,11月2日,知名Linux服务器安全防护工具 cPGuard(开发商为 OPSSHIELD)爆发了一起极其隐蔽的供应链投毒事件。攻击者直接拿下了 cPGuard 的官方更新通道,向全球客户的 Linux 服务器静默推送了带有后门的恶意脚本。
今天我就结合官方披露的细节,跟大家扒一扒这次攻击的完整技术路径、核心实现手法,以及如果你手里有服务器中招了,该怎么用最硬核的姿势擦干净屁股。
一、 攻击链路复盘:神不知鬼不觉的“完美闭环”
以前我们见过的供应链攻击,大多是黑掉源码仓库或者劫持下载源,然后把收集到的数据回传到黑客自己的 C2 服务器上。但这次的攻击者非常老道,玩了一出“借鸡生蛋”。
整个攻击的技术重现过程可以分为四个阶段:
1. 突破边界与通道投毒
在 UTC 时间 11月2日 02:06,攻击者利用窃取到的高权限凭据,直接攻破了 cPGuard 的更新分发系统。随后,攻击者将恶意脚本名称伪装成正常升级包(cpguard-v58812-i91511.sh),塞进了 cPGuard 5.88.12 至 5.88.19 的版本序列中。
由于 cPGuard 客户端默认会以 root 权限在后台定期轮询并自动拉取更新,这意味着:只要你的服务器在这12个小时的窗口期内触发了心跳更新,恶意脚本就会直接以最高权限静默执行。
2. 驻留后门与本地搜刮(Loot)
脚本上机跑起来之后,干了两件事:
- 留后门
在 /var/tmp/.cpg91511_sh 落盘了一个隐藏的后门 Shell,方便后续维持权限。
* 建暂存区
创建隐藏目录 /var/tmp/.cpg91511,把服务器上的核心机密全部扫了一遍,最终打包压缩成 /var/tmp/.cpg91511/loot.tgz。
3. 堪称狡猾的数据回传机制(实现难点与绕过)
这是整个攻击最值得我们警惕的技术细节!
很多企业服务器其实配了严格的出站防火墙策略或者 EDR 监控,如果服务器突然向一个陌生的海外 IP 发送压缩包,马上就会触发告警。
那攻击者是怎么解决这个难点的?他直接拿下了 OPSSHIELD 官方的一台授权服务器账号,把收集到的 loot.tgz 全部上传到了官方自己的服务器上! 对于受害服务器上的防火墙和监控系统来说,cPGuard 进程向 cPGuard 官方授权服务器发送数据,这是再正常不过的合法业务流量,白名单直接放行。攻击者随后再慢悠悠地从官方授权服务器上把“战利品”提走。截至11月2日晚,已经有 32 台客户服务器的数据包被确认提走。
二、 深度剖析:为什么被偷走的这几个文件是“王炸”?
很多刚入行的兄弟可能会问:“不就是被考走了几个配置文件吗?我把 cPGuard 升级到最新版把后门删了不就完事了?”
大错特错! 我们来看看恶意脚本重点搜刮的这5类文件,每一个都足以让你的内网彻底失守:
1.
/etc/shadow和/etc/passwd
2.root目录下的 MariaDB / MySQL 配置文件(my.cnf)
3.root用户的命令历史记录(.bash_history等)
4.root用户的 SSH 授权密钥(authorized_keys)
5.root用户的 SSH 已知主机记录(known_hosts)
我给大家翻译一下这组合拳:
- 离线暴力破解密码
/etc/shadow 里存的是单向加密的密码哈希。虽然不可逆,但攻击者拿回去用 Hashcat 挂上字典跑离线碰撞,没有任何登录失败次数限制。只要你的密码不够复杂,或者曾经在社工库里出现过,分分钟被跑出明文。
* 数据库与云端密钥直接裸奔
为了省事,很多运维喜欢在 /root/.my.cnf 里写死数据库的 root 免密登录明文密码;更要命的是 root 的 Shell 历史记录——大家摸着良心问问自己,平时在命令行里有没有直接敲过带明文密码的 mysql -u root -pXXXX?有没有配置过 AWS S3 的 AccessKey、DigitalOcean 的 Token?这些在 History 文件里全是没有经过任何哈希处理的纯明文!
* 横向移动地图
拿到 .ssh/authorized_keys 和 known_hosts(甚至目录下的私钥),攻击者不仅知道谁能免密连你,还能顺着 known_hosts 摸清你这台服务器平时都连过哪些内网机器,直接化身内网漫游指南。
三、 实操排查与应急响应:现在立刻上机做这几步!
官方在发现异常后的 12 小时内紧急切断了通道,并发布了 5.88.25 及更高版本。新版本会自动清除后门文件和临时目录。
但请注意:清除后门 ≠ 消除隐患。而且正因为新版升级脚本会自动删掉 /var/tmp/.cpg91511 现场,你升级之后反而无法通过查看残留文件来判断自己到底有没有中招!
请严格按照以下流程进行自查与止损:
第一步:排查更新日志,确认是否踩雷
登录服务器,直接用 grep 检索 cPGuard 的安装日志:
grep 'Successfully updated' /opt/cpguard/logs/install_log
- 判定标准
如果输出结果中包含 5.88.12 到 5.88.19 之间的任何一个版本号,不用怀疑,你的服务器直接拉取过毒包,必须立刻按“已沦陷”标准处理。
* 防坑提醒
如果日志被轮转清空了、不完整,或者你还没升级,可以先去 /var/tmp/ 下看看有没有 .cpg91511_sh 或 .cpg91511/loot.tgz 存在。
第二步:强制升级 cPGuard 清除驻留后门
在每台服务器上执行以下命令,强制拉取最新干净版本并核验:
# 强制启动更新
cpgcli update --start
# 检查当前版本,确保输出 >= 5.88.25
cpgcli --version
第三步:全量凭证轮换(最关键的体力活)
只要你的服务器跑过上述受影响版本(哪怕数据还没来得及被黑客从授权服务器提走),都必须执行以下换血操作:
- 重置系统密码
在可信的恢复环境下,重置 root 以及所有本地 Linux 账户的密码。如果这些密码在其他系统上有复用(撞库风险),全部改掉。
2. 轮换业务与云端凭证
立刻修改数据库密码,吊销并重新生成曾经在服务器上配置过的 S3 密钥、云厂商 API Token,以及 history 里出现过的一切敏感凭据。
3. 彻底更换 SSH 密钥对
重新生成 /root/.ssh 下的 SSH 私钥,并把你这台服务器曾经分发到其他关联服务器上的旧公钥,从对方的 authorized_keys 中彻底剔除。
第四步:警惕官方“远程支持密钥”的潜在风险
这里还有一个小插曲:cPGuard 有个叫 Support Access(远程技术支持) 的功能,开启后会在你服务器的 /root/.ssh/authorized_keys 里塞入一把 OPSSHIELD 官方客服的公钥。
目前官方正在推送另一个补丁来自动清理这把公钥,但对于“这把公钥对应的官方私钥到底有没有在这次攻击中泄露”,官方至今支支吾吾没有给出明确答复。我的建议是:别等补丁了,现在就手动打开 /root/.ssh/authorized_keys,把不认识的、或者带有 cPGuard/OPSSHIELD 标识的公钥全部手动删掉!
四、 写在最后:给运维兄弟们的两点忠告
这次事件再次给我们敲响了警钟:任何拥有 root 权限且具备自动更新能力的第三方 Agent(安全软件、监控探针、面板工具),本质上都是我们亲手装在服务器上的“合法后门”。
为了避免下次再被供应链投毒背刺,建议大家在日常运维中养成两个习惯:
- 永远不要在命令行参数里直接敲明文密码或 Token
,善用环境变量文件(配合 chmod 600)或交互式输入,定期清理 .bash_history。
* 生产环境慎开全自动静默更新
(尤其是跨小版本的程序本体更新,特征库更新除外),哪怕延迟 24 小时手动或批量灰度推送,也能帮你躲过绝大部分短命的供应链投毒窗口期。
快去查查手头的机器吧!如果这篇复盘对你有帮助,欢迎点赞、收藏、转发给身边的运维和安全兄弟!
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论