QRコード決済サービスは、「〇〇ペイ」といったサービス名で多くのサービスが展開されており、国内のキャッシュレス決済の拡大を後押ししています。
キャッシュレス決済は、そのサービスを中心とした経済圏を構築できること、そしてより多くのユーザー情報を獲得できるため、次々に競合となるサービスがスタートしました。一方、激化するQRコード決済サービス市場への早期参入を急いだ結果、深刻な品質問題を抱えるサービスもあり、ユーザーからはそれを不安視する声も上がっています。
そこで本記事では、QRコード決済サービスが展開される中で、実際に起こった品質問題の事例を紹介します。
QRコード決済サービスで起こった問題事例
ユーザーがQRコード決済サービスを利用するには、法定通貨のチャージやクレジットカードとの連携が必要なため、金融サービスを含む個人情報の登録が必須です。そのため提供されるシステムは、サービス運用やアカウント管理に至るまで脆弱性を残さない完成されたサービスでなければなりません。
しかし、一部のサービスではQRコード決済サービスの大きな課題となる脆弱性が見つかりました。それは、QRコード決済の不正な利用です。ネット上で複数のユーザーから不正利用の報告が上がるなど、事態の深刻さが露呈しました。
QRコード決済サービスはクレジットカードと連携していることも多く、この不正利用は個人の金融情報にまで危険が及んでいたのです。
概要と時系列
このQRコード決済サービスの不正利用は、サービスをリリースしてすぐに発覚しました。SNS上では複数のユーザーが同じ被害に遭っている投稿が、確認され始めます。
不正利用を認識したサービス提供側はまず、海外からのサービス利用を遮断しました。その後ようやくサポートセンターを設置し、IDやパスワードに関する注意喚起を行ったのです。同時にクレジットカードからのチャージ機能を停止し、被害の拡大阻止をはかります。
また、サービスへの新規登録の一時停止措置をとり、対策組織を発足しました。さらに、連携アプリからのQRコード決済サービスへのログインを停止して、ようやく被害が鎮静化したのです。そして、最終的にはサービスを終了するという結果になりました。
サービス終了時点でチャージされていた金額は、各ユーザーへ払い戻しを行い、QRコード決済サービスに関連する業務を完全終了するにいたったのです。
事例から見る問題点
この事例から、QRコード決済サービスのシステムと運用における問題点を見ていきましょう。
二要素認証(あるいは二段階認証)が施されていない
不正利用された原因はアカウントの乗っ取りです。サービスがネットワークに繋がっている以上、アカウントへのサイバー攻撃は防ぎようがありません。そのため、本来ならば二要素認証(あるいは二段階認証)などを施して、情報セキュリティの脆弱性を完全に排除しておく必要があります。
二要素認証を設置しておけば、ユーザーが最悪IDとパスワードを使い回していたとしても(本来はそれぞれに強固なパスワードを設定することが基本)、リスト型攻撃などのサイバー攻撃を受けてもアカウントへの侵入を防げるからです。
しかし今回の事例では、システムとして「二要素認証」が施されていませんでした。これは、要件定義の段階における漏れだと言えるでしょう。つまり仕様バグであり、パスワードを使い回すなどの一般的なユースケースに対する考慮が足りなかった部分なのです。
パスワードリセット画面でメールアドレス情報が変更できる仕様
パスワードリセットのシステム仕様も脆弱なものでした。なぜなら、第三者が簡単に自分のアドレスで再設定できてしまう仕様だったためです。
パスワードリセットをする画面で、リセット用のメールアドレスを設定できるということは、アカウントにログインできるだれもが自由にパスワードを変更できてしまいます。このような仕様では、パスワードの存在は無意味です。本来、パスワードリセットをする際に利用するメールアドレスは、事前に設定しておくか、別途設定画面を用意する仕様でなければなりません。
これは要件定義でわざわざ検討する内容ではなく、システム構築に携わるすべての人が、情報セキュリティの基本として当たり前に認識しておかなければならないことなのです。
CSSで隠されただけのメールアドレス設定項目
上記の問題である「メールアドレスを変更できる項目」は、パスワード再設定の画面から項目ごと機能を削除しなければ解決しません。CSSを使ってプログラム上「非表示」にしただけでは、「画面上では見えないが、その機能は残っている」という状態です。
これは、脆弱性が放置されていると解釈されても仕方がありません。なぜなら、CSSのプログラムを1行操作するだけで、パスワードを再設定するためのメールアドレスを簡単に指定できるため、何の解決にもなっていないからです。
事例においてQRコード決済サービスに足りなかった機能レベル
それでは今回の事例において、QRコード決済サービスの情報セキュリティ対策として足りなかった機能とはどのようなものなのでしょうか。
認証レベル
QRコード決済サービスは基本的に、スマートフォンを提示して利用します。そこでまず考慮すべきは、個人が所有するスマートフォンが1台とは限らないということです。ユーザーによっては複数台を使い分けるパターンもあるでしょう。
このとき、情報セキュリティとして実現すべき機能は、二要素認証以上(多要素認証)のレベルでセキュリティを施すことです。
SMSやワンタイムパスワードを発行するアプリなどを活用して、複数端末でのアカウントアクセスを安全に実行できる機能が、決済システムにおける情報セキュリティの認証レベルを高めます。
プログラム改修のレベル
事例を見ると、システムの不具合に対するプログラム改修レベルが低いと言えます。パスワード再設定画面のCSSコード事例を見ても、画面上から隠すだけという処置はあまりにもずさんな対処だと言えるでしょう。
あるいは、パスワードリセット用のメールアドレス設定機能を別途設けるだけの改修期間や人員といったコスト面の確保ができなかったのかもしれません。
いずれにせよここで足りなかったのは、決済サービスの不具合を丁寧に改修するための開発体制です。サービスの改修結果だけを見ると「開発者のレベルが低い」という印象を抱いてしまいます。
十分な検証期間の必要性
今回の品質問題は十分な検証期間を設けていれば、事前に把握できた基本的なシステム不備だったはずです。
しかし、過熱したサービス競合の台頭によりリリースを急がせたこと、また、早急にリリースしたいという運営の焦りから、システム開発においても十分な開発期間を確保することが難しかったのではないでしょうか。
情報セキュリティ上に問題があることを、開発段階で気づいている技術者や上層部はいたはずです。それでも早期リリースを強行した結果、想定されるリスクの中でも最大の被害を出し、さらにはサービス停止という結果を招いてしまいました。
どのようなサービスでも、一定の検証期間を確保することは重要です。まして、決済を提供するサービスならば、ユーザーを守るためにも最低限必要なものだと言えます。
要件定義などの上流工程で抑えるべき部分を、さらに念入りに検証し、品質を高める必要があるのです。
おわりに
QRコード決済などの決済サービス導入は、一切の脆弱性を排除したシステムとして提供されなければなりません。キャッシュレス決済は今後の社会でも定着していくでしょう。その一つの手段としてQRコード決済サービスもまた、利用され続けることが予想されます。
だからこそ、実際の利用シーンにおける必要な機能の洗い出しはもちろん、想定される脆弱性への対策や検証期間の万全な備えが必要なのです。