Androidで作るセキュアなアプリのポイントとは

2012年3月7日(水)
タオソフトウェア株式会社

2.4 著作権保護

アプリケーション自体も著作物であり、著作権保護の対象となりますが、ここではアプリケーションが内蔵しているデータの著作権保護について見ていきます※2。アンドロイドアプリは他のアプリケーションのリソースに簡単にアクセスできるため、リソースデータを取り出して外部ファイルに保存するといった処理を実装できます。著作権が設定されていて第三者に渡ってはならないデータがアプリケーションに含まれている場合は、データの取り出し自体を防ぐことはできないという前提に立って、取り出されても利用できないような措置を取る必要があります。著作権が設定されていることが想定できるデータとしては、次が挙げられます。

  • 画像
  • 動画
  • 音楽
  • 文字列
  • 電子書籍

それぞれを保護するレベルに応じて、暗号化やライセンスサーバの利用などを検討する必要があります。また、これらの情報を送受信する際には、個人情報と同様にパケット盗聴への対策が必要となります。

※ 2 アプリケーション自体の保護については、「2.6 アプリケーションの不正利用抑止」を参照のこと。

2.5 アプリケーションの悪用抑止

アプリケーションの機能に外部からアクセスされ、本来の目的以外に悪用されることが考えられます。単純な例を挙げると、接続先と接続先に送るデータをインテント経由で受け取って通信を行うようなアクティビティは、適切なパーミッションで保護されていないと、悪意のあるアプリケーションから送られたデータをそのまま転送する踏み台として悪用される恐れがあります。

リスト2-1 受け取ったインテントの内容を他へ送信するアクティビティ

<activity android:name=".service.WriteServiceActivity">
  <intent-filter>
    <action android:name="jp.co.somecompany.action.DATA_SEND" />
  </intent-filter>
</activity>

マニフェストの内容から、すべてのアプリケーションがこのアクティビティに対して処理を要求できることがわかります。仮に、アクティビティ側に適切なチェックが記述されていないとすれば、アプリケーションは悪意のあるデータを送出した犯人にされてしまいます。

リスト2-2 受け取ったデータを盲信し、処理してしまう例

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Intent intent = getIntent();
  String destinationURL = intent.getStringExtra(DESTINTION_URL, null);
  String data = intent.getStringExtra(DATA_TO_SEND, null);
  // 渡されたデータは正しいと信じて送信処理を実行
  // doSend()の中でチェックしてればよいが...
  doSend(destinationURL, data); 
}

また、決まった時刻に自動的に処理を行うアプリケーションは、アラームマネージャからのインテント通知に応じて起動するように設計されますが、起動時の処理の内容によっては、インテントが偽装された場合の対策が必要になります。

たとえば、毎晩午前0時に端末の情報をサーバへ送信するようなアプリケーションがあるとしましょう。この処理の実行開始をアラームマネージャからのインテント通知だけを引き金として実装してしまった場合、悪意のあるアプリケーションが偽装されたインテントをアラームマネージャに登録すれば、アプリケーションはサーバへのデータ送信を任意のタイミングで繰り返し実行させられることになります。このケースでは、悪意のあるデータをサーバへ送信することは難しいものの、サーバに負荷をかけたり、想定外のタイミングでデータ送信を行ったりすることで、サーバ側のデータで不整合を引き起こす可能性があります。

これについては、以下の対策が考えられます。

  • 機能の呼び出し元を確認する
  • 外部から呼び出せないようにパーミッションを設定する
著者
タオソフトウェア株式会社

2005年創業の独立系ソフトハウス、代表取締役 谷口 岳
サーバサイドアプリケーション開発会社としてスタート。Google社のアンドロイドに発表当初より着目し、研究開発を開始。現在はアンドロイド専業(受託開発)として、アンドロイド端末上で動作するアプリケーションやアンドロイド端末と連携して動作するサーバ側アプリケーションを数多く手がけている。日経BP社主催Android Application Award 2010 Springにて「tWakeUpCallMaker」が大賞を受賞。2010年5月に、プログラミング不要でアンドロイドアプリを作成できる「DOROKURI」サービスを開始。記事執筆、講演など多数。
ブログ(開発者向け情報を発信)

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています