サンプルアプリの脆弱性説明

サンプルアプリの脆弱性

サンプルアプリ「03SNSモバイル」に存在している脆弱性について詳しく説明します。
具体的にどのような実装が脆弱性につながっているのか、ソースコードを確認してみましょう。

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

プロジェクト FileaccessPreference
ソースファイル MainActivity.java
        private void initPreference() {

        	// ▼▼▼脆弱性のあるソースコード▼▼▼
        	// SharedPreferences型インスタンスを取得
        	preferences = getSharedPreferences(PREFERENCE_NAME, MODE_WORLD_READABLE);
			// ▲▲▲脆弱性のあるソースコード▲▲▲
脆弱性の原因となっている処理は以下の点です。
  • Preferenceファイル作成時のアクセス権設定にMODE_WORLD_READABLEを使用している
    サンプルアプリが作成しているPreferenceファイルには、SNSへログインするための重要な情報が保存される可能性があります。重要な情報を格納するファイルであるにも関わらず、他のアプリからも読み取り可能なモードで作成していることで脆弱性となってしまいました。
    重要な情報を保存するファイルを作成する場合は、他のアプリからはアクセスできないモードで作成することが必要です。
    アクセス制限不備に関する問題は、IPAにも複数報告されています。開発者はPreferenceファイルの取り扱いに注意しましょう。

次は、脆弱性の修正方法について説明します。