ことの起こり
昨日うっかりとしたミスからGitHubの公開リポジトリへAWSのアクセスキーIDとシークレットキーをpushしてしまいました。理由は、.zashrc
に環境変数としてAWSのアクセスキーIDとシークレットキーを設定している状態で.zahrc
をgit管理するためにpushしました。
pushしたとたんにメールが送信されてきた
GitHubへpushしたとほぼ同時にメールが送信されてきました。たまたま、一段落したのでPokemon GOをはじめようとしていたため、手元にiPhoneがありメールにすぐ気づきました。私信ではないので全文を載せておきます。
件名
I think I found your aws credentials
本文
Hi, It looks like you put your aws credentials on github here: https://github.com/yoichiro-manabe/dotfiles/commit/.....
If these are actually aws credentials, you shouldn't post 'em on github. I found it, so someone else probably did too. If these are real, you should do the following:
- You should first change your aws credentials. As soon as you push code to Github, you should treat any exposed credentials as compromised. This page describes how to delete and reset aws credentials: http://docs.aws.amazon.com/general/latest/gr/managing-aws-access-keys.html
- Look at your account to see if anyone has already started to use it. Go through all the AWS services to make sure no one messed with anything else. (in particular look for ec2 instances in all the regions). An easy way to know where to look is to go to your billing page and view all the areas that accumulated charges for the month.
- If you see any suspicious activity, contact aws support, and shut down the servers that the hacker has set up.
- Then you should use a safe method to manage your credentials in your code (i.e. by using env variables or a config file that is ignored through .gitignore)
I'd be happy to hear any feedback or questions you have about this email. And, if you want to never get an email like this again, let me know, and I'll make sure that you are never emailed again.
Best, Michael
P.S. If you are wondering how I found your credentials, I made a program that scans through github looking for aws credentials. When it finds one, the program sends an email (this one) to the person that made the commit.
このメールはmKurrels/testHelpfulOwlにあったtestHelpfulOwl
リポジトリにあるとおり、GitHubにAWSに関する情報を公開すると数秒でメールが送信されてくるサービス?から送信されていたメールでした。
どのようなアルゴリズムで検出しているのかなどはわからないですが、このメールのおかげで私は助かりました。とても感謝しています。
対応
とりあえず、次のことを行いました。
- IAMアカウントに関連するアクセスキーIDとシークレットキーを無効化のあと思い立って削除
- IAMアカウントのアクセスアドバイザーを確認してサービスへのアクセス状況の確認
- 請求情報の確認
- すべてのリージョンのEC2インスタンスで知らないインスタンスがないかの確認
- GitHubのリポジトリの削除
今考えると、1についてはIAMアカウントに関連するアクセスキーIDは無効化にする方が良かったのかもしれません。やはりそのときになると「とりあえずこうしよう」と思いついたことを行ってしまうので良くないです。
ここまでで、とりあえず特におかしなことはなかったのでいったん様子を見ることにしました。
今後の対応
今回のことは正直なところ自分がやらかすとは思っていませんでした。ただ、冷静に考えるとまず間違いなくやらかしそうなことでした。GitHubにpushすることはごくごく普通にあることです。
何が書いているかすべて把握していないけど、個人の物だからと軽い気持ちでpushしたのが今回の事象で、個人の環境だけであったことは不幸中の幸いでした。
とりあえず、うっかりGitHubに公開したを防ぐ方法はprivateリポジトリを利用することくらいしか思いつかないので、いったんそれを実践します。公開するときはセルフレビューしてからにしようと思います。
あとは、公開してしまったときに影響範囲を小さくするためのアカウント情報の管理を考える必要があります。
さいごに
うっかりミスを通知してくれた Michael さんに感謝します。彼が言うようにこのようなメールを受信することがないようにしたいです。
また、QiitaやTwitterで何度か話題になっているインシデントですが、対岸の火事と思わず自分のこととしてとらえるようにしたいと思います。