内部ストレージのアクセス制限不備

本シナリオでの学習内容

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

内部ストレージのアクセス制限不備とは

「内部ストレージのアクセス制限不備」とはどのような問題でしょうか。ここで概要について理解しておきましょう。
Android OSが提供するAPIによって内部ストレージ上に作成されたファイルは、アプリ専用の領域に保存されます。 そのためアプリが作成したファイルやディレクトリは、アプリ自身が許可しない限り他のアプリからはアクセスできないようになっています。

アクセス制限が正しく行われている場合
他のアプリからはアクセスできない

しかし、ファイル作成時に誤ったアクセス権を設定してしまうと、他のアプリからアクセス可能なファイルを作成してしまいます。

アクセス制限に不備がある場合
想定外のアプリからアクセス可能になる

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

学習用アプリについて

このシナリオでは、以下の学習用アプリを使用して学習します。
  • 学習用アプリの概要
    サンプルアプリ「01パスワード管理」と、攻撃アプリ「01パスワード管理スパイ」を使用します。
    攻撃アプリ「01パスワード管理スパイ」が、サンプルアプリ「01パスワード管理」のアクセス制限に不備のある内部ストレージファイルから、パスワードを盗み出すという想定です。

  • サンプルアプリ「01パスワード管理」
    サイトのログイン等で使用するIDやパスワードを内部ストレージに記録しておく、備忘録のようなアプリです。
    内部ストレージに保存したファイルのアクセス制限に不備があります。

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

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