这两天登入服务器面板,发现有时候CPU占用率有时候会异常维持在100%。我原先以为是部署了大模型的缘故,但这种现象出现得越来越频繁,直到一直维持着满占用。这明显很不对劲,于是打开使用htop 进行查看,果然发现了几个个异常进程:

查了一下,根据参数--randomx-1gb-pages这是门罗币(Monero/XMR)的挖矿算法,bad news,服务器确实被入侵了。
当机立断,立马kill这几个进程,但很明显,这种入侵脚本肯定自带复活机制,我还需要找到它们的本体。
首先查找定时任务:
ls -la /var/spool/cron/crontabs/

一切正常。
再查找系统任务目录:
ls -la /etc/cron.d/

还是没有发现。
再检查Systemd:
ls -lt /etc/systemd/system/ | head -n 20

依旧没有发现。
最后确认了下ssh密钥,也没有问题。
说实话这时候已经有点冒汗了,已经在考虑是不是要直接从服务商那边直接重置整个系统了,但还是有点不甘心,决定再排查看看。
于是我又打开了进程管理的界面:

欸,发现了一点端倪,貌似这些挖矿进程都是3269这个父进程生出来的,那看看这个进程是什么玩意。
ls -l /proc/3269/exe

看来是个node脚本。
定位一下。
ls -l /proc/3269/cwd

这玩意看来是在/app 目录下,但是我的服务器没有这个目录,那么大概率是在容器里。
检查一下docker。
docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Id}}, {{.Name}}' | grep 3269

找到了,病毒藏在一个 Docker 容器里,容器的名字叫 1Panel-umami-1NNn,很明显,这是我自建的umami被植入了恶意代码,上网查了一下,应该和React的这个漏洞有关。
接下来要做的事情就很简单了,删掉这个容器,修改ssh密码,顺便把矿池的ip加入黑名单,观察了一天,CPU的使用率没有再出现异常。
后续又检查了下其他部署的项目,基本没有使用React的,应该不会受影响,总的来说算是虚惊一场。
ps:听说cloudflare因为这个漏洞间接也瘫痪了几个小时,这世界真是一如既往地草台班子。
评论区