Cloudflareのアカウントを勝手に開設され、Webサイトやドメインが乗っ取られうる状態になった話

タイトルのとおり、自分のメールアドレスを使ってCloudflareのアカウントを第三者に勝手に開設されました。何が起きたのかとその後の対応についてまとめてみます。

※ Cloudflareのアカウントを第三者に勝手に開設されるだけでは即座に何かしらのサイトやドメインが乗っ取られるわけではありません。

目次

時系列

何が起きて、何をしたのか、簡単に時系列でまとめました。

時刻(JST) 事象
9/26 22:54 何者かにCloudflareのアカウントを勝手に作成される
9/26 22:54 Cloudflareから"Please verify your email address"というメールが届く
9/26 22:57 何者かにCloudflareのGlobal API Keyを勝手に生成される
9/26 22:57 何者かにCloudflareのGlobal API Keyを勝手に閲覧される
9/26 22:57 何者かにCloudflareのGlobal API Keyを勝手に閲覧される
9/26 22:57 何者かにCloudflareのGlobal API Keyを勝手にローテートされる
9/26 23:?? Cloudflareからの身に覚えのないメールに気づき、フィッシングを疑う
9/26 23:?? Cloudflareのアカウントの存在を確かめる
9/27 00:03 自分でCloudflareのパスワードをリセット(全ログインセッションが無効化される)
9/27 00:04 自分でCloudflareにログインしなおす
9/27 00:?? 自分でCloudflareのAudit Logを閲覧し事態を把握する
9/27 00:34 自分でCloudflareのGlobal API KeyとOrigin CA Keyをローテートする

何者かにCloudflareのアカウントを勝手に作成された

f:id:kuro_m88:20210927004738p:plain
突然の身に覚えがないemail verification通知

こんなメールが突然届きました。CloudFlareの操作はおろかブラウジングもしていなかった時間帯だったので、明らかに怪しいメールです。 このリンクをクリックすると何が起きるのかもよくわからなかったので、警戒しつつ次になにをしようか考えます。( 身に覚えがないメールのリンクは絶対にクリックするのはやめましょう )

このメールを受け取ったメールアドレスは(当たり前ですが)自分のメールアドレスで、この記事では仮に admin@example.com とします。

Cloudflareのアカウントが実在するのか確認する

admin@example.com でCloudflareのアカウントを開設した記憶はなかったため、実在するのか確認しました。 アカウントの存在確認は簡単で、 admin@example.com のメールアドレスでアカウントを新規作成しようとすればよいわけです。

f:id:kuro_m88:20210927010135p:plain
アカウントがすでに存在するらしい

開設した覚えのないアカウントがすでに存在しているので、本当に何者かにアカウントを勝手に作成された可能性が高いことがわかりました。

パスワードリセット

すでにアカウントは存在していますが、メールアドレスは自分のものなので、パスワードリセットは可能です。

パスワードを忘れた時の手順でリセットをかけ、アカウントをひとまず自分の管理下に置くことにします。

Audit Logを見る

f:id:kuro_m88:20210927010652p:plain
CloudflareのAudit Log

CloudflareにはAudit Log(監査ログ)機能があり、Cloudflare上で行われた操作のログがのこっています。やはり身に覚えがない時間帯にアカウントが作成されたようです。

アカウントの作成だけでなく、 APIキーの作成と閲覧 もしているようですね。

f:id:kuro_m88:20210927010908p:plain
犯人のIPアドレス

犯人のIPアドレスもわかりました。実際にはただのproxyかもしれませんが。

whois情報の照会ができるwebサイトで見てみると、アルゼンチンのISPに割り当てられているIPアドレスのようです。明らかにおかしい。

f:id:kuro_m88:20210927011307p:plain
アルゼンチンのIPアドレス

APIキーをローテートする

Audit Logより、APIキーが作成され、閲覧された形跡があることがわかりました。 そのあと再度ローテートされているのは何がしたかったのかはよくわかりませんね…。

ローテート後、新しいAPIキーを閲覧した形跡はないためたぶん犯人は最新のAPIキーを知らないのでは?という気はするものの、ローテートすると同時に新しいAPIキーが閲覧できる仕組みだったら怖いので、再度自分でAPIキーをローテートしました。

Audit LogがないサービスだったらAPIキーを作成し閲覧されたことに気づくのは難しいので、 何をされたのかわからない場合はアカウントを削除する のがこれ以上の被害を防ぐ上で一番いいと思います。

今回は興味本位で調査に使いましたが、使わないアカウントを保持し続けても仕方がないのでどのみち削除するのがよさそうです。

攻撃者は何がしたかったのか(推測)

ここからは自分の推測でしかないですが、犯人は何がしたかったのか考えてみました。

どこからメールアドレスを収集してきたのか

まずどこからこの実在するメールアドレスを収集してきたのかですが、たぶんGithubのコミットログなどから拾ってきたのかなぁと思います。

Cloudflareのアカウントを乗っ取ってなにがしたかったのか

メールアドレスの情報源がGithubだったと仮定すると、そのメールアドレスの持ち主はソフトウェアエンジニアである確率が高そうです。 となるとCloudflareを知っている確率は高いので、Cloudflareからemail verificationのリンクが来ても不審に思わなかったり、ついうっかりクリックしてしまう可能性はあります。

忘れるくらい時間が経った頃に自分がCloudflareを使おうとしたとします。正規のユーザ(自分のこと)はログインできないことに気づき、パスワードリセットをかけてCloudflareを利用しますが、APIキーを悪意のある第三者に盗まれていたことに気づくことは難しいでしょう。

そのCloudflareのアカウントを使ってCDNの設定やDNSの管理をしはじめると、 悪意のある第三者はそのCDNDNSを操作し放題 になるでしょう。 これが犯人の目的かな?と想像しています。

教訓

  • 身に覚えのないemail verificationが届いても、絶対にクリックしない
  • email verificationが行われていないアカウントであっても、何をされるかわからないので、アカウントを勝手に作成された場合は正規の方法で取り返す
  • 乗っ取られたアカウントは取り返した上で削除するか、audit logを見て何をされたのか把握する

たまたま不審に思ったので対処することができましたが、怖いですね。