Preferenceファイルのアクセス制限不備

本シナリオでの学習内容

ここでは、Preferenceファイルのアクセス制限不備によって生じる脆弱性について学習します。
実際にサンプルアプリを実行して脆弱性によってどのような被害が発生するのかを体験し、その後、脆弱性の原因と対策についてソースコードを参照しながら学習します。

Preferenceファイルのアクセス制限不備とは

「Preferenceファイルのアクセス制限不備」とはどのような問題でしょうか。ここで概要について理解しておきましょう。
Preferenceは、アプリが動作する際に参照する設定情報などを簡単な実装で入出力できる仕組みです。 Preferenceの実体は、内部ストレージに保存されるファイルです(以降、Preferenceファイルと呼びます)。
Preferenceクラスが提供するメソッドの使用により、開発者は明示的にアクセス権を設定しなくても他のアプリからアクセスできないPreferenceファイルを作成することができます。
正しくアクセス制限が行われていれば
攻撃アプリはPreferenceファイルにアクセスできない

また、内部ストレージに保存する通常のファイルと同様に、開発者がPreferenceファイルに対して明示的にアクセス権を設定することもできます。 そのため、Preferenceファイル作成時に誤ったアクセス権設定をしてしまうと、他のアプリがPreferenceファイルにアクセス可能になります。
アクセス制限に誤りがあると
攻撃アプリはPreferenceファイルにアクセスできる

Preferenceファイルの内容が想定外のアプリに読み取られたり書き換えられたりできるようになっていることが「Preferenceファイルのアクセス制限不備」によって生じる脆弱性です。

学習用アプリについて

このシナリオでは、以下の学習用アプリを使用して学習します。
  • 学習用アプリの概要
    サンプルアプリ「03SNSモバイル」と、攻撃アプリ「03SNSモバイルスパイ」を使用します。
    攻撃アプリ「03SNSモバイルスパイ」が、サンプルアプリ「03SNSモバイル」のPreferenceファイルに記録されているID、パスワードを盗み出すという想定です。

  • サンプルアプリ「03SNSモバイル」
    架空のWebサービス「SNSモバイル」にログインし、日記の作成、つぶやき(コメントの投稿)等を行うアプリです。
    Preferenceファイルのアクセス制限に不備があります。

  • 攻撃アプリ「03SNSモバイルスパイ」
    「03SNSモバイル」アプリが保存しているPreferenceファイルを読み取り、ID、パスワードを入手するアプリです。

どのような実装がこの脆弱性につながるのか次のページで学習していきましょう。