Meow Attack(ニャー攻撃)で稼働中WebアプリのAWS S3保存画像を全削除されてしまった…

突然S3の画像がすべて削除された

自作のRailsアプリの短歌投稿サイトUtakataをいつものように眺めていたら、一部のユーザーのアイコンが表示されていないことに気づいた。もしやと思ってブラウザのキャッシュをクリアしてみたら、すべてのユーザーのアイコン画像がリンク切れになっていた。

当初はライブラリの問題かと思ったけれど、念の為AWSにログインしてS3のバケットを見てみたら、なんと最近アップロードされた不審なindex.htmlを残してすべての画像ファイルが削除されていた。

明らかに第三者から悪意のある攻撃を受けている事態に頭が真っ白になりそうだったけれど、取り敢えずAWSアカウントのパスワードを変えてからindex.htmlのソースをチェックし、危険性がないことを確認してから開いてみた。

f:id:fuyu77:20200921204323p:plain

猫のキャラクター画像に謎の文字列が羅列され、meow(ニャー、猫の鳴き声)。

HTMLファイルのソースコードは上のようになっていた。Base64エンコードされた猫画像にランダム文字列を生成するJavaScriptのシンプルな構成。コメントで被攻撃者へのメッセージが書いてある(翻訳は筆者によるもの)。

You don't deserve to have files if you don't know how to secure them properly
https://aws.amazon.com/premiumsupport/knowledge-center/secure-s3-resources/

meow

ファイルを適切に保護する方法を知らないならファイルを持つ資格はない

ニャー

煽り文句にご丁寧にS3のドキュメントへのリンクが付けてある。

書き込み アクセスを Everyone グループに許可しないでください。この設定により、誰でもバケットにオブジェクトを追加できるようになります。この設定により、誰でもバケット内のオブジェクトを削除できるようになります。

S3の設定を確認してみたら該当ドキュメントにやるなと書いてあるこの設定をやってしまっている初歩的なミスだった。

Everyoneに書き込みを許可しているとシンプルなHTTPリクエストで画像のアップロード、削除ができるようだ。初心者の頃に良く分からずに全許可設定にしてその後S3の設定はまったく見ていなかったのが仇になった。

Photo credit: https://twitter.com/rsec17, https://note.com/rsec/n/n53882573675d. No Affiliation with them, I just thought it was cute.

私とこれらは無関係で、ただ可愛いと思っただけ。

これまたご丁寧に画像のソースの記載もある。コメントにも書いてあるように、イラスト作者と攻撃者は別人なのだろう。

Meow Attack

インターネット上の保護されていないデータベースのほぼすべてが削除され、「Meow(ニャー)」というネコの鳴き声だけが書き残される「Meow Attack(ニャー攻撃)」が報告されています。

私が受けたのはこのMeow Attackの一種だろう。どうやらいたずら以上の悪意はないようだ。

Utakataユーザーへのお知らせと反応

取り敢えずアイコン画像をリンク切れからデフォルトアイコンを表示するところまでは復旧して、Utaktaユーザーにお知らせした。S3のバージョニング機能も利用していなかったので削除された画像の復旧はできない。

攻撃を受けたとは言え私のかなりマヌケなミスなので本当に申し訳ないという感じだけれど、今回の画像削除事件を題材にしたようにも見える短歌がいくつかアップされていてユーザーの温かさを感じた。