FacebookのAndroid SDKにセキュリティホール, 対応済みだがマイナーなアプリには不安が?

次の記事

PinvolveはFacebookページをPinterest風に表示して簡単にPinterestに投稿もできるスグレもの

【抄訳】
facebook-security

モバイルアプリのためのプラットホーム(アプリのための“バックエンドサービス”)を提供しているParseの報告によると、FacebookのAndroid SDKに重大なセキュリティホールが発見された。その問題はFacebookに報告された直後にパッチがあてられたが、Parseによれば、それだけでは各アプリが十分なセキュリティを確保できないという。

この脆弱性はFacebookのAndroid SDKを使っているすべてのアプリにあり、たとえばFoursquareもそうだが、一般ユーザには、どのアプリが対策済みでユーザのデータがセキュアであるかないかを、知る方法がない。なお、Foursquareはすでに対策済みだそうだ。

Parseが提供しているモバイルプラットホームは、アプリのためのスケーラブルなバックエンドサービスだ。その中には、AndroidアプリにFacebookのサポートを容易に加えられるツールもある。それを使ったアプリは、ユーザがFacebookのアカウントおよび認証情報でアプリにサインインできるようになる。またユーザは、そのアプリの中からFacebookのウォールに投稿したり、Facebookの自分のプロフィールやフレンドリストにアクセスできるようになる。Parseは、これらの機能を実装するために、FacebookのAndroid SDKを使っているのだ。

しかしそれらの機能自体は何ら悪性のものではなく、コントロールはあくまでもユーザにあり、ユーザはそのアプリがFacebookにアクセスすることを不許可にすることもできる。

ParseのエンジニアDavid Pollがブログ記事で、その脆弱性に気づいたいきさつを説明している。それによると、AndroidのデベロッパはAndroidのログシステムlogcatを使って、アプリやシステムのプロセスが書き込んだ診断情報を調べることが多い。logcatはPCとデバイス上で動かす実行ファイルで、そのログ情報をバグやクラッシュの情報とつきあわせることによって問題の原因を見つけ、デバッグ作業を進めていく。

しかし今回は、Android側の問題ではない。

彼がParseにFacebookを組み入れる作業をしていたとき、おかしなことに気づいた。そのときlogcatの画面には、さきほどログインが許可されたときのURLの、アクセストークンの全体が表示されていた(下の画像赤枠内のGETデータ)。

最初Pollは、これは自分たちだけに見えるものだ、と思った。ただしlogcatは基本的に、Androidアプリの診断用の公開ブレテンボードだ。Poll は、ほかのアプリでもこれが見えるか確認するために、おなじくFacebookのSDKを使っている…まだ未対応の時点での…Foursquare(Androidアプリ)で試してみた。

やはり、見えた。

次にPollは、CatLogというAndroidアプリ(logcatファイルのビューワー)を使った。わざわざデバッグをしなくても、その同じ行を見ることができた。

おや、まあ!

以上が物語っているのは、Facebook SDKからの出力を見るための簡単なアプリを書けば、そのデバイスのユーザのアクセストークンを盗める、ということだ。

Pollも、そんなアプリを書いた。

彼が書いた”FacebookThief”(Facebook泥棒)概念実証アプリは、バックグラウンドで動き、ユーザのトークンをかっさらう。

【中略】

この脆弱性の報告を受けたFacebookの対応には、文句の付けようがない。問題は24時間以内にパッチされ、Parseは同社のプラットホームを新しいSDKを使うようにアップデートした。

しかし、問題はそれだけでは終わらない。

Facebookに限らずどんなSDKでも、アップデートをデベロッパのアプリにプッシュすることはできない。デベロッパ自身がFacebook SDKの最新バージョンを入手して、それを自分のアプリに組み入れ、アップデートをアプリストアに陳列するしかない。しかしそれでも、ユーザが自分のアプリを必ずアップデートしてくれるという保証はない。

この問題が起きたのは2月だが、そのときParseはFacebookから、主なアプリデベロッパたちがアプリのアップデートをストアに出すまで問題を内密にしてほしい、と頼まれた。Foursquareなどは、そのときに問題を修復したのだ。

【中略】

Facebookが本誌に確認したところによると、同社は主なアプリメーカーすべてにコードのアップデートを求めたし、パッチが行われたアプリとそうでないアプリを見分ける方法はある、という。Facebookは、問題の本質を次のように述べている。

ユーザが被害に遭うのは、それまでに悪質なアプリケーションをインストールしていて、それが拡張パーミッション”Read Sensitive Log Data”(機密のログデータを読む)を許容していた場合のみである。ユーザが自己を保護するためには、アプリケーションの最新バージョンをダウンロードし、信頼できないアプリケーションはアンインストールすること。これまでFacebookに寄せられた責任ある報告によると、セキュリティコミュニティの誰一人として、この脆弱性を悪用しているアプリケーションがある証拠を見つけていない。この問題でFacebook Securityに貢献していただいた方々には、謝礼をお贈りした。

【後略】

〔訳注: 結論は、きわめて多数存在するデベロッパ全員+ユーザ全員に、すべてのアプリのアップデートを期待することはできないので、“脆弱性を悪用しているアプリは見つかっていない”というFacebookおよびコミュニティの暫定結論が、当面のよりどころとなるようです。〕

[原文へ]
[jpTechCrunch最新記事サムネイル集]
[米TechCrunch最新記事サムネイル集]
(翻訳:iwatani(a.k.a. hiwa))