Androidアプリケーションパッケージ(APK)は複数のモジュールを含むことが可能だ。一つ以上のこうしたモジュールは、広告SDKかもしれない。現在、多くのAndroid開発者が無料で自分達の製品をユーザに提供するため、こうしたモジュールを使用しているため、今日ではそれはかなり良くあることだ。では、アプリはクリーンだが、広告モジュールが疑わしい場合はどうだろう?

  ユーザがメインのアプリに対してパーミッションを与えてインストールした場合(求められているパーミッションについて、良く理解しており、気にかけていると仮定する)、ユーザは広告モジュールにも同じパーミッションを使用することを許可することになる。時折、パーミッションはメインのアプリケーションではなく、広告モジュールによってのみ使用される。

  現在、Androidアプリはメインのアプリが使用するパーミションと、広告モジュールが使用するパーミッションとを区別しない。そしてセキュリティに関しては、ユーザとアナリストの双方にとって、それはまだ違法かどうか微妙だ。たとえば、以下は公式Android Marketからダウンロードされた、広告をサポートするアプリのパーミッション・タブのスクリーンショットで、パーミッションに関する非常に一般的な説明が書かれている:

android_market_permission (18k image)

  メインのアプリと広告モジュールの双方が、どのようにパーミッションを利用したかをパーミッション・タブが示せば、ユーザにとってより分かりやすくはないだろうか? あるいはさらに良いのは、広告モジュール用のパーミッション・タブがあるとか? そうすれば、メインのアプリ/広告モジュールが何をするか、ユーザにより分かりやすくなり、インストールを続けたいかどうか選びやすくなるだろう。

  先頃、こうしたことを示す事例があった。メインのアプリはクリーンだったが、広告モジュールに問題があった「Spyware:Android/AdBoo.A」の事例だ。これは、ユーザの機密情報を収集し、リモートサーバに送信していた。

  現在、大部分の広告サービスは、「ターゲットを絞った」広告を提供するため、携帯電話からの若干の情報を必要としているが、AdBooで我々は、同モジュールがあまりに多くの情報を要求していると考えた。そして同広告モジュールが基本的に、メインのホストアプリのパーミッションを共有していたため、広告モジュールをブロックし、メインのアプリを残す方法は無い。

  アプリにパーミッションが与えられると、広告モジュールは先に進むことができる。正規の広告を表示するだけなら、それで良い。もしそのモジュールが疑わしいルーチンを含むなら、それはあまり良いことではない。AdBooのケースでは、モジュールは電話から詳細を収集するが、以下のスクリーンショットでそのいくつかが強調されている:

spyware_adboo_leak_1 (74k image)

  そして以下は対応するSmaliコードで、これらの情報が実際、広告バナーを提供する以前に収集されている:

spyware_adboo_smali (35k image)

  現在、同アプリが広告を含んでいるかどうか、あるいはインストールの前もしくは最中に、どのような広告が表示されるか、はっきりとは分からない。一部の開発者はマニュアルで、アプリが広告を含むことを明記しているが、全ての開発者がそれほどきちんとしているわけではない。アプリが「広告入り」もしくは「広告無し」とはっきり表示されていれば、ユーザにとってより明白ではないだろうか?

  そして最終的な問題は、全ての開発者が自分達の製品で表示される広告のタイプを、コントロールできるわけではないことだ。広告モジュールは通常、サードパーティの広告プロバイダから、時には複数のサービスからマテリアルを持って来るため、表示される広告のタイプをコントロールすることは、より扱いにくくなっている。最悪の場合、子ども用のアプリに成人向けの広告が表示される場合もあるようだ。


----

ThreatSolutions post by Jessie