サンプルコード解説

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

それでは、実際に脆弱性のあるソースコードを見てみましょう。
以下のコードは「AndroidManifest.xml」内のContentProviderの宣言です。
この例では、android:exported属性を設定していません。また、 uses-sdkの箇所を見ると、android:minSdkVersionが10(2.3.3)になっています。
4.1以前のバージョンでは、android:exported属性の初期値はtrueなので、このContentProviderは他の全てのアプリからアクセス可能な状態になっています。
プロジェクト ComponentContentProvider
ソースファイル AndroidManifest.xml
<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="10"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <!-- ▼▼▼脆弱性のあるソースコード▼▼▼ -->
    <provider android:name=".PictureProvider"
              android:authorities="jp.go.ipa.sample.component.contentprovider"/>
    </provider>
    <!-- ▲▲▲脆弱性のあるソースコード▲▲▲ -->