情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

トークライブアプリ「755」のアカウントに他人がログインできる問題について(電話番号認証のセキュリティ)

755 (32) Android (716) iPhone (1653) セキュリティ (78)

サイバーエージェントの公開トークライブアプリ「755」のヘルプがLINEのヘルプにとても似ていることを記事にしました。そのとき、「あれ?これは以前LINEが問題を起こして、仕様変更した、マズい仕様なんじゃなかったっけ?」という、セキュリティに関連する問題になりそうな項目がありました。それについて検証したので、紹介します。

「乗っ取り可能」に分類される問題ですが、条件からして、「乗っ取るつもりはなかったのに、なんかログインできるっぽいからログインしちゃおうかな、どうしようかな」のようなパターンがメインになるかと思います。

LINEに似ているアプリ

スマートフォン向けアプリ「755」は、有名人のトーク(特に現在はAKBグループのメンバーの公開トーク)にコメントを付けられて、それに答えてくれもする、ということで知名度上昇中のアプリです。サイバーエージェントの連結子会社である株式会社7gogoが作成しているアプリです。

最近では、「秋元康が○○って言ってる!」というニュースのソースになることが多く、先月末40万ダウンロードを突破したようです。

以前の記事で、初期設定の設定項目やその説明の文章、それに加えて、ヘルプに記載されている文章が、LINEと非常によく似ている、ということを紹介しました。

どれくらい似ているかというと、次のような、用語を入れ替えただけのヘルプ文章があるほどです。

  • 755:「755を利用している相手が、お客さまを[友だち]に追加した場合、[友だちかも]に表示されます。」
  • LINE:「LINEを利用している相手が、お客さまを[友だち]に追加した場合に、その相手が[知り合いかも?]に表示されます。」

用語を入れ替えるだけで、同じ文章になります。

ここから、LINEのことを参考にして作ったことが伺えます。

このことが、後の話に関係します

ヘルプを読んで「あれ?」と思った

され、その「ヘルプが似てる」という記事を書くにあたって、ひと通りヘルプの文章に目を通したのですが、「あれ?」と思う仕様を目にしました。そのヘルプの文章がこちら。

7gogo-login-existing-account-help

端末を新しくした場合、アカウントを引き継げますか

端末を変更しましても、『電話番号に変更がない』場合は再インストール時に[引き継ぎ]を選択していただければ、現在のアカウントをそのままご利用いただくことが可能です。

この文章を読んで、何も気にならない人も多いと思います。

しかし、自分にはちょっと引っかかる文章だったので、後で紹介するように、このヘルプが本当なのか、実験をしました。

ここからは、この「電話番号に変更がなければ引き継ぐことができる」ということの持つ問題について、詳しく説明していきます。

問題点:他人がログインできてしまう

今回紹介したいのは、自分の755アカウントに、他人がログインできてしまうという問題です。

意図的に"特定の"アカウントを乗っ取ることができませんが、"いずれかの"アカウントを乗っ取ることができる場合があります。

LINEが通ってきた道

実は、この仕様は、当時引き継ぎ機能が存在しなかったLINEが、iPhone 4s発売に合わせるために、2011年10月に実装したものの、他人のアカウントにログインしてしまう問題を起こし、翌月すぐさま取り消された仕様です。

755には、LINEに似ている点が多く存在しますが、この機種変更の仕様については現在のLINEではなく、以前のLINEに似ているようです。

問題の原因となる仕様

この問題は、755アカウントの本人確認(アカウントの持ち主確認)が、電話番号の所有者確認*のみで実施されてしまう仕様に起因します。

*いわゆる「SMS認証」のこと

問題が発生するパターン例

どういうときに問題になるかを説明します。

まず、Aさんが、電話番号080-AAAA-AAAAで認証して、755アカウントを作ります

そして、Aさんがその電話番号を解約します

さて、それから数ヶ月経過したとき、Bさんが携帯電話を新規契約したとします。

このとき、電話番号は再利用される場合があり、以前Aさんに割り当てていた090-AAAA-AAAAが、Bさんの電話番号として割り当てられる場合があります

ここで、Bさんが755アプリをインストールして、その電話番号で認証*を行います。

*この認証とは、SMSを受け取ることができるかどうかの確認のみであり、電話番号の利用権のみを検証しており、SIMがどうこう、とは無関係です。なので、電話番号の契約者が変更になった場合を考慮して実装する必要があります。

すると、次のAさんのアカウントを引き継ぎますか?という表示が出ます(「この電話番号は登録済みです。ユーザー情報を引き継ぎますか?」)。

7gogo-login-existing-account

※この引き継ぐかどうかの確認画面の存在は、混乱を抑える効果がある

ここで、Bさんに悪意がある場合、Aさんになりすまして、Aさんのアカウントを操作閲覧利用する権利を獲得、つまり、乗っ取ることができてしまいます(「引き継ぐ」をタップするだけ)。

LINEの場合の対策と機種変更対応の歴史

当時、機種変更時のアカウント引き継ぎ機能が無かったLINEは、2011年10月13日に、翌日に迫ったiPhone 4Sの発売に合わせ、急遽同じ電話番号で認証した場合にアカウントを引き継げる、という機能追加を行いました(参考:@naver_jpのTweet

これにより、LINEが初めて機種変更時の引き継ぎに対応しました。

しかし、先ほど説明したように、電話番号が再割当てされたユーザーが、突然他人のアカウントにログインしてしまう問題が発生したため、翌月、電話番号単独での確認を取りやめ、電話番号認証に加え、以前と同じ端末であるかどうかまでチェックするようになりました(参考:LINE公式ブログ:同じ電話番号で他の端末を使用する場合について (2011年12月09日)

こうして、電話番号が再利用された場合のケースを塞ぎ、同じ端末に再インストールしたユーザーのみ、再ログインできる仕様にしました(今まではそれもできなかった)。

その後、2012年3月に、LINEはメールアドレス・パスワード登録機能および、それらを用いた本人確認を導入します(参考:LINE公式ブログ:メアドとパスワードでログイン可能(2012年03月07日)

このようにして、再び機種変更に対応する、という歴史をたどっています。

この流れを知っていれば、755も、同一端末の確認や、メールアドレス・パスワード認証などを導入していたのではないかと思います。

この流れを直接知らなくても、このあたりの電話番号認証と電話番号再利用の仕組みに詳しい人がいれば気が付きますし、そうでなくても、よーーく考えれば気がつくことですが、LINEの場合は4s発売にあわせて時間が十分取れなかったのか気が付かずにリリースしてしまっているので、かなり気が付きにくいことなのかもしれません。

検証実験

以前作成した755アカウントに対して、別の端末からログインを試みます(2014年10月08日実施、Android版最新2.0.1、iPhone版最新1.11.0を使用)

別の端末に755をインストールし、その端末の所有者に、電話番号の契約が移ったつもりで、初期設定作業を行います

初期設定の序盤で、電話番号入力画面が表示されるので、ここに、前の端末でアカウントを作成した時に認証した電話番号を入力します。

7gogo-login-existing-account-input-phone-number

すると、認証番号がSMSで届きます

この実験では、あくまで「契約が移ったつもり」なので、前の端末にSMSが届きますが、それを見て、4ケタの認証番号を入力します。

7gogo-login-existing-account-input-code

すると、先ほど一度紹介した、登録済みのアカウントにログインするかどうかを尋ねる画面が表示され、ここから、ログインすることができました

7gogo-login-existing-account

したがって、ヘルプに書いてあったとおり、端末が同一であるかの確認なしに、電話番号のみでログインできることが確認できました

電話番号の再利用には時間がかかる

携帯電話の電話番号は、解約後、後の新規契約者に割り当てられるのは確かですが、解約後すぐ再割当てされるわけではありません。なので、公開されてそれほど経過していない「755」は、、、、、、、、ここまで書いて気がついたのですが、755の提供開始は2014年2月だそうです。8ヶ月前なので、再割当て開始されてるかも。。。

実は問題ない可能性もある

実験で、電話番号が再割当てされた人がログインできてしまうことを確認しました。しかし、この実験では検証できない部分で、この問題を回避している場合が残ります

それは、電話番号再割当てまでに最低限かかる期間を調査し、その期間以下の事前に定めた間隔で、電話番号の所有者確認(電話番号認証の再確認)を行い、その確認ができなかったアカウントを、すでに電話番号を解約したアカウントと認定し、電話番号による再ログイン禁止アカウントとする、というものです。

もし、再割当てにかかる期間をはっきりと特定でき、なおかつ実際に755が、こういうトリッキーな対策をしていたとすれば、他人からもログインされないはずです。

ただ、ヘルプを見る限り、このような不思議な仕様は見当たりません。

755運営ができる対策

そんなトリッキーな対策はおすすめできないので、LINEと同じようにメールアドレス・パスワードを用いた認証を導入するか、もしくは、755にはTwitter連携機能があるので、Twitterアカウントを用いた認証を導入するのがよいかと思います。

とにかく、他人に権利が移動するかもしれないもの"だけ"を利用した認証を避ければ、今回の問題自体は回避できるわけです。たとえば、「メールアドレス」のみ、だと、メールアドレスは、メールアドレス削除・変更後に、誰かが再利用するかもしれないのでダメで、あわせてパスワードが必要になるわけです。

ユーザーができる対策

じゃぁ、その対応がされない、こういう仕様が続くとしたら、ユーザーはどうすればいいのか。

これは、一般的な乗っ取り対策に比べれば簡単で、電話番号を解約する際に、755のアカウントを削除するだけです。

これで、今回紹介した、電話番号再利用による乗っ取りは防止できます。

しかし、実はSMS認証には今回紹介したものとは別に、もう一つ問題があって、認証番号盗み見攻撃に弱い、というものもあります。

もう一つの問題:SMS認証番号盗み見攻撃

それはどういう問題かというと、こちらは特定の相手のアカウントを乗っ取ることのできる方法で、メールアドレス・パスワード認証であればなかなか成立しない攻撃です。

iPhoneにしろAndroidにしろ設定次第ですが、たとえ端末がロックされていたとしても、SMS受信時に、その本文が通知として表示されてしまいます

また、ロックされていない利用中でも、SMSが届くと本文が通知領域に「突然」表示されます

これらを盗み見ることで乗っ取ることができてしまう、という問題です。

これは、SMSに送信されるのがたった4ケタである、というところが効いてきます。

勝手に攻撃対象の電話番号で755アカウントの初期設定でSMS送信まで進み、攻撃対象の端末に届いた4ケタの番号ををちらっと盗み見ることができてしまえば、乗っ取ることができます

そのため、ユーザーとしては、ちょっと席を離れるときに携帯を置いておくことがリスクになります。ロックしてるからと安心せずに必ず持ち歩く、突然現れるかもしれないSMS通知に備えて背後に気を配るなどの対策か、そもそも通知に本文を表示しない設定にすることが求められます。

というわけで、運営側が、盗み見られることによるリスクを低減する、もしくは防止する対策があるといいなぁ、と思います

もちろん、SMSで送信するものを、単純な4ケタの番号ではなく、複雑なURLにする、というのも直接的で良い手ですが、そもそも電話番号の持ち主確認=アカウントの持ち主確認になっている現状が大きなリスクの原因になっています。

なので、この記事のメインテーマである電話番号の再利用対策として「メールアドレス・パスワード認証」を導入すれば、それ自体が大きな対策になります。

「電話番号認証」は難しい

以前から、特にLINEでは、電話番号認証に関する誤解で、いろいろなトラブルがありました。

この記事で紹介した、「電話番号の再利用が想定外」という、運営側の誤解もそうですし、「どうして電話番号じゃ引き継げないの?」「電話番号認証したからそれで引き継げるはずでしょ?」という、ユーザー側の誤解もあります。

このあたりについては、下の2記事で以前説明したので、そちらを参考にしてみてください。

☆☆☆ 755非公式ヘルプTwitterをフォロー ☆☆☆

コメント(0)

新しいコメントを投稿




  • カテゴリ ナビ
  • 著者紹介

    ブログが趣味で、スマホアプリの利用中に発生するトラブルや不具合の対策手順や障害情報、 設定の変更方法などについて、解説記事をよく書いています。

    自分が困ったことをブログに書けば、次に困る人の参考になって、みんながみんな同じ苦労をせずに済む、というのが原点です。

    最近の関心は、スマホやパソコンが苦手な人の行動や思考、そしてそんな人を手助けする方法です。

    Amazonのアソシエイトとして、did2は適格販売により収入を得ています。

    RSS | Facebook | Twitter | About