それでは、実際に脆弱性のあるソースコードを見てみましょう。
以下のコードは、ファイルへの書き込みを行う処理ですが、他のアプリから情報を読み取れるファイルを作成してしまう脆弱性があります。
ファイルをSDカード上に作成しているため、ファイルは全てのアプリから読み取りが可能な状態となっています。
プロジェクト |
FileaccessSd |
ソースファイル |
MainActivity.java |
public void onClickSave(View v) {
// 入力内容の取得
String data = csvData.toString();
FileOutputStream fileOutputStream = null;
// 既存のファイルを一度削除した後、新たにファイルを作成
File file = new File(SD_FILE_PATH);
file.delete();
file.getParentFile().mkdir();
try {
// ▼▼▼脆弱性のあるソースコード▼▼▼
// 書き込み処理を行う
fileOutputStream = new FileOutputStream(file, true);
fileOutputStream.write(data.getBytes());
// ▲▲▲脆弱性のあるソースコード▲▲▲
|