2011-05-18

AndroidのClientLogin認証における脆弱性

By Taro Yamazaki  |  23:39 No comments

既にいろいろなところでニュースとして取り上げられていますが、ちょっと情報の整理も兼ねて。ドイツのウルム大学の研究者たちの報告が最初の情報源です。

GoogleではClientLoginという認証方式を設けており、この方式に関してはGoogleのサイト上でも開発者向けの情報「Authentication and Authorization in the Google Data Protocol」で説明されています。簡単に言うと、ユーザーが一度Googleアカウントの認証をパスすると、その後最大2週間使用できるトークンがGoogleから発行され、その期間内はGoogleのサービスにそのトークン付きでリクエストを投げれば認証を通過できる(Googleアカウントの再度の認証は不要)、という仕組みです。この仕組みはGoogleのサービスを利用するサードパーティのアプリケーションでも利用できます。

Googleアカウントの認証手続きそのものは暗号化された通信経路上(HTTPS)で行われるため、ここは問題ありません。問題はその後で、認証後に発行されたトークンを使ったGoogleサービスへのリクエストが、暗号化されていないHTTP上を通過してしまうケースがある、ということです。HTTP上を通るのか、HTTPS上を通るのかは、そのアプリケーションの作りに依存します。少なくとも、Android 2.3.3以前のバージョンに搭載されたカレンダーや連絡先などのアプリケーションでは、リクエストがHTTP上を通過する(つまり、トークンが暗号化されない)と報告されています。

前述の「Authentication and Authorization in the Google Data Protocol」で使われている図を使って説明すると、このようになります。

android_clientlogin

認証に代わるトークンのやり取りが暗号化されていないということは、HTTPのリクエストをキャプチャしてしまえばそのトークンがそのまま入手でき、悪用できてしまうことになります。そのトークンの有効期限内であれば、他人のトークンを使ってGoogleサービスにアクセスできることになってしまうわけです。

Android 2.3.4以降、またはタブレット向けAndroid 3.0では問題が解決されているとのことですが、日本国内に存在するAndroid端末はほぼすべてがそれ以前のバージョンです。Android OSのバージョンアップも基本的にベンダーによる対応に依存しており、ユーザーがこの問題に対処するために自力でバージョンアップすることは難しいでしょう。

ユーザーができる対応としては、

  • 公開されている無線LANアクセスポイントなど、第三者による通信の傍受が可能な環境で使用しているときは、Googleアカウントを使用するサービスすべてを利用しない(自動同期なども無効にしておく)。
  • Android OSのバージョンアップ情報をこまめに確認し、アップデートが公開されたら速やかに適用する。

といったぐらいでしょうか。私もAndroidのユーザーとして、各ベンダーにも迅速な対応をお願いしたいものです。

Author: Taro Yamazaki

0 コメント:

© 2015 yamata::memo | Distributed By My Blogger Themes | Created By BloggerTheme9
TOP