問題概要
詳しい状況はだいたいこちらの記事の方と同じです。個人で契約していたAWSのアカウントがこの度不正利用の被害にあいました。被害額は合計60万円。。。 Qiitaなどの記事で同様の事例は過去に見たことがありましたが、不本意ながら今回私も仲間入りしました。
AWSが不正利用されて合計60万円の請求が免除されるまでの一連の流れ | てくめも
簡単に言うとなんらかの理由であるIAMユーザーのAWSコンソールへのログインパスワードが漏れ、しかもそのユーザーが管理者権限を持つユーザであったために様々なことをやられてしまったという感じです。データを暗号化されて脅迫されたりだとか、データベースからデータが流出したりだとかいったことは起きていませんが(特定のIPアドレス以外からのアクセスを禁止しており、アクセス権がない)、一連の不正アクセスを便宜上「攻撃」と呼称します。
攻撃は大きく分けて2回に分けて行われました。セキュリティ的に見てザルだったのを突かれたのが1回目、緊急対策を行っている途中で出来る限りのこと試みられたのが2回目になります。被害としては1回目の方が圧倒的に大きく、2回目の影響は限定的でした。書ける範囲で流れをざっくり書きます。
攻撃の流れ
攻撃1回目
- 管理者権限を持つ(使われていない)IAMユーザーのログインパスワードが漏れ、アクセスされる
- 管理者権限を持つ複数のIAMユーザーが作成される
- 全リージョンにECSクラスターとタスクが作成され、目一杯稼働
- SESの苦情率が跳ね上がってAWSによって停止される
- IAMユーザーのアクセスキーがローテーションされて一部プログラムが停止する
攻撃2回目
- SESを使ったメール送信権限を持つIAMユーザーのアクセスキーが漏れる
- SESを使って大量のSPAMメールが送られ、送信数が上限に達してメール送信が一時停止
問題点は何だったか
どこ基準で語るかによって問題と見る部分は変わってくると思うのですけど、もちろんまず不正にログインされてしまったことが一番の問題です。つまり、- ログインパスワードが漏れたこと
しかし、現代のインターネットにおいてパスワードが漏れることはしばしばあります。つーか、使っていなくてパスワードを知る人が社内に誰もいないアカウントの情報がなんで漏れたのかよくわかりませんけど(過去現在含めたインサイダーも頭をよぎりましたが証拠は何もないので)、ともかく例えパスワードが漏れても大丈夫にしておくのが現代のセキュリティ。じゃあなぜログインされたかと言えば、
- MFAが設定されていなかった
ですよね。コンソールにログインするユーザーにはMFAデバイスを設定しておけ。AWSさんも言ってます。
万が一、不正にログインされてもユーザーごとに適切な権限が設定されていれば被害は限定的です。しかし攻撃1回目でログインされてしまったユーザーは違いました。権限が大きかった。というか、
- 管理者権限(AdministratorAccess)を持つユーザーが存在していた
ということです。多分これを設計した人はいろいろと設定するのが面倒くさかったんでしょうね。このユーザーに全部の処理を代替させればいいやと思ったんでしょう。コンソールにログイン可能でMFAも設定していないユーザーに管理者権限を持たせるとか頭がおかしいとしか思えませんし、これ、損害賠償もんじゃねと思いますけど、まあいいや。
さらにセキュリティ的に重要なこととして、
- ほとんどのサービスがアクセスキーで動いていた
ということも挙げられます。AWSのベストプラクティスとしては、AWSサービスを内部から使うときはロールを使う、外部から使うときのみアクセスキーを使う(ただし権限設定は最低限に絞る)となっているはずなんですが、これも多分面倒くさかったんでしょう、ほぼすべてのサービスをアクセスキーで動かしていました。アクセスキーは便利ですけど漏れたら1発で終わりです。そしてやられました。
次回、AWS対応編
これらを読んでいろいろ言いたいことは皆さんおありかとは思いますが、絶対的な良し悪しは一旦横に置いておくとして、せめてMFAが設定されていたら他の全てがダメでも被害は防げたんじゃないのかなと思いました。二段階認証大事ですよね。
他のサービスだと面倒に感じることもあるし、そもそもスマホ壊したらいろいろ終わるとか緊張感ありすぎだろと思わなくもありませんが、今のAWSではMFAデバイスを複数登録することが出来るので、作業者のスマホに加えて社内で管理する端末を登録しておくなんてことも出来ます。まあ今回初めて知ったんですけど。
といわけで、次回AWS対応編に続きます。