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のバージョニング機能も利用していなかったので削除された画像の復旧はできない。

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

追記

このブログを読んだらしい攻撃者から2020/09/29にTwitterのDMで謝罪が来た(翻訳は筆者によるもの)。

I wanted to apologize for your files in your s3 bucket getting deleted, I created the meow attack, and I recently started targeting aws because of the bad security settings some buckets have set up, but I have since stopped attacking s3 buckets

S3バケットのファイルが削除されてしまったことについて謝罪したいです。ニャー攻撃を作ったのは私で、一部のバケットのセッティングに不備があるため、最近AWSを標的にし始めましたのですが、今はS3バケットへの攻撃をやめています。

I’ve stopped doing aws buckets because I feel that deleting files can be more damaging to people, and it can happen to more common people, unlike elasticsearch and mongodb which would take someone decently skilled enough to setup, but too lazy to add security,

AWSバケットを対象にするのをやめたのは、ファイルを削除することは人々にとって手痛い被害になり得るし、セットアップするには十分なスキルを持っているが、セキュリティを追加するには怠惰過ぎる人が関わりがちなElasticsearchやMongoDBと違って、より一般の人々にその被害が起こり得ると思ったからです。

I created the meow attack to stop data leaks by deleting everything, but I feel that deleting files in s3 buckets is too harsh. I apologize again that your files were lost in the attack, I sincerely apologize

すべてのデータを削除することでデータ流出を止める目的でニャ―攻撃を作ったのですが、S3バケットのファイルを削除するのはあまりにも酷だと思うようになりました。この攻撃であなたのファイルが失われてしまったことを改めて謝罪します。心よりお詫びします。

メッセージから察するに、攻撃者はハッカー的な信念を持ってニャ―攻撃を行っていたが、パンピーが大事にS3に保存しているファイルを削除してしまうのは流石にやり過ぎだったかも、正直すまんかったという感じだろうか。誠実に謝っていると感じたので、「まあ勉強になったし、ええよ。ブログにこの謝罪文紹介して良い?」的なメッセージを英語で投げて一件落着にいたった。アイコンが消えてしまったのは残念だけれど、今後の勉強になった部分はあるし、稀有な体験ができた事件だったと思う。