AWS で不正アクセスされて凄い額の請求が来ていた件

情けない話ですが、自分の大チョンボAWS の個人アカウントが第三者にアクセスされた結果 190万円相当のリソースが使われ、最終的に AWS さんに免除を頂きました。反省込みで本件のまとめを書きます。

自分が馬鹿を幾つも重ねた結果であって、AWS 自体は怖くないというのが伝われば幸いです

はじめにまとめ

  • S3 実験してた時に SECRET KEY を見える場所に貼っていた事があり、第三者がそれでアクセスし大量の高性能インスタンスを全力で回す (恐らくBitCoin採掘)
  • AWS さんから不正アクセスの連絡があり、急いで ACCESS KEY 無効&パスワード変更、インスタンス全停止、イメージ削除、ネットワーク削除
  • 免除の承認フェーズを進めて、クレジットカードの引き落とし前に完了して助かる
AWS さんのサポート
  • AWS さんは最大限サポートしてくれました
  • 承認フェーズが進まない時もあまり間をおかず状況を連絡頂いて、これで大分心理的に楽になりました
  • AWS さんが不正アクセス分を確定するのに必要ないインスタンスを僕が止める作業で止め忘れがあったりして何度か確認し直しました
  • つまり解決までに時間がかかった原因は自分。AWS さんはなるべく自分の負担が少なくなるよう尽力してくれた
反省
  • SECRET KEY を漏らすのは問題外 (S3 で使ってて秘密の画像も無い実験ストレージなのもあって油断していた。。)
  • ACCESS KEY の権限を絞らず、管理者権限を持っていた。 IAM ロールを使おう。IP制限もかけよう(実験ならなおさら)
  • Billing Alert を設定してなかった。 (管理者権限漏れたら Billing 設定変更出来るので今回のケースだと駄目そう)
対策
  • アクセスの権限はちゃんと絞ろうという当たり前の事と、AWS を使ってない時は念の為 ACCESS KEY を削除して、次使う時に作り直そう
  • 意図せず使い過ぎないよう Billing アラートは設定すべきだけど、不正アクセスされたら真っ先にアラート止めるだろうから、その意味では無駄かも
  • (SECRET KEY でなく)ACCESS KEY で検索して、それと一緒に SECRET KEY が漏れてないか確認すると良いかも
蛇足
  • リージョン毎にコンソールのページが分かれているけど、全部を一度に閲覧するページもあった方が良いと思いました

経緯

AWSさんから連絡
  • 一度目のコンタクトは米国から電話を貰っていたが気付かず
  • もう一度、米国から英語で電話を貰ったけど聞き取れなかったので、日本語話者にかけ直して貰う
  • 日本語で不正アクセスされてる旨の電話連絡を貰う
  • AWS コンソールを開いて料金を見たら180万超えで、びっくり
対処
  • AWS サポートさんに連絡。免除の手続きするので不要なインスタンスとか消してね。と指示を貰う
  • 全リージョンで作業。インスタンスを停止してイメージとネットワークを削除
  • 指摘があってスポットリクエストが無い事を確認。その後でインスタンスが上がってない事を再確認
  • 消し忘れ等があるのを AWS さんから教えて貰って、残りも削除
  • この作業が終わる頃には料金が190万になっていました
  • 金額の内訳ほぼ全てが CPU 消費なので、恐らく流行りの BitCoin採掘に使われていたと予想します。何かの暗号を解いていた可能性もありますが。
承認まで
  • 不要なものを全て止めたり削除したので、免除申請に移る
  • (サポートさんからこまめにフェーズの報告を貰う)
  • 免除申請が通って請求分を相殺したとの連絡を貰う
  • クレジットカードの口座残高を見て減っていない事を確認

最後に

  • AWS さんのリソースを無駄にした上に大変な手間をかけさせてしまい、この恩返しといいますか埋め合わせをこれからしていかなければと思っています
  • 叩かれる覚悟でツイッターで状況報告してたけど、アドバイスくれたり、お金貸すよと言ってくれた人もいて有難かった。自分も困ってる人を助けられる人間になりたいです

以上です。