7Payの失態で露呈した本当は怖いIDの話
セブンイレブンのQR決済「7Pay」がリリース翌日から大規模な不正アクセスの被害を受け、少なくとも約900人が、計約5500万円の被害を受けた。原因は杜撰なIDの設計にあり、被害者はいずれもIDを乗っ取られて、クレジットカードから不正にチャージされた。
自分の設定したIDとパスワードを入力して、どちらも正しい場合にログインできる仕組みは1960年代前半に発明されて以来、今もインターネット上で最も広く利用されている。GAFAはじめYahoo!や楽天といった大手企業が今も使っていることから、十分に安全と思われがちだ。
ところが実際のところ特にここ数年は非常に激しい攻撃に晒されており、血の滲むような努力と不断の改善によって維持されている。利用者は自分が入力したIDとパスワードしか意識しないけれども、その裏では端末環境の特徴やアクセス元のIPアドレスや位置情報、同時に利用している他の端末など、実に多くの情報と照合して認証しており、日々新たな手口を見つけては検出方法を改善することによって不正アクセスを遮断している。
7Payはリリース翌日から海外から頻繁に不正アクセスされた。日本国内のセブンイレブンでしか使えない7Payに対する海外からのアクセスは例外的なはずだ。ボットからの機械的なアクセスであれば、登録した利用者の端末環境と特徴を照合することでも不審なアクセスを検出できた。パスワードリセット時に他のメールアドレスを設定することは、乗っ取りに悪用されることから昔から禁じ手とされている。幾重にも杜撰な仕様が重なったことで、リリース直後から大きな被害が生じてしまった。
同社は記者会見で「あらゆるサービスについて、事前にセキュリティ審査をやっている。7payもきちんと確認したが、脆弱性はなかった」としている。いわゆるセキュリティー業者が実施する脆弱性診断は、利用しているソフトウェアやXSSやCSRFといったWebアプリケーション実装としての脆弱性を外形的に診断するものが多く、ログインやアカウントリカバリー(パスワードリセット)の仕様や業務要件の欠陥までは確認しないことも考えられる。セキュリティーベンダー任せにするのではなく要件レベルで十分なリスク分析を行い設計をレビューしなければ、今回のような業務フロー上の抜け穴はレビュー対象から漏れてしまう、或いは指摘されなくても無理からぬことだ。
他の決済アプリの実装レベルやWebアプリケーション開発者の「経験知」と照らして7Payの実装があまりに稚拙であることは確かだ。とはいえ最新の知見に基づく安全なIDの構築方法は、教科書として体系化されていない。特に不正対策の具体的な手法は対策をすり抜けることにも悪用できてしまうことから、各事業者も広くは開示できないまま現場のエンジニア同士が非公式に情報交換したり、議論を闘わせているのが実情だ。とはいえ先行する様々な決済アプリと7Payとで、何故これほど大きな差ができてしまったのか。
ひとつは先行するGAFAやFinTechベンチャーが、いずれもエンジニアを自前で雇ってシステムを内製しているのに対して、7Payはベンダー任せになっていたからではないだろうか。FinTechベンチャーにとってサービスのリリースははじまりに過ぎず、使われ方をログで追っかけて日々改善し続ける。その中で不正への対策も継続的に実装していく。例えばLINEは、LINE Payを出す前からIDの乗っ取りに苦しみ、地道に実装の改善を続けてきた。サービスに対して自分事として継続的に取り組むからこそ不正と対峙できる。
ベンダーに開発を丸投げし、予定通りの期日、予算でシステムを完成させることばかり考えていると、後からセキュリティー上の課題が見つかっても、当初の要件に含まれていないから、攻撃者とのイタチごっこでは要件を明確にできないから、期日通りに仕上げることが最優先、膨れ上がった工数分を後から請求できるとは限らないといった理由で、不正対策が後回しにされてしまった可能性はないだろうか。
内製していれば現場のエンジニアにとって、自社の損失に繋がる不正に対して最優先で取り組むインセンティブがあるが、ユーザー企業とベンダーとで財布が分かれていると、不正を放置したところでベンダーの懐は痛まず、気を利かせて対処したところで増えた工数分を請求できるとは限らない。発注者がセキュリティーの重要性を理解し、リスクに敏感であれば、課題が見つかった段階でセキュリティー対策を追加発注できるのかも知れないが、記者会見からは今回の不正に対して経営者の当事者意識さえ感じられず、事故は起こるべくして起こった印象を受けた。
今回ほど杜撰な仕様であれば、ID周りの実装やテストに携わったエンジニアの幾人かは問題に気付いていた可能性が高い。7Payの元となった7IDは昨年6月からサービスを開始し、今年5月時点で1500万人を超える会員を獲得していたことから、パスワード再発行の仕組みの問題点について、利用者から指摘されていた可能性もある。開発現場や顧客が問題に気付いて不正に悪用される可能性を指摘したところで、経営者や管理職が真摯に傾聴して、利用者保護を最優先に意志決定しないことには不正に対処できない。
7Payに限らず日本では行政機関や大企業の多くが組織内に開発要員を抱えずベンダーに依存している。IT技術やセキュリティーに疎い経営者や管理職も少なくない。限られた予算や期日の制約の中で、当初合意した仕様に縛られて情報システムを構築しているのは7Payだけではない。問題を起こした7Payを後知恵で叩くことは容易だが、似たような問題が今後も起こる可能性はないか、仮に自分が当事者だった場合は本当に不正を防ぐことができたのか、胸に手を当てて考えてみてはどうだろうか。