7月1日から始まったセブン&アイ・ホールディングスの独自コード決済である7payは、7月2日に不正アクセスが発覚し、900人が総額5500万円の被害にあったと同社は公表した。

同社は、リーダー機器の初期導入コスト、手数料／ライセンス料などのランニングコストがコード決済に比べて高価なNFC-F（FeliCa）を利用した電子マネーである、nanacoからの移行を目論んでいたと思われるが、今回の失態で戦略の練り直しを迫られるだろう。おそらくセブン-イレブンへの7pay導入のあとは、イトーヨーカドーやデニーズなどもロードマップに入っていたはずだ。

7payは、独自の7iDというアカウントと、そのパスワードが盗まれると2段階認証もなくそのまま第三者がログインできてしまう脆弱なシステムだった。しかも、パスワード再設定時に別のメールアドレスが使えたので、7iDと登録した生年月日、電話番号が盗まれてしまうと、パスワードも自由に変更できた。

チャージ用には別のパスワード必要だが、そのパスワード設定のルールが、半角小文字の英字と数字を使った6〜16文字の文字列という簡単なものだった。大文字小文字の混在や英数字混在などのルールも設けなかったので、英単語や自分の名前の一部などを設定している場合はパスワードを破られやすい状態だった。7iDと同じパスワードにしている場合はなおさらだったのだ。

同社では現在、7payの新規登録やチャージは停止しているが、クレジットカードを登録済みの利用者は、念のため情報を削除しておいたほうがいい。

セブン&アイ・ホールディングスは今回の不正アクセスを受けて、2段階認証を導入することを発表した。セキュリティ強化のための組織も発足させるとのこと。

7payに関連するさまざまなメディアの報道を受けて、QR／バーコード決済にネガティブなイメージを持ってしまった利用者も多いことだろう。そこで気になるのが、7pay以外のコード決済が安全なのかどうか？主要なコード決済のセキュリティ仕様を以下にまとめた。

なお、ここで紹介するのはあくまでもログイン時のセキュリティだ。チャージ用のクレジットカードそのものを盗まれた場合は、各アプリでは対処できない。盗まれた場合は、できるだけ早くクレジットカード会社に連絡してカードそのものを無効にしよう。

当たり前の話だが、財布と同様でコード決済のアプリが入っている端末やSIMが盗まれてしまうと手の施しようがなくなる。端末には必ず強固なパスコードを設定したうえで、盗まれないように気をつけたい。

今回の検証は、コード決済アプリを入れていない自分のサブのスマホと、まったく他人のスマホでログインを試みてセキュリティレベルをチェックした。各コード決済アプリのセキュリティ設定は初期状態のまま変更していない。

PayPay

登録したスマホとは異なる電話番号を持つスマートフォンでログインする場合は、登録された電話番号に認証が飛ぶ。つまり、スマホ本体を盗まれない限り、IDやパスワードを盗まれてもそれほど深刻な問題にはならない。

電話番号を変更する際は、PayPayアカウントが紐付いている電話番号を割り当てられているスマートフォンから利用者が作業する必要がある。アカウントのパスワードを忘れた場合は、登録済みの電話番号もしくは電子メールに再設定用ページのURLが送られる。

PayPayはYahoo! IDのアカウントとパスワードでもログインできる。こちらもログイン後に、登録した電話番号にSMSで認証コードが送られてくる。

ちなみにPayPayは2018年12月に、登録するクレジットカードのセキュリティコードを無制限に入力できる脆弱性が露呈した。この脆弱性を突いた不正アクセスは13件確認されたが、その内の9回は本人によるものであることが判明。残りの4件についてもPayPayでの実被害はなかった。この後PayPayは、セキュリティコードの入力制限を設けたほか、クレジットカード会社が用意している3Dセキュア（本人認証サービス）と連携してセキュリティを大幅に強化している。なお、セキュリティコードの不正アクセスについては、そのあと13件とも本人によるものだとわかった。

LINE Pay

LINEアカウントに紐付いているため、セキュリティはかなり強固だ。LINEでは、2016年2月に発生したトーク履歴流出事件のあと、利用者が面倒だと感じるほど強固なセキュリティ仕様に変更している。

アカウントを引き継ぐには、まずは既存アカウントと紐付いているスマートフォンなどから「アカウント引き継ぎ」のスライドボタンをオンにする。そして36時間以内に新端末に同じアカウントとパスワードを入力しなければならない。「アカウント引き継ぎ」のボタンをオンにせずに新端末に乗り換えた場合は、友だちリストやトーク履歴、利用サービスをすべて引き継げなくなる。

そもそも、LINEアカウントからログアウトする機能は備わっていないので、盗んだアカウント情報でログインする際も前述の移行作業が必要になる。Facebookアカウントでもログイン可能だが、その場合もやはり元の端末で移行設定しておかないと作業を進められない。

元の端末でアカウントを削除すれば、盗んだアカウントとパスワードを新端末で使えるが、削除時にアカウントに紐付いているすべてのサービスが解除されるので、やはりLINE Pay残高だけを盗み取ることはできない。

d払い

MVNOではないドコモ回線を使っている場合は電話番号と紐付けられているので、異なる電話番号からアカウントを乗っ取るのは難しい。d払いはMVNOやドコモ以外の他キャリアの回線でも使えるが、ログインにはdアカウントに登録したメールアドレスとパスワードが必要だ。d払いアプリにdアカウントで初めてログインする場合は2段階認証が必要になり、登録済みのメールアドレスに認証コードが飛ぶ仕組みになっている。

しかし、別のスマートフォンやPCのウェブブラウザーを使い、盗まれたdアカウントのIDとパスワードでログインすることは可能だ。ここで登録メールアドレスなどを変更されてしまうと、アカウントを乗っ取られてしまう。これを防ぐには、2段階認証の強度を「弱」から「強」に変更しよう。これで、dアカウントサイトへのログインについても登録メールアドレスに送られた認証コードの入力が必要になる。

楽天ペイ

IDとパスワードでログインできる。初回のログイン時にSMSによる2段階認証が必要だが、SMSを送る先には任意の電話番号を選べる。つまり、IDとメールアドレスを盗まれてしまうとログイン自体はできる。

ただし、すでに登録してあるクレジットカードのセキュリティコードを入力する必要があり、間違って4回入力すると一時的にロックがかかる。一方で、新たにクレジットカードを登録する操作は可能だ。IDとパスワードを盗まれてしまうと会員情報などの閲覧や変更も可能なので、そもそものパスワードを強固にしておく必要があるだろう。

Origami Pay

メールアドレスとパスワード、もしくはFacebookアカウントとの連携で利用できる。別端末での初回ログイン時にメールアドレス、続いて電話番号を入力すると2段階認証プロセスが走り、その電話番号にSMS経由で認証コードが届く。

このコードをアプリに入力すると、さらに登録済みメールアドレスにも異なる認証コードが送られる。こちらを入力して初めてOrigami Payを利用可能になる。実質3段階認証なので、セキュリティはかなり高い。

au Pay

現状ではau回線を使っているユーザー以外では使えないので、それだけでセキュリティは高い。利用するには、auの電話番号と設定したパスワードが必要で、同じau回線でも異なる電話番号を入力してログインすることはできない。

FamiPay

登録した電話番号とパスワードでログインする仕様。電話番号が異なる別のスマホからも登録した電話番号とパスワードでログインできるが、結局は登録した電話番号に認証コードが飛ぶため、第三者がFamiPayを不正利用するのは難しい。なお、「ファミペイアプリ」から一度ログアウトした場合は、同じ端末からの再ログインであっても事前登録した電話番号に認証コードが送られる。

電話番号を変更する場合は、新旧の電話番号とFamiPayのパスワード、そして電話番号変更コードが必要だ。この電話番号変更コードはコールセンターに連絡しないと発行されない。

メルペイ

「メルカリ」アプリの一機能として利用できるメルペイは、メルカリIDとパスワードでログインする。アプリには、SMS認証などの2段階認証はないので、IDとパスワードを盗まれると危険だ。実際に他人の端末を使ってテストしたところ、登録しているチャージ用の銀行口座も登録された。

ただしチャージの場合は事前に設定したパスコードが必要なので、パスコードを破られない限り不正使用されない。QR／バーコード決済の際もオプションでパスコードの入力を有効にできる。パスコードを再設定するには、登録済みの銀行口座と電話番号が必要なので、第三者が改変するのは難しい。

【編集部注】メルカリからの指摘により、チャージにはパスコードの入力が必須であることを追記・修正しました。

一度ログインに成功すると、アプリ側でメールアドレスやパスワードの変更も2段階認証なしに作業できる。変更元のメールアドレスではなく、変更先にメールアドレスに認証が飛ぶため防ぎようがない。メールアドレス→パスワードの順に変更すると完全な乗っ取りも可能だ。もちろん、別端末からのログインがあると「お知らせ」画面で通知されるのだが、結局は事後報告なので素早く対応しないと悲惨なことになる。

対処方法としては、2段階認証を設定したGoogleアカウントを使うのがお勧めだ。ウェブブラウザーでGoogleアカウントにログインしてアカウント設定の「セキュリティ」項目を開こう。この項目にある「Googleへのログイン」にある「2段階認証プロセス」をタップする。

複数のスマートフォンを持っている場合は、同じGoogleアカウントを登録している端末からの2段階認証が可能だ。スマホを1台しか持っていない場合は「別の方法を選ぶ」から「テキストメッセージまたは音声通話」をタップして、コードの取得方法を選ぶ。通常は「テキストメッセージ」にしたほうが場所を選ばす確認できるだろう。

設定が完了すると、次回以降に2段階認証を設定したアカウントにアクセスした場合、仮に本人であってもアカウントとパスワードだけはログインできず、登録した電話番号に飛ばされる認証コードの入力が必須になる。この状態でメルカリのアカウントとして使えば、たとえGoogleアカウントとパスワードを盗まれても安心だ。

なお、メルカリではアカウント乗っ取り時の対策について「24時間／365日での取引モニタリングシステムの稼働＋目視監視を実施し、リアルタイムで不正取引の検知・利用制限を実施しています。不正取引が発生する予兆を検知した場合には、迅速に調査及び利用制限を実施し、実際の不正取引の発生を未然に防ぐように努めています」とのこと。

また、2段階認証がない現状については「ワンタイムパスワードなどによるMFA（多要素認証）についても、以前より今夏を目途に導入する予定で開発を進めておりましたが、お客さまにより安心・安全にご利用いただける環境を提供すべく、前倒しでの導入を決定、開発を進めております」という回答を得た。MFAが実装されるまでは、パスワードを類推できないものに変更するなどして自己防衛しよう。

QUOカードPay

ギフト用のPayで、専用アプリにバリューコードと呼ばれる文字列を入力すると一定金額がチャージされるコード決済。

ログインするには事前に登録したメールアドレスが必要だが、そのアドレスに認証コードが飛ぶので、不正使用される確率は低い。QUOカードPayはメールアドレス以外の個人情報の入力が不要なので、未使用のバリューコードを盗まれた場合、ほかのアカウントに紐付けられると自由に使われてしまう。

【2019.07.05 18:40追記】メルペイとQUOカードPayの情報、検証した環境を追記しました。

【2019.07.05 20:35修正】PayPayログイン時の挙動について、説明不足の記載がありました。お詫びして訂正いたします。

【2019.07.05 22:50追記】セブン&アイ・ホールディングスの発表内容を追記しました。

【2019.07.05 23:20追記】2018年12月に発生したPayPayへの不正アクセスについて、PayPayから詳しい情報を得られたので修正しました。

【2019.07.06 11:00追記】メルペイ（Googleアカウント）での2段階認証の設定方法を追記しました。

【2019.07.06 14:00修正・追加】メルペイのIDやパスワードを盗まれても、銀行口座からのチャージには元の端末で設定したパスコードが必要です。お詫びして訂正いたします。また、メルカリからの今後のセキュリティの方針について追記しました。