10億超のアプリが単一のハッキング手法に脆弱な理由――OAuth 2.0中間者攻撃の仕組みと対策
世界的なセキュリティカンファレンス「Black Hat Europe」で、香港中文大学の研究者2名が、Androidアプリに影響を与えるエクスプロイトに関する研究を発表しました。この脆弱性が悪用されると、インストール済みの10億を超えるアプリケーションが攻撃にさらされるおそれがあります。
このエクスプロイトは、OAuth 2.0認証標準のモバイル実装を狙った中間者(Man-in-the-Middle)攻撃によるものです。難しそうに聞こえますが、実際には何を意味するのでしょうか?そして、あなたのデータは安全なのでしょうか?
OAuthとは?
OAuthは、Google、Facebook、Twitterなど多くのプロバイダーが採用するオープン標準で、これらのアカウントを使ってサードパーティのアプリやウェブサイトにログインできるようにする仕組みです。
シングルサインオン(SSO)ボタンをタップすると、アカウント情報へのアクセスを許可することになります。たとえば「Facebookでログイン」ボタンを押すと、サードパーティのアプリやサイトはアクセストークンを探します。トークンが見つからない場合は、サードパーティにFacebookアカウントへのアクセスを許可するかどうかを尋ねられます。許可すると、Facebookはサードパーティからのアクセストークン要求を受け取り、応答としてトークンを返します。
このトークンにより、サードパーティはあなたが指定した範囲の情報へアクセスできるようになります。たとえば、基本プロフィール情報や友達リストへのアクセスは許可する一方、写真は許可しない、といった細かい指定が可能です。サードパーティはトークンを受け取ると、Facebookの認証情報でログインできるようになります。そしてトークンが期限切れにならない限り、許可された情報へのアクセスが続きます。
これは一見とても便利な仕組みです。覚えるべきパスワードが減り、既存のアカウントで手軽にログインできます。特にモバイルでは、新しいパスワードの作成や新規アカウントの認証に時間がかかるため、SSOボタンはさらに重宝します。
問題点はどこにあるのか?
現行のOAuthフレームワーク「OAuth 2.0」は2012年10月にリリースされましたが、モバイルアプリ向けには設計されていませんでした。その結果、多くのアプリ開発者は、安全な実装方法に関するガイドラインがないまま、独自にOAuthを実装せざるを得なくなりました。
ウェブ上のOAuthでは、サードパーティとSSOプロバイダーのサーバーが直接通信します。一方、モバイルアプリではこの直接通信が使われず、アプリ同士がユーザーのデバイスを介してやり取りします。
ウェブでOAuthを利用する場合、Facebookはアクセストークンと認証情報をサードパーティのサーバーに直接送信し、ユーザーのログインや個人データへのアクセス前に、その情報を検証できます。
ところが研究者らが発見したのは、Androidアプリの相当な割合がこの検証プロセスを欠いていたという事実でした。FacebookのサーバーはアクセストークンをFacebookアプリへ送信し、そのトークンがサードパーティアプリへ渡されます。そしてサードパーティアプリは、Facebookのサーバーでユーザー情報の正当性を確認しないままログインを許してしまうのです。
攻撃者はまず自分自身のアカウントでログインし、OAuthトークンの要求を発生させます。Facebookがトークンを承認した後、攻撃者はFacebookのサーバーとFacebookアプリの間に割り込み、トークン上のユーザーIDを被害者のものに書き換えます。ユーザー名は通常公開情報であるため、攻撃者にとって障壁はほとんどありません。ユーザーIDが書き換えられても認証自体は有効なままなので、サードパーティアプリは被害者のアカウントでログインしてしまうのです。
この種の攻撃は「中間者(Man-in-the-Middle、MitM)攻撃」と呼ばれます。攻撃者がデータを傍受・改ざんできながら、通信している両者は互いに直接やり取りしていると信じている状態を指します。
これはあなたにどんな影響を与えるのか?
攻撃者がアプリを欺き、「自分=あなた」と信じ込ませることに成功すれば、ハッカーはそのサービスに保存されているすべての情報へアクセスできるようになります。研究者たちは、アプリの種類別に露呈しうる情報をまとめた表を作成しました。
情報の種類によって被害の深刻度は異なります。ニュースの閲覧履歴の流出より、旅行予定の全容の流出や、あなたの名義でのプライベートメッセージの送受信の方がはるかに深刻です。私たちが日頃、サードパーティにどのような情報を預けているのか、そしてそれが悪用された場合の結果について、考えさせられる指摘です。
心配すべきなのか?
研究者らの調査によると、Google PlayストアでSSOに対応する人気上位600アプリのうち41.21%が、このMitM攻撃に対して脆弱でした。これは世界中の数十億人規模のユーザーが、この種の攻撃にさらされる可能性を意味します。調査はAndroidで実施されましたが、チームはiOSでも同様の攻撃が再現可能だと考えています。つまり、2大モバイルOS上の数百万ものアプリが、この攻撃に対して脆弱になりうるのです。
執筆時点で、OAuth 2.0仕様を策定したInternet Engineering Task Force(IETF)からの公式声明は出ていません。また研究者たちは影響を受けるアプリ名を公表しない方針のため、モバイルアプリでSSOを利用する際は注意が必要です。
ただし明るい材料もあります。研究者たちはすでにGoogle、Facebookをはじめとする各SSOプロバイダーにこの脆弱性を通知しており、さらに影響を受けたサードパーティ開発者と協力して修正作業を進めています。
今すぐできることは?
修正対応は進んでいるものの、更新が必要なアプリは膨大な数にのぼり、完了までには時間がかかるでしょう。それまでの間は、SSOの利用を控えるのが賢明かもしれません。新規アカウント登録の際は、忘れない範囲で強力なパスワードを設定しましょう。あるいは、パスワードマネージャーに管理を任せるのも有効な方法です。
定期的にセルフセキュリティチェックを行うのも良い習慣です。Googleはセキュリティチェックの実施に対し、クラウドストレージ容量を特典として提供することもあります。SSOアカウントでどのアプリに権限を付与したかを見直す絶好のタイミングです。特に、膨大な個人情報を保持するFacebookのようなサービスでは、この見直しが重要になります。
そろそろシングルサインオンから離れるべき時だと思いますか?最適だと思うログイン方法は何ですか?この脆弱性の影響を受けたことはありますか?ぜひ下のコメント欄でお聞かせください!
-
Android Nはどのくらい安全?大幅強化されたセキュリティ機能を徹底解説
当サイトでは、Android、セキュリティ、そしてAndroidのアップデートについて幅広く取り上げてきました。本記事では、これら3つのテーマを1つにまとめてご紹介します。Android NはAndroidファミリーの最新メンバーであり、過去に発覚したセキュリティ侵害への対応として、セキュリティと機能の両面で大幅な強化が図られています。 Androidにも存在するランサムウェアなどの脅威 以前、ランサムウェアについて取り上げましたが、その際に触れていなかった重要な点があります。実はAndroidにもランサムウェアの脅威が存在するのです。悪意のあるモバイル広告を通じてデバイスにランサムウェア
-
Facebook Messengerで暗号化をオンにする方法|「シークレット会話」の設定手順を解説
サイバー攻撃による被害は今も後を絶ちません。Yahoo!は大規模な情報漏洩事件に見舞われ、セキュリティブログ「Krebs on Security」はDDoS攻撃を受け、さらにDNSサービス大手のDynは史上最大規模のDDoS攻撃によって深刻な影響を受けました。こうした状況を受けて、Facebookは2016年7月、ユーザーの安全を守るための新しいメッセージ暗号化システムの導入を約束し、同年10月にその公約を実現しました。この記事では、Facebook Messengerで暗号化をオンにする具体的な方法をご紹介します。暗号化機能の有効化は難しそうに聞こえるかもしれませんが、実際は驚くほど簡単です