もう一ヶ月も前のネタだけれど、MacAfee Blogにて興味深い投稿があった。
- McAfee Blog -Google Playからアプリ自動インストールを行う危険な国内向けAndroidアプリ - MacAfee Blog
中身はとあるアプリがGoogle Playからユーザーによる権限確認を飛ばしてアプリを勝手にインストールできるという内容。
端末内アカウントを取得するための権限を持つアプリ
SID/LSIDの権限へのアクセスをリクエストする
Googleアカウントの「SID」「LSID」という2つの権限をそれぞれAndroidシステムが表示するダイアログ上でユーザーに要求していますが、これらの権限取得によりアプリはユーザーのGoogleアカウント経由でGoogle Playストアを含む種々のGoogleサービスへのアクセスを許可されることになります。
Google Playストアから任意の無料アプリを直接ダウンロードおよびインストールするためのトークンを取得し、実際にアプリの自動インストール処理を開始します。
ユーザーによる許可によって取得したGoogleアカウントの認可トークンと、それを用いて行われるGoogle PlayストアのWebサーバーとの非公式な方法での通信によって実現されています。MacAfee Blogによると、SID・LSIDへのアクセスを許可すると、”種々のGoogleサービスへのアクセスを許可”することになるそうです。
今回のGoogle Playストアからの非公式ダウンロードはその”種々のGoogleサービスへのアクセスを許可”のうちの1つを利用したのでしょう。実際に悪意のあるアプリにSID・LSIDへのアクセスを許可すると様々な個人情報を抜かれることになりそうです。
気になったのは、SID・LSIDって一体何よ?ということ。以下に想像を交えつつ調べたことをまとめてみました。
1.SID・LSIDへのアクセスを要求するアプリ
- ICS Browser + - Google Play
- ダブルブラウザPlus - Google Play
- My Paid Apps - Google Play
- …and more
ブラウザアプリが2つと、Playストアで購入した有料アプリをリスト表示してくれるアプリです。
ダブルブラウザPlusの説明に拠ると、
※本アプリケーション起動時に、Googleアカウントにアクセスすることを許可頂く「SID」、「LSID」への権限リクエスト画面が表示されます。これにより、プリインストールされているブラウザのBookmarkを本アプリでも引き継いで利用可能にします。ということなので、やはりSID・LSIDへのアクセスを許可すると、Googleアカウントの様々な情報にアクセスできるようになるようです。
2.Google Developersを漁ってみる
- Search results for SID LSID — Google Developers
- ClientLogin for Installed Applications - Google Accounts Authentication and Authorization — Google Developers
- Google Apps Email Audit API Authentication and Public Key - Admin SDK — Google Developers
難しいことはわかりませんが、アプリがGoogleアカウント認証に成功するとサーバーから以下のレスポンス(上図だと7.かな?)があるようです。
HTTP/1.0 200 OKSIDとLSIDが出てきましたね。さらに、SID・LSIDについては別ページに、
Server: GFE/1.3
Content-Type: text/plain
SID=DQAAAGgA...7Zg8CTN
LSID=DQAAAGsA...lk8BBbG
Auth=DQAAAGgA...dk3fA5N
The SID is the session ID valid for the life of the session. The LSID is for APIs not using the Google Data protocol.という説明があり、
- SID:セッションID(参照:セッションIDとは - IT用語辞典)
- LSID:Google Data protocolを使用しないAPIのためのもの
この認証ID(SID・LSID)を利用することで、GoogleサービスのAPIを利用して様々なアカウントデータにアクセスできるようになるようです。
3.SID・LSIDへのアクセス許可ってやばくない?
許可するだけで様々なアカウントデータにアクセスできるというのはかなりヤバイと思います。そもそもSID・LSIDって何のことかパッと見わからないですし、まさか許可するとアカウントデータにアクセスし放題とは思わないでしょう。実は、ClientLoginは既にサービス終了が告知されており、2015年4月20日以降利用できなくなります。
- Changes to deprecation policies and API spring cleaning - Google Developers Blog
- Google Account Authentication APIs Terms of Service - Google Accounts Authentication and Authorization — Google Developers
ClientLoginの代わりの認証手段として”Oauth 2.0”が用意されていて、Google Play開発者サービスにより全てのAndroidアプリはOauth 2.0を利用可能になっています。
Oauth認証により、Googleアカウント内のどのデータにアクセス権を与えるか明示されるようになるので、SID・LSIDのように”何の権限を与えているかまったくわからない\(^o^)/”という状況を防ぐことが可能になります。
要求する権限が明示され、許可するか選択できます
iOS and Mac Sign-In Controllers graduate to OAuth 2.0(Official Google Mac Blog)より
ClientLogin終了まで後約1年。
SID・LSIDを狙う悪意のあるアプリの被害がこれ以上出ることが無いよう、他の優良アプリは一刻も早くOauth 2.0に移行してくれるといいなぁと思います。