サンプルコード解説

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

それでは、実際に脆弱性のあるソースコードを見てみましょう。
この例は、Preferenceファイルを新たに作成する際の処理ですが、他のアプリからファイルの情報を読み取れるファイルを作成してしまう脆弱性があります。
getSharedPreferences()を呼び出す際に、MODE_WORLD_READABLEを指定しているため、他のアプリから読み取り可能なアクセス権設定でPreferenceファイルが作成されています。
プロジェクト FileaccessPreference
ソースファイル MainActivity.java
        private void initPreference() {

        	// ▼▼▼脆弱性のあるソースコード▼▼▼
        	// SharedPreferences型インスタンスを取得
        	preferences = getSharedPreferences(PREFERENCE_NAME, MODE_WORLD_READABLE);
			// ▲▲▲脆弱性のあるソースコード▲▲▲