サンプルアプリの脆弱性説明

サンプルアプリの脆弱性

サンプルアプリ「05データバックアップ」に存在している脆弱性について詳しく説明します。
具体的にどのような実装が脆弱性につながっているのか、ソースコードを確認してみましょう。

脆弱性のあるソースコード

プロジェクト ComponentService
ソースファイル AndroidManifest.xml
<!-- ▼▼▼脆弱性のあるソースコード▼▼▼ -->
<!-- exported属性をtrueに設定。 -->
<service
    android:name=".BackupService"
    android:exported="true" >
</service>
<!-- ▲▲▲脆弱性のあるソースコード▲▲▲ -->
脆弱性の原因となっている処理は以下の点です。
  • 公開ServiceがPermissionで保護されていない
    サンプルアプリでは、「BackupService」というServiceのexported属性がtrueに設定されていることが分かります。 android:exported=trueを設定し、他のアクセス権設定を行わない場合、他の全てのアプリからアクセスすることが可能となります。 サンプルアプリはサーバへデータをバックアップする機能があります。これらを他のアプリに公開してしまうと、それらの機能を悪用される恐れがあります。Serviceを公開する場合は、全てのアプリに公開するのではなく、Permissionを要求するように設定する等のアクセス権設定を併用し、公開範囲を限定するべきです。

次は、脆弱性の修正方法について説明します。