# M2 - 安全でないデータストレージ

## 脅威エージェント

**アプリケーション依存**

脅威エージェントには次のものが含まれます。紛失/盗難されたモバイルデバイスを獲得した攻撃者、モバイルデバイス上で実行され攻撃者に代わって動作するマルウェアやその他の再パッケージ化されたアプリ。

## 攻撃手法

**悪用難易度 容易**

攻撃者がモバイルデバイスを物理的に獲得した場合、攻撃者はモバイルデバイスを自由に利用可能なソフトウェアを備えたコンピュータに接続します。これらのツールを利用すると攻撃者は格納された個人識別情報 (PII) やその他の機密情報資産を含むことが多いすべてのサードパーティアプリケーションのディレクトリを見ることができます。攻撃者はそのような情報資産を盗むためにマルウェアを構築したり正規のアプリを改変する可能性があります。

## セキュリティ上の弱点

**普及度 中**\
**検出難易度 普通**

開発チームがユーザーやマルウェアはモバイルデバイスのファイルシステムやデバイス上のデータストア内の機密情報にアクセスできないと想定すると安全でないデータストレージ脆弱性が発生します。ファイルシステムは簡単にアクセスできます。組織は悪意のあるユーザーやマルウェアが機密データストアを調査することを想定すべきです。脆弱な暗号化ライブラリの使用は避ける必要があります。モバイルデバイスのルート化や脱獄化は暗号化保護を回避します。データが適切に保護されていない場合、アプリケーションデータを見るために必要なのは専用ツールだけです。

## 技術的影響

**影響度 深刻**

これにより、良くても一人のユーザーの、悪ければ多くのユーザーのデータが失われる可能性があります。また、モバイルマルウェア、改変されたアプリ、フォレンジックツールを介してアプリの機密情報を抽出するなどの技術的影響につながる可能性があります。 ビジネスへの影響の性質は盗まれた情報の性質に大きく依存します。安全でないデータは以下のビジネスへの影響をもたらします。

* 個人情報漏洩
* プライバシー侵害
* なりすまし
* 風評被害
* 外部ポリシー違反 (PCI)
* 物質的損失

## ビジネスへの影響

**アプリケーション / ビジネス依存**

安全でないデータストレージの脆弱性は一般的にリスクとなるアプリを所有する組織にとって以下のビジネスリスクをもたらします。

* 個人情報漏洩
* なりすまし
* 風評被害
* 外部ポリシー違反 (PCI)
* 物質的損失

## '安全でないデータストレージ' の脆弱性があるか？

このカテゴリは安全でないデータストレージと意図しないデータ漏洩です。安全でなく格納されるデータは以下を含みますが、これに限定されません。

* SQL データベース
* ログファイル
* マニフェストファイルなどの XML データストア
* バイナリデータストア
* クッキーストア
* SD カード
* クラウド同期

意図しないデータ漏洩は以下からの脆弱性を含みますが、これに限定されません。

* OS
* フレームワーク
* コンパイラ環境
* 新しいハードウェア
* ルート化デバイスや脱獄済みデバイス

これは明らかに開発者の知識にありません。モバイル開発では特に、以下のようなまったく文書化されていない、もしくは十分に文書化されていない、内部プロセスで最も多く見られます。

* OS がデータ、画像、キー入力、ロギング、バッファをキャッシュする方法
* 開発フレームワークがデータ、画像、キー入力、ロギング、バッファをキャッシュする方法
* 広告、分析、ソーシャル、使用可能なフレームワークがデータ、画像、キー入力、ロギング、バッファをキャッシュする方法やデータ量

## '安全でないデータストレージ' を防ぐには？

あなたのモバイルアプリ、OS、プラットフォーム、フレームワークを脅威モデル化し、アプリが処理する情報資産および API がそれらの資産を処理する方法を理解することが重要です。以下の種類の機能をどのように処理するか確認することが大切です。

* URL キャッシュ (リクエストおよびレスポンスの両方)
* キーボード入力キャッシュ
* コピー/ペーストバッファキャッシュ
* アプリケーションバックグラウンド化
* 中間データ
* ロギング
* HTML5 データストレージ
* ブラウザクッキーオブジェクト
* サードパーティに送られる分析データ

## 攻撃シナリオの例

**ビジュアルでの例**

iGoat はセキュリティコミュニティがこれらの種類の脆弱性を直に調査するための意図的に脆弱なモバイルアプリです。以下の演習では、資格情報を入力して偽の銀行アプリにログインしています。それから、ファイルシステムを操作します。アプリケーションディレクトリ内に、"credentials.sqlite" というデータベースがあります。このデータベースを調べるとアプリケーションがユーザー名と資格情報 (Jason:pleasedontstoremebro!) を平文で格納していることが分かります。

![Local Data Storage](https://wiki.owasp.org/images/6/6d/Screen_Shot_2012-12-19_at_6.34.23_AM.png) ![Goat Hills Financial](https://wiki.owasp.org/images/9/98/Screen_Shot_2012-12-19_at_6.44.51_AM.png) ![Terminal](https://wiki.owasp.org/images/5/5a/Screen_Shot_2012-12-19_at_10.11.15_AM.png)

## 参考資料

* OWASP
  * [OWASP iOS Developer Cheat Sheet](https://www.owasp.org/index.php/IOS_Developer_Cheat_Sheet)
* その他
  * [Google Androids Developer Security Topics 1](http://source.android.com/tech/security/)
  * [Google Androids Developer Security Topics 2](http://developer.android.com/training/articles/security-tips.html)
  * [Apple's Introduction to Secure Coding](https://developer.apple.com/library/mac/)
  * [Fortify On Demand Blog - Exploring The OWASP Mobile Top 10: Insecure Data Storage](http://h30499.www3.hp.com/t5/Application-Security-Fortify-on/Exploring-The-OWASP-Mobile-Top-10-M1-Insecure-Data-Storage/ba-p/5904609)
