初めに
まだ社会人2年目くらいの時に、自分が開発に携わった製品の導入作業に参加することになった。
自社製品はtoB向けのWindows Serverに導入することができる製品で、当時はまだ導入手順が、それほど自動化されていなかった。
そのため、オンプレのWindows Serverをお客さんに用意してもらったら、その後こちらが現地に赴き2時間ほどかけて導入作業をするというのが流れになっていた。
初めての形式のお客さん
ただ、その時のお客さんはいつもと要件が異なり、AWSのクラウドに上げてあるWindows VMに製品を導入してほしいとのことだった。
オンプレでの導入実績はあったが、クラウドにあるVMに導入することは初めての試みであったため、いつもの手順ではなく、以下のような手順をとり、導入することになった。
- まずはこちら側で同じVMを用意し、導入のリハを実施
- うまくいくことを確認したら客先のVMへ導入
- 最後、客先のネットワークからちゃんと動くことを確認するため現地に赴き検証(一部客先社内ネットワークから実施しないといけない作業もあるため、残念ながらこの部分は外せない。)
と、大体こういう手順を踏むことになった。
んで、いろいろオンプレのWindows ServerとVMの間では勝手の違いがあり、リハでミスもいろいろあったがそれらを全て解決しいざ客先のVMに導入。これもうまくいき、「後日そちらに行きますんで、よろしくお願いします」というところまできた。
正直リハの時点でVMとオンプレのサーバーの仕様の違いに痛い目を見せつけられて、導入手順書が2倍以上近く膨れ上がったところがこの仕事のピークだと思っていたが、実際はそんなんじゃなかった。
乗っ取り
実際に客先に赴くとうちの製品が動いていないのだ。VM自体は動いているが、VMに置いたうちの製品が機能していない。もちろん導入後にうちの製品が動いていることは確認したので、導入から、お客さん先に赴くまでのタイムラグの数日の間にうちの製品が落ちてしまったのだろう。しかし、VMは立っているが製品は機能していないというのはおかしい状態なので、VMへアクセスし製品が吐き出しているであろう、最後のエラーログを確認しようとする。
で、VMの中身を見るとさらに様子がおかしい。あらゆるディレクトリに「〇〇_README.txt」といった身に覚えのないファイルが転がっている。恐る恐るメモ帳で開くと中には
おたくのファイルはすべて凍結した、解除してほしくば〇〇にBitCoinでいくら払え(意訳)
といった内容の英語のメモが出てきた。
ランサムウェアにやられVM全体のディレクトリにメモが残されたらしい。ただ、ファイル自体は別になんもロックなどはされておらず、VM自体を再起動するだけでうちの製品は改めてちゃんと動き出した。
ファイルロック自体は未遂に終わったらしい。
しかし、明らかにランサムが動いた痕跡が残っているためお客さんに報告。幸い、他に用途がないVMだったため潰して立て直すことになった。うちの製品の再導入は必要になるが、その程度のコストで済んでよかった。
原因
ランサムウェアは何故入り込んだのか?うちのリハ環境も改めて確認したが、当然ランサムが動いた形跡はない。導入に関わるファイルに原因があるわけではない。というかそこに問題があったらオンプレであろうとやられていたはずだ。どうやらお客さんはVMをうちの社内ネットワークからもアクセスできるようにする際、IP制限を丸々取り払ってしまったらしい。本来、お客さん先のネットワークからアクセスできないように制限をかけ、導入作業中はうちの社内ネットワークからもアクセスできるようにする、というのがIP制限の理想の状態なのだが、世界中どこからでもアクセスできるようにしてしまったらしい。加えてVMのID/PASSはIDのほうがデフォルトのままになっていた。
我々もVMへアクセスさせてもらうタイミングでアクセス制限は全開放ではなく、「うちの社内ネットのIPが〇〇なんで、ここだけアクセスできるようにしておいてください」と先んじてお願いしておく必要があったと反省している。
今回は未遂に終わったし、運用前にこういった事態になったおかげでVMを簡単につぶせたが、運用中にこういうことが起きてしまったらマジで大問題になるので、冷や汗が出たのを今でも覚えている。
VMのアクセス制限は厳しく!