Kinsing?CPUをのっとって仮想通貨のマネタイズ?初学者にもわかるように調べてみた

3 min read読了の目安(約2900字

21年4月からサーバーサイドエンジニアとして日々奮闘中のYUZUです。
ある日、上司が発見した下記記事の詳細を調べるようにと指令を受けました。
laravelのヤバい脆弱性をついたkinsing(kdevtmpfsi)というマルウェアに感染した話 CVE-2021-3129

Kinsing?何それ?って状態から、どうにか上司へ報告できる状態まで理解を深めることができたので、今回は自分への備忘録の意味も込めて、解説していきたいと思います。

Kinsingとは何か、そして目的は?

早速ですが、Kinsingとはコンテナ環境を対象としたマルウェア(Malware)のことです。
・マルウェア→不正かつ有害な動作を行う意図で作成された悪意のあるソフトウェアや悪質なコードの総称
Kinsingは、個人情報を盗聴するだけでなく、CPUやメモリの計算リソースをのっとって仮想通貨のマイニングをすることが目的。

では、仮想通貨のマイニングとは何なのか。
以下、こちらの記事(勝手にCPUリソースが使われてしまうクリプトジャッキングとは?)から一部抜粋になります。

ビットコインの場合、取引を確認して取引記録をブロックチェーンとしてつなげるために必要な計算をおこなう必要があります。計算の結果、必要な値を発見した人は報酬としてビットコインを得ることができます。そういった行為をマイニングと言います。

上記のことを踏まえて、Kinsingの目的を整理してみると

マイニングには膨大な計算量が必要→通常では電気代等を考えるとなかなか利益を出すのは難しい→他人のCPUやメモリの計算リソースをのっとってマイニングを実施→報酬だけマルウェア作成者が受け取る

という流れになります。

Kinsingの発生経路

Kinsingは、保護されていないオープン状態のDocker APIポートを利用して、Ubuntuコンテナを起動します。このコンテナから仮想通貨のマイニングが実行され、さらに他のコンテナやホストにマルウェアが拡散されます。
つまり、オープンポートの悪用→Ubuntuコンテナへのマルウェアのインジェクション→最終目標の仮想通貨のマイニングが実行されます。

どう言った被害が発生するのか

では、Kinsingに感染すると、具体的にどういった問題が発生するのでしょうか。

KinsingはCPUやメモリの計算リソースを利用されてしまうので、CPU使用率が極端に上がることによって、端末の処理速度に影響を与える可能性があります。その結果、業務効率が落ちるだけでなく、場合によってはPCやスマートフォン等が熱暴走で故障してしまうといった被害に遭う可能性が出てきます。

一般的な対策

Kinsing対策としては、以下の3点が有効と考えられています。
1.OSやアプリケーションのセキュリティパッチを適宜適用すること
2.怪しいサイト・不必要なサイトへのアクセスをブロックすること
3.マルウェア対策製品の定義ファイルを最新にして定期的にスキャンすること

また、冒頭で挙げた記事(laravelのヤバい脆弱性をついたkinsing(kdevtmpfsi)というマルウェアに感染した話 CVE-2021-3129)では、Laravelの脆弱性をついた被害が報告されているため、ここからはLaravelに絞って見ていきたいと思います。

Laravelでの発生条件

Laravelでの発生条件としては、以下の3点が挙げられています。
・Ignition <=2.5.1
・Laravel <= 8.4.2
・DEBAG_MODE = true
(Ignitionとは、Laravel6から採用されたComposerパッケージのエラーメッセージを表示するツール)
以上の条件を満たすと、Kinsingに感染する可能性があるとのこと。

ちなみに、Ignitionのバージョンに関しては、以下のコマンドで確認できます。

composer show -i | grep ignition

現在関わっているLaravelのプロジェクトで実際に確認してみると、以下のようになっていました。

各バージョン
・Ignition 2.5.1
・Laravel 7.30.4

DEBAG_MODE
・Local、develop環境→DEBAG_MODE = true
・staging、本番環境→DEBAG_MODE = false

今回の件を踏まえての対策

develop環境はDEBAG_MODEがtrueになっていたものの、IP制限をかけていました。こちらの記事(仮想通貨のマイニングマルウェアはやばい)にも書かれているように、IP制限をかけていれば問題ないのでは?と思いますが、業務に大きな支障がないと判断され、develop環境でもDEBAG_MODEをfalseにすることで対策をすることになりました。

さいごに

今まで独学で学習をしていた頃は、正直あまりセキュリティに関して学んでいなかったので、今回の仕事を通してセキュリティに関する理解を深めることができ、いい経験になったと思います。
今後も実務や自己学習で学んだことを定期的にアウトプットしていくので、もし良かったらまた読みにきてもらえると嬉しいです。

最後まで読んでいただきありがとうございました!

参考文献

laravelのヤバい脆弱性をついたkinsing(kdevtmpfsi)というマルウェアに感染した話 CVE-2021-3129
勝手にCPUリソースが使われてしまうクリプトジャッキングとは?
仮想通貨のマイニングマルウェアはやばい
脅威:コンテナ環境を対象としたマルウェア「Kinsing」が増加中 #AquaSecurity #セキュリティ #コンテナ #マルウェア