狙われた7pay「外部ID連携」の脆弱性の全貌。急遽“遮断”した理由

7pay

7payの新規登録停止を知らせる張り紙。全国津々浦々のフランチャイズ店舗にまで掲出を行き渡らせるのは簡単なことではない。

撮影:7pay取材班

7payの不正使用をめぐって、その脆弱性が背景にあるとの見方が強まっている。窃盗容疑などで複数の中国籍の容疑者らが逮捕されているが、実態にはまだ不可解な部分が少なくない。

一連の7pay報道のなかで、徐々にハッキングの手法に関する情報が出てきたが、具体的に「7payの脆弱性とは、一体どんなものだったのか」は直接的に報じられていない。

Business Insider Japanの「7pay」取材班では、複数の協力者の通信解析を通じて、7payとその周辺に潜む脆弱性のうち、重要な事象の1つである外部ID経由のハッキング(不正侵入)のメカニズムについて確証を得た。

不正アクセス犯はどんな手口で侵入したのかを探る。

7payが急遽「外部ID」を遮断しなければならなかった理由

DSC02864

7月4日、不正アクセスが発覚した日の7payトップページ。

撮影:編集部

7月11日、7payは当初の発表から1日前倒す形で外部ID(Yahoo!、Google、Facebook、Twitter、LINE)を急遽、遮断した。

プログラマーを中心とする複数の協力者が解析したところによると、7payには外部ID連携の「設計」に、そもそも大きな問題があった。

首都圏の大手IT企業でエンジニアとして働く解析協力者の一人、タロウさん(仮名)が匿名を条件にそのメカニズムを解説する。

7pay解析の協力者

通信解析協力者の一人、タロウさん(仮名)。

タロウさんによると、7payの外部IDログインの仕様上の問題点は次のようなものだという。

  • 外部IDを使ったログインの場合、一般的なツールを使うことで容易にID書き換え(後述)によるなりすましログインができた
  • 書き換えに使うID情報は、X桁の数字を元にした整数(※)が含まれ、容易に総当たり、また一部はソーシャル上の公開情報から推測可能だった
  • オムニ7の認証用APIはセブン-イレブンアプリを介すことなく外部から容易にアクセスし、トークン(鍵情報)を入手できる状態だった

タロウさんは、iPhoneにインストールした7payアプリと、スマホのWiFi通信に割り込んで書き換えるProxyツール「Fiddler」を使い、実際に自身のダミーIDへの侵入テストを試みて成功している。また、その侵入テストの様子は信用に足る形で編集部でも確認した。

※2019年7月16日 11時50分 追記:ユーザーIDについてはFacebookとTwitterに関しては数字の文字列、そのほかの接続先に関しては英数字が含まれるケースがあります。読者からの指摘をうけ、正確性を期して、追記・一部更新いたします。

外部ID連携にずさんな実装か

次から続く3枚の画像が、7payの脆弱性につながる実証資料だ。タロウさんが公開を前提に編集部へ提供した。

この画面は、iOS上の生の送受信データの内容をチェックできる「Charles for iOS」というアプリを使い、外部ID遮断前に、セブン-イレブンアプリとオムニ7の認証API の通信(TLS)を解析したものだ。

(すでにセブン側が外部IDは遮断済みですが、念の為、一部はモザイク処理をしています)

セブン-イレブンアプリが接続する、オムニ7の認証 API のリクエスト情報が見えている (URL 、リクエストメソッド=POST など)

7pay

解析協力者提供



そのリクエストの内容である“Request body”データ。この「id」という項目に注目。モザイクを入れた部分は数字の文字列がある。この文字列には、外部ID事業者とのOAuth認証時に得られる「ユーザー毎に一意なユーザーID」を単純に利用していた。

7pay

解析協力者提供


問い合わせたユーザーIDが存在した場合に、接続先であるオムニ7から返された実際のレスポンス

omni7_7pay_03


7pay外部ID連携の「脆弱性」の構造とは何か

7pay_zu_v1

セブン-イレブンアプリが抱えていた脆弱性の解説。現在は外部ID連携が遮断されており、被害の拡大は報告されていない。

先ほどの3枚の画像で非常に重要なのは、2枚目だ。

この画像から明らかなのは、オムニ7の認証システムでは、「リクエストされたユーザーIDがオムニ7の会員登録情報と合致さえすれば、トークンと呼ばれる鍵情報を返していた」ことだ。外部IDを使うOAuth認証では、パスワードなどは必要なかった。

2枚目の画像の「id」の下の項目「extIdSiteCd」の右隣の2桁の数字は、各外部ID連携事業者(Yahoo!、Google、Facebook、Twitte、LINE)の属性を示すもの。それぞれ01、03、04、05、06が割り当てられていた

つまり、別の言い方をすると「id」の文字列と、ID連携事業者を示す2桁の数字の組み合わせを総当たりすることで、

  • 攻撃者は比較的容易にID連携で会員登録したユーザーのトークンを手に入れることができ、それを使ってアプリへのなりすましログイン、アプリ内の操作が可能だった
  • このトークン情報を使うことで「アプリを介すことなくユーザーの会員登録情報(氏名、生年月日、住所など)の取得」が可能

……という状態にあったのが実情とみられる。

7payの操作画面

撮影:編集部

決済を扱うアプリとして通常は、推測困難な2要素以上からなる(繰り返し使えないワンタイムな要素を含む)情報の交換などによって、ログインを試みたユーザーが本人であることをチェックし、トークンを返すといった強固なセキュリティーが求められる部分だったはずだ。

加えて、一部の外部連携ID事業者ではユーザーIDは誰でも調べることができる公開情報であったため、さらに推測が容易であった、とタロウさんは指摘する。

なお、編集部ではこの一連の手法について、別のセキュリティー業界に詳しい情報提供者の確証も得て、今回の公開に至った。

セブン側は8日から外部IDの脆弱性を把握していた

7payの不正アクセスの記者会見

7月4日、7payの不正アクセスについて会見する、セブン・ペイの小林強社長(中央)。左は、セブン-イレブン・ジャパンの宮地正敏執行役員デジタルサービス本部長、右はセブン&アイHDの清水健執行役員デジタル戦略部シニアオフィサー。

7pay取材班

大前提としてセブン側は不正アクセスの被害者の立場だ。

とはいえ、不正アクセス事件発覚以降、7月11日17時までの1週間あまりの間、脆弱性をもったサービスが動き続けていたことも事実だ。

セブン&アイHDに事実関係を確認したところ、脆弱性の認識をした時期については、「リスクの可能性があると把握したのは8日の月曜日」(セブン&アイHD広報)だとする。そこから、遮断まで3日間を要したことになるが、この理由については次のように話す。

「セブン-イレブンアプリをはじめ非常に多くのお客様に使っていただいている。その影響を踏まえて、混乱のないように、各店舗への情報連携や、カスタマーセンターなどの体制強化を図る必要があったため」(同)

なお、外部ID連携は既に遮断済みのため、セブン側としては、現時点で外部ID連携にからむ漏洩リスクはないという認識だ。

一方、一部報道では、脆弱性があった7月11日以前の段階では、攻撃者が個人情報にアクセスできたのではないか、との指摘もある。

これについては「リスクの可能性については把握できたので、全体で総点検を進めている」また、個人情報流出については「現時点では確認されていない」(同)とした。

総点検の結果判明した事実については、今後わかり次第、なんらかの形で状況を告知していくという。

なお、気がかりなのは、鈴木淳也氏の記事で紹介した不正利用被害者のケースだ。外部IDを使っておらず、「7iDのみで使用している16桁のパスワード」と「7payチャージ用に設定した7iDとは異なるパスワード」の組み合わせでハッキングが行われている。

少なくとも、今回の外部ID連携の脆弱性では、こちらのケースの不正被害は説明できないことになる。

タロウさんはセブン-イレブンアプリの外部ID連携実装について「率直に言って驚いた。セキュリティーを専業としていない私でも、調査をはじめてすぐに異変に気付いた。7payの問題以前に、そもそもオムニ7の認証基盤が脆弱だったのではないか」とコメントしている。

日本を代表する大手コンビニチェーンが直面した不正アクセス事件。

個人情報と決済がからむサービスの実装方法の「適正性」を、企業はどのように判断したのか。

不正アクセス犯の動機を追求する一方で、そのチェック体制のありかたは、他の企業にとっても他人事ではない。

(7pay取材班)

Popular

あわせて読みたい

BUSINESS INSIDER JAPAN PRESS RELEASE - 取材の依頼などはこちらから送付して下さい

広告のお問い合わせ・媒体資料のお申し込み