大きな話題となりました、セブンイレブンが発行しているアプリの7payに不正アクセスがあった件です。
https://www.sej.co.jp/company/important/20190703.html
この記事では情報セキュリティスペシャリスト資格を持つ私がこの一連の事件を解説しようと思います。詳細はまだ公表されていないのでどういった不備がいくつあったのかは分かりませんが、私の知り得た情報での説明をしてみます。
ちなみに情報セキュリティスペシャリストとは、情報処理推進機構(IPA)が発行する、こうしたアプリケーションやWebサイトなどの情報セキュリティの知識を有することを示す国家資格です。
https://www.jitec.ipa.go.jp/1_11seido/sc_28.html
と、偉そうに名乗りましたが、今回説明するのはかなり単純な不正アクセスで、技術的に難しいことは何もないです。特別なものは何一つ必要なく誰でも出来てしまうやらかしとなります。
何がいけなかったのか?
今回の一番の原因は、パスワードリセット機能での仕様不備です。その機能では、①本人確認が甘かったことと、②任意のメールアドレスにリセット用のメールが送れてしまうこととが良くないところでした。
これにより、攻撃者は本人確認を推察(要は当てずっぽう)して、攻撃者のメールアドレスに対して他人のアカウントのパスワードリセットメールを送らせて、パスワードを変更しアカウントを乗っ取ります。
脆弱性① 本人確認が甘かった
パスワードリセットメールを送るには、画面で本人情報を入力します。ここで入力の必要があるのは以下の項目です。
- 生年月日
- 7id(メールアドレス)
- 画像認証
- 送付先メールアドレス
ここで、画像認証とはよくあるロボットでは無いことを確認する崩した文字列の画像のことで、送付先メールアドレスは任意のアドレスを受け付けます。なのでこれらは人間であれば誰でも入力可能な値です。
従って、本人確認の情報としては生年月日とメールアドレスです。これら2つを知っているのは本当に本人だけでしょうか?
生年月日をSNSなどに公開していたり、メールアドレスもメールのやり取りをしたことがあれば知っているはずです。まず、こうしたソーシャルハッキングとして知人のこうした情報を知っているだけでアカウント乗っ取りが可能です。
また、もう一つまずいこととしては、アプリの会員登録時に生年月日を入力しなかった場合は「2019/1/1」に固定されてしまう仕様があることです。なので、誕生日が分からなくても、登録されていない可能性を考えてこの日付を入れれば一定の割合で合致してしまいます。
脆弱性② 任意のメールアドレスにリセット用のメールが送れてしまう
こうしたパスワードリセットの際に送るメールは既に登録してあるメールアドレスに送るのが定石です。
これが守られていれば、本人のメールアドレスに対してリセットメールが送られるので、攻撃者はメールのアカウントも乗っ取れていなければなりません。なので攻撃成功のハードルがグッと下がってしまっている仕様でした。
攻撃方法
これらの脆弱性を用いて、攻撃者はどのように不正アクセスをしたのかを推測すると、
有効であるメールアドレスを集めて、セブンイレブンアプリのパスワードリセット画面にそのメールアドレスと生年月日「2019/1/1」を入力するのをひたすらに試していったというところでしょうか。
結構成功確率が低そうに思えますが、手動でも10秒くらいで試行できますし、画像認証だけうまくすればスクリプトを組んで半自動でも出来そうです。
ユーザ側に防御策はあったか?
多くの場合、厳格なパスワード管理をすることが基本です。しかし、今回の場合はパスワードリセットを使って攻撃されたので意味はありませんでした。ただ、それでも自衛のために出来ることはあります。
メールアドレスの工夫
公開、使用しているメールアドレスとは別に、こうしたアカウント登録用のメールアドレスを用意すると良いです。GmailやYahoo!メールなど、フリーのメールは今や簡単に作れます。
また、それだとメールアドレスを複数管理しなくてはならなくて面倒だという場合、エイリアスという機能が使えます。これは、仮にsample@gmail.comというGmailアドレスがあったときに、@の前に+○○と付与することで、別のメールアドレスでありながら同一アカウントで受け取れます。Yahoo!メールにもセーフティアドレスという同様の機能があります。
今回の事件について思うこと
正直、今回の件はセブンイレブン側のセキュリティの意識が甘すぎたと思います。決済のサービスは、何か不備があればすぐに顧客の不利益となるので、特に細心の注意を払うべきでした。
肩を持つようですが、セキュリティに対する対策は「出来ていて当たり前」で、誉められることはなく出来てなければ大問題となり、モチベーションが上がることはない所です。ただそれでも怠ってはいけない所でした。
しかし、今回のことで、○○ペイは危ないなどの、無駄に主語を広げた捉え方は避けてほしいです。セブンイレブンの対応が不味かっただけで、こうした決済手段が増えること自体は良いことです。
また、パスワードリセットはパスワードが分からなくても認証できてしまうという、そもそもセキュリティハードルを下げる操作であるので、セキュリティを一定程度保ちつつ、ユーザの利便性を損なわないようにするには、絶妙のラインとなるようにしなければなりません。セキュリティ的にとても難しいのです。ですので、皆様におかれましては、仮にパスワードリセット手順が面倒でも、セキュリティ担保のために致し方ないことをご理解ください。また、一番は忘れないようにしっかりとした管理をしましょう。