ここ 1 か月ほど、いくつかの iOS アプリが、セキュリティの脆弱性や iPhone の追跡をめぐって注目を集めてきました。今度は Facebook の番ですが、問題となっている点は、LinkedIn や Dropbox といった他の多くのソーシャルネットワークサイトや、iOS でそれらのサイトを使ってユーザーを認証するアプリにも当てはまります。
セキュリティ研究者の Gareth Wright は、Facebook の iOS アプリが認証トークンをプレーンテキストのファイルに保存していることを発見しました。このトークンは、ログインに使うパスワードに相当するものです。
認証トークンをバックアップに保存すること自体が、必ずしも悪い考えというわけではありません。結局のところ、バックアップから iPhone を復元するときに、すべてがログインしたままの状態で戻っていると便利ですし、そのためにはトークンが必要です。Facebook の現在の実装でどう動くかは、次のとおりです。
- iPhone の Facebook アプリにログインし、iTunes でバックアップする
- iPhone の Facebook アプリからログアウトする(左メニューの一番下に進み、
Settings→Log Outをクリックします) - iTunes のバックアップを iPhone に復元する
ログインした状態に戻っているのがわかります。便利ですね。
地獄への道は善意で舗装されている
Facebook が認証トークンをバックアップに保存しているかどうかは、主な問題ではありません。最大の問題は、トークンが暗号化されておらず、デバイス固有の要素を持たず、有効期限もないことです。つまり、誰かがバックアップからそのファイルを取り出して、自分のデバイスにインポートできてしまうということです。簡単に言えば、このファイルにアクセスできる人は誰でも、あなたの Facebook アカウントに完全にアクセスでき、それを使ってなりすましをしたり、あなたの行動を追跡したりできるのです。
加えて、多くのサードパーティ製のアプリやサービスが、Facebook を認証サービスとして使っています。ハッカーがすでにあなたの Facebook アカウントにサインインしていれば、それを使ってこれらのサービスにもアクセスできてしまいます。
Facebook は報道機関に対して次のようなコメントを返していますが、当社が最も簡単な手口だと考えている、安全でないバックアップを狙ったハッキングの可能性には触れていないようです。
Facebook’s iOS and Android applications are only intended for use with the manufacture provided operating system, and access tokens are only vulnerable if they have modified their mobile OS (i.e. jailbroken iOS or modded Android) or have granted a malicious actor access to the physical device. We develop and test our application on an unmodified version of mobile operating systems and rely on the native protections as a foundation for development, deployment and security, all of which is compromised on a jailbroken device. As Apple states, “unauthorized modification of iOS could allow hackers to steal personal information ... or introduce malware or viruses.” To protect themselves we recommend all users abstain from modifying their mobile OS to prevent any application instability or security issues.
心配すべきでしょうか。このファイルを入手するには、その人があなたの iOS デバイス、または暗号化されていないバックアップが保存された PC に物理的にアクセスできる必要があります。興味本位のハッカーにはそのアクセスは難しいかもしれませんが、本気のハッカーなら、そうしたアクセスを手配できるかもしれません。
Facebook のようなアプリの提供元が、次のような対策を取れば、自らの問題を軽減できることは明らかです。
- バックアップ内の認証トークンに追加の暗号化を施す
- トークンにデバイス固有の要素を持たせ、他のデバイスでは使えないようにする
- トークンに近い将来の有効期限を設定する
- 復元されたトークンによるサービスへの新規ログインがあった場合に、ユーザーに通知する
ご自身の Facebook 認証トークンを調べてみたいですか?

Facebook の認証トークンを読み取る iPhone Backup Extractor
iPhone Backup Extractor を使い、「Expert Mode」でバックアップにアクセスすれば、これを確認できます。何をしているのかを理解していなければ、データを読み取ったり、それを使って Facebook にサインインしたりすることはできません。その方法は、セキュリティ上の理由から公開を控えていますが、少し考えればわかるはずです。




