それでは、実際に脆弱性のあるソースコードを見てみましょう。
以下のコードは「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>
<!-- ▲▲▲脆弱性のあるソースコード▲▲▲ -->
|