サンプルアプリの脆弱性
サンプルアプリ「07画像送信」に存在している脆弱性について詳しく説明します。
具体的にどのような実装が脆弱性につながっているのか、ソースコードを確認してみましょう。
脆弱性のあるソースコード
プロジェクト |
ComponentBroadcast |
ソースファイル |
AndroidManifest.xml |
<receiver
android:name="jp.go.ipa.sample.component.broadcast.MessageReceiver">
<!-- ▼▼▼脆弱性のあるソースコード▼▼▼ -->
<intent-filter>
<action android:name="sampleapp.message.receiver"/>
</intent-filter>
<!-- ▲▲▲脆弱性のあるソースコード▲▲▲ -->
</receiver>
|
脆弱性の原因となっている処理は以下の点です。
プロジェクト |
ComponentBroadcastSender |
ソースファイル |
MainActivity.java |
/*
* 送信ボタンタップ
*/
public void onClickSend(View v) {
// 送信先の取得
ListView listFriend = (ListView) findViewById(R.id.listFriend);
int pos = listFriend.getCheckedItemPosition();
// 送信先が指定されていない場合は以降の処理は行わない
if (pos < 0) {
Toast toast = Toast.makeText(this, "送信先を選択してください", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.AXIS_CLIP, 0, 0);
toast.show();
return;
}
String pictureName = (String) listFriend.getItemAtPosition(pos);
// ▼▼▼脆弱性のあるソースコード▼▼▼
// 暗黙的Intentを使用
Intent intent = new Intent("sampleapp.message.receiver");
intent.putExtra("pictureName", pictureName);
sendBroadcast(intent);
// ▲▲▲脆弱性のあるソースコード▲▲▲
}
|
次は、脆弱性の修正方法について説明します。