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

学習内容

ここでは、ファイルのアクセス制限不備によって生じる脆弱性を理解する上で必要な知識について学習します。
具体的には、Android OSのファイルの取り扱い方法や、事例を交えた脆弱性の概要について説明します。

学習の流れは以下のとおりです。
  • Android OSのファイルの保存場所について
    ファイルの保存場所や、アクセス制限の特徴について学習します。
  • ファイルのアクセス制限不備によって生じる脆弱性
    ファイルのアクセス制限に不備がある場合に、どのような脆弱性が生じるのか学習します。
  • 脆弱性の事例
    ファイルのアクセス制限不備による脆弱性の事例を紹介します。
  • 学習シナリオ
    サンプルアプリのソースコードを確認し、脆弱性体験を通じて、開発時に注意すべきポイントと対策方法について学習します。
    ここでは以下の3つのシナリオを用いて学習します。
    • 内部ストレージのアクセス制限不備
    • SDカードのアクセス制限の理解不足
    • Preferenceファイルのアクセス制限不備

Android OSのファイルの保存場所について

Android OSにはファイルの保存場所として以下の2種類があり、ファイルの用途や格納する情報に応じて開発者が保存場所を指定することになります。利用者が入力した情報やサーバからダウンロードした情報、またはアプリの設定情報等のデータを保存する手段として利用することができます。
  • 内部ストレージ
    端末に内蔵されているデータ保存領域です。端末にインストールされている他のアプリからのデータへのアクセスを制限することができます。 内部ストレージには、通常のファイルおよび、「Preference」と呼ばれる、主にアプリの設定情報を保存することを目的としたファイルが存在します。
  • SDカード
    SDカードなどの端末から取り外すことが可能なデータ保存領域です。内部ストレージと異なり、SDカードに保存したデータは、他のアプリからのアクセスを制限することができません。端末の中には、基板上に設置され「取り外しできないSDカード」と認識されるデータ保存領域を持つものもあります。

ファイルのアクセス制限不備によって生じる脆弱性

アプリは、自身が作成するファイルやディレクトリに意図しないアプリからアクセスされないよう、制限を施すことができます。 しかし、開発者がAndroid OSのファイルについて十分な知識を持っていない場合、誤った設定でファイルを作成したり、安全でない場所にファイルを作成したりする事が考えられます。
開発者は、重要な情報をファイルに保存する場合には、意図しないアプリから情報を読み取られたり更新されたりしないようにファイルを適切に保護することが必要です。

ファイルのアクセス制限不備により発生する問題として以下が挙げられます。
  • 悪意のあるアプリに情報を盗まれる
    悪意のあるアプリから不正にファイルにアクセスされ、ファイル内の情報を抜き取られてしまう危険があります。
    ファイルに個人情報やパスワードなどの重要な情報が格納されていた場合、その情報が漏えいする可能性があります。
  • データの信頼性、安全性が保証されない
    悪意のあるアプリがファイル内の情報を不正に更新することによって、データに不整合が発生したりアプリが想定しない値のデータを読み込んだりする可能性があります。
    利用者の情報やアプリの設定情報が改ざんされた場合、アプリが想定外の動作をする可能性があります。

脆弱性の事例

ファイルを取り扱う場合の注意点を理解しないままアプリを開発すると、アプリに脆弱性を作り込んでしまいます。
ここでは、ファイルのアクセス制限不備による脆弱性の事例を挙げます。
事例:ATOK for Androidの学習情報ファイルの内容が漏えいする問題
2012年 9月 JVNに、ATOK for Androidの学習情報ファイルのアクセス制限に関する問題が報告されました。
ファイルのアクセス制限に問題があったため、利用者が入力した文字列を保存している学習情報ファイルに他のアプリからアクセス可能になっていました。
脆弱性の事例
参考URL:
JVNDB-2012-000089:ATOK for Android における学習情報ファイルのアクセス権限に関する問題
http://jvndb.jvn.jp/ja/contents/2012/JVNDB-2012-000089.html

事例:Android版mixiの情報管理不備の問題
2012年 8月 JVNに、Android版 mixiの「友人の発言」を保存したファイルへのアクセス制限に関する問題が報告されました。
Android版mixiは「友人の発言」をSDカードに保存していたため、他のアプリから「友人の発言」にアクセスすることが可能になっていました。
脆弱性の事例
参考URL:
JVN#92038939:Android版 mixi における情報管理不備の脆弱性
http://jvndb.jvn.jp/ja/contents/2012/JVNDB-2012-000078.html



このように、開発者はファイルのアクセス制限に常に注意しておく事が必要です。

学習シナリオ

ファイルのアクセス制限不備によって生じる脆弱性の概要について理解できたでしょうか。それでは以下のシナリオを通して脆弱性のあるサンプルアプリを見ながら、脆弱性を作り込んでしまう原因や、対策方法について学習していきましょう。