57
Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り 2012428() 13:10(50) 東海大学高輪キャンパス2号館大講義室 タオソフトウェア株式会社 谷口岳 @tao_gaku 1 © 2012 Taosoftware Co., Ltd. All rights reserved.

Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Androidのセキュリティと品質保証の問題について

第二回Androidテスト祭り

2012年4月28日(土) 13:10(50分)

東海大学高輪キャンパス2号館大講義室

タオソフトウェア株式会社 谷口岳

@tao_gaku

1© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 2: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

タオソフトウェア株式会社

• 日本の会社(Android専業)

• 2005年創業独立系ソフトハウス

• Android発表と共に研究開発を開始

• 現在Android専業(受託開発)

• Androidマーケットにアプリを多数公開

• 日経BP主催 Android Application Awards 2010 Springで大賞受賞

• ブログにて開発者向け情報を発信

– http://www.taosoftware.co.jp/blog/

• 雑誌他執筆、講演

• Twitter @tao_gaku

資料は公開致します。

2© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 3: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Android Security本 (安全なアプリケーションを作成するために)

• 2012年1月1日発刊

• プログラマ向け

• Androidのセキュリティに関してプログラマが注意すべき点を記載

• 資料– http://www.taosoftware.co.jp/android/andro

id_security/

– パワポ資料及びビデオ

• Think IT – 1章、2章、3章を掲載

– http://thinkit.co.jp/book/2012/03/05/3463

• Amazon– http://www.amazon.co.jp/dp/4844331345/

• 電子版(DRMフリー) 達人出版・インプレス– http://www.impressjapan.jp/books/3134

3© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 4: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

tSpyChecker

• スパイウェア検出を手助けするアプリです。(無料)

• Google Play で「taosoftware」で検索すると探しやすいです。

4© 2012 Taosoftware Co., Ltd. All rights reserved.

アプリ一覧 詳細表示

•パーミッションの組み合わせにより危険と表示•実際は危険じゃないかもしれない

•権限説明をわかりやすくした(つもり)

Page 5: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

あのテスト祭りが帰ってきた!今度は上層!

• 上層って何よ!• Androidのセキュリティと品質保証の問題について

– セキュリティは設計段階から

• 受託開発– 発注側がAndroidに詳しくない(最近はよくなってきたが。。)– 仕様を受託側で決める必要がある。– 落ちるプログラムは少なくなってきた。– しかし、外から見ただけでセキュリティ的にまずいとわかるアプリが多い

• 設計– Androidのセキュリティの仕組みを知らないと、そもそも設計できない

5© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 6: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

何をまもるのか?

6© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 7: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

どれぐらい守るのか?

• このソフトは100%安全ですとは言えない

– 「Hello world 」を除く

• ソフト開発は、開発する物によって、いろいろ変わる。

– 命に関わること

– お金に関わること(銀行とか)

– 有料ソフト、無料ソフト

– 趣味のプログラム

7© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 8: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

何を守るのか?

• 守る必要のない物を守っても意味がない

1. アプリケーション内の著作物データ

• 画像、動画、音声、文字列

2. アプリケーションの不正利用(ライセンス違反)

3. アプリケーション機能の悪用

4. 使用者の個人データ、プライバシーデータ

8© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 9: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

• アプリケーション内のデータは総て簡単に抜き取り可能

1. PCと接続してAPKファイルの吸出し

2. Android端末上でAndroidアプリによる

リソースの吸出し

9© 2012 Taosoftware Co., Ltd. All rights reserved.

1.アプリ内の著作権データを守る

ドコモ応援学割アプリ

Page 10: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

1-1 PCと接続してAPKファイル吸出し

• APKファイルは実はZIPファイル– 拡張子を変えて解凍すると構成ファイルを取り出すことができる。

• APKファイルの構造

10© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 11: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

1-2 Android上でアプリによるリソースの吸出し

• PCと接続しなくてもアプリのリソース情報を取得できる– アプリケーション内に同梱されているデータは、全て取得可能

11© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 12: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

tPackageExplorer

• Androidアプリケーションのリソース情報を確認するアプリケーションです

– https://market.android.com/details?id=jp.co.taosoftware.android.packageexplorer

– Google Playで「taosoftware」で検索

12© 2012 Taosoftware Co., Ltd. All rights reserved.

アプリ一覧 AndroidManifest.xml アプリ内画像の表示

Page 13: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

デモ

13© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 14: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

ソースコード解析

• Javaで書かれているAndroidアプリケーションはソースコード解析が簡単– ツールも出回っており、解析を防ぐ事はできない

– 簡単な手順で解析、改ざんが可能

1. APKファイル取得

2. apktoolでデコード(smaliファイル生成)

3. smaliファイルを改ざん

4. apktoolでAPKファイルを再構築

5. Jarsignerで署名(改ざんAPKファイル完成)

– root化などの特殊な処理は必要ない

– Proguard等の難読化ツールで時間稼ぎ

– NDKにコードを移動(完全ではない)

14© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 15: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

• 前提

– アプリケーション内のデータは総て簡単に抜き取り可能

• 対策

– アプリケーション内には、コピーされると困るファイルは置かない。

– パスワード等をリソース、コード内に格納しない。

– 抜き取られても良い品質のファイルにする。(低画質、低画質)

– 暗号化した画像ファイルを入れる(あまりよくないけど)

– データはサーバーから持ってくる。

– DRM使う?

– 有償ツール使う?

• 結論

– どれぐらいのレベルでデータを守るかによって実装方法が異なる。

– 厳密にすればするほどお金がかかる。

15© 2012 Taosoftware Co., Ltd. All rights reserved.

1.アプリ内の著作権データを守る(まとめ)

Page 16: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

著作権データの取り扱いの実情

• 実は権利データを持っている人たちの認識がかなりゆるくなっています。

• 説得方法

– 応援学割等メジャーソフトの実装を見せる。

– 拡張子がPNGやGIFじゃなければ問題とならない例もある。

– 画面キャプチャされてしまえば同じ。

16© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 17: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

2.アプリケーションの不正利用

• 有料ソフトを別の人が有料・無料で配布– A) コピー防止インストール

– B) Google Play Licensing Service

17© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 18: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

3.アプリケーション機能の悪用

• 第三者アプリが悪さをしてユーザに迷惑がかかる

• 例– 電話をかけるアプリ

– 電話をかけるロジックが外部から使用可能(チェック機能なし)

– 他のアプリから権限なしで電話をかけほうだい(ダイアルQ2?)

18© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 19: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

• ネットワークへのアクセス権限を持たないアプリケーションによって、twiccaの権限で画像ファイルをアップロードされる可能性があります。(バージョン 0.7.0 から 0.9.30 まで)

• 修正済み

19© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 20: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

対策

• Androidのセキュリティモデルに従って実装– 危ない機能は外部から呼び出し禁止にする。

– 危ない機能を外部から呼び出し可能にする時

• 権限を要求

• 呼び出し元の確認

• 上記2つは後ほど解説します。

20© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 21: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

4.使用者の個人データ、プライバシーデータ

• 原因– 流出させようと思うわけない→(バグ、知識不足)

– Java書けるよ、プログラミングできるよ!

– Android簡単だよ

• 対策– Androidのセキュリティモデルの理解が必要

• ファイルパーミッション

• Androidのパーミッション

• 証明書

21© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 22: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Androidのセキュリティ構造

22© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 23: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Androidコンポーネント図

23© 2012 Taosoftware Co., Ltd. All rights reserved.

アプリのセキュリティ

端末のセキュリティ

Page 24: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

基本的な構造

• 署名– 自己証明書を使用

– アプリケーション作者の識別

– アプリケーション間の信頼関係確認に使用

• ファイルパーミッション、ファイルオーナ– インストールされたアプリケーションは、個別のIDが付与される

– LinuxのユーザID、グループIDに相当するもの

– アプリケーションはお互いのデータに直接アクセスすることはできない。

• パーミッション– アプリケーションパーミッションを持っていない。

– アプリケーションが使用したい機能を宣言するのが基本

– マニフェストファイル上に宣言する

24© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 25: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Androidパーミッションとファイルパーミッション

25© 2012 Taosoftware Co., Ltd. All rights reserved.

Linux File system user ID: 1111

DBFIle

PRIFFIle FIle

Linux ファイルパーミッション

Linux Process user ID: 1111

Dalvik Virtual Machine

Application A

App Sandbox:

Linux Process user ID: 2222

Dalvik Virtual Machine

Application B

App Sandbox:

カメラ

ネットワーク

電話

センサ

Android

パーミッション

証明書

Page 26: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

ファイルパーミッション

26© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 27: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

• 事件の概要

– 2011年4月16日 Android版 Skypeに個人情報を取得できる脆弱性発見

– 登録した個人情報、コンタクト、チャット履歴が閲覧可能な状態になっていた。

– 4月21日に修正完了

• 原因

– 設定ファイル、データベースのアクセス権限設定ミス

– Windowsからの移植っぽい

• Windowsだと同じユーザがインストールした他のアプリから参照可能

• Androidだとだめ

– 凡ミス

やっちゃった(1)

27© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 28: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Androidのファイル

• Androidで作成されるファイル

– プレファレンスファイル

– データベースファイル

– 自分で作成するファイル(いつものJava)

• ファイルを作成する場所

– アプリケーションデータディレクトリ

– 外部記憶装置(SD)

• ファイルアクセス

– Linuxと同じ

– ファイルオーナー

– ファイルパーミッション

28© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 29: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

ファイルパーミッション

• ファイルパーミッション

– Linuxのファイルパーミッションと同じ

– 自分自身のみ読み書き可能、他のアプリからの読み込み、書き込み可能等を指定できる

• ファイル共有方法– A) ファイル作成時にファイルパーミッションを指定

– B) 同じユーザIDをアプリケーションに割り当てる

• この場合は同じ証明書で署名されていることが必要

• 互いの全データにアクセス可能になる

29© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 30: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

アプリケーションデータディレクトリ

• アプリケーションデータディレクトリ

– /data/data/パッケージ名ディレクトリ

– 各アプリケーションが作成するファイル、ディレクトリに対して、他のアプリケーションからのアクセスは制限される

– ディレクトリの所有者読み込み、書き込み、実行

– グループ読込み、実行

– その他実行

30© 2012 Taosoftware Co., Ltd. All rights reserved.

drwxr-x--xapp_38 app_38 2011-07-13 04:25 jp.co.taosoftware.android.test1

Page 31: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

外部記憶装置

• Androidスマートフォンの場合、SDカードであることが多い

• パーミッション– Androidは書き込み用のパーミッションだけ定義されている(WRITE_EXTERNAL_STORAGE )

– 読むだけならパーミッション不要

• ファイルパーミッション– アプリケーションから外部記憶装置へファイルを書きだした場合、ファイルのオーナはsystem、グループはsdcard_rwが設定される。

– アプリケーションディレクトリにファイルを書きだした場合と異なり、どのアプリケーションがファイル出力を行ってもオーナとグループは同じ値となる

– アプリケーション毎にファイルやディレクトリのアクセス制御を行うことはできない

– 外部記憶装置のファイルやディレクトリは全てのアプリケーションがアクセス可能であることを意味する

31© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 32: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

対策

• 特殊な事はしない

• SDカードに書き込むデータは抜き取られても良いデータのみにする。

32© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 33: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Androidのパーミッション

33© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 34: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

やっちゃった(2)

• 事件の概要– 他のアプリケーションからデータベースに変更を加え、Dropboxの公開用フォルダである「Public」フォルダにDropboxのアカウント情報が含まれている設定ファイルをアップロードさせたりすることが可能。

• 原因– ContentProviderは外部にデータを公開する仕組みなので、みんなに公開するがデフォルト値

– android:exported=“false”を指定する必要があった。

• 詳しくは– ContentProviderのアクセス範囲 – Dropboxにおける脆弱性の修正

• http://codezine.jp/article/detail/6286

34© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 35: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

パーミッションの利用宣言

• OS(または他のアプリケーション)が提供

する機能を使用するためにはパーミッションの宣言が必要。

– アプリケーションがどのような機能を使用しているのかが静的に把握できる。

• インストール時にユーザはアプリケーションの機能を確認してインストールの続行/中断を選択できる機会を与えられている。

• AndroidManifest.xmlに<uses-permission>を記載

35© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 36: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

パーミッションによるコンポーネントへの利用制限

• アプリケーションの機能が外部から使用されないように守る仕組み

• 以下のコンポーネントはパーミッションで守ることが可能– Activity

– Service

– Broadcast Receiver

– Content Provider

– マニフェスト内にパーミッションを記述することで実現

– 指定されたパーミッションを持っていないコンポーネントからのアクセスを拒否

• パーミッションの作成– アプリケーション独自のパーミッションを定義することができる

– 独自のパーミッションを使用すことでコンポーネントをある程度守ることができる

36© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 37: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

パーミッションの相互権限確認

37© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 38: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

パーミッションの定義AndroidManifest.xml

AndroidManifest.xml上で定義するだけで良い。

パーミッションが定義されているコンポーネントにアクセスするためには<uses-permisson>でパーミッションの使用を宣言する必要がある。

<uses-permission android:name ="jp.co.taosoftware.android.co.permission.READ_DATA"/>

<permission android:name ="jp.co.taosoftware.android.co.permission.READ_DATA”android:protectionLevel="dangerous”android:label="@string/permlab_read_data”android:description="@string/permdesc_read_data”android:permissionGroup="android.permission-group.COST_MONEY”

/>

38© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 39: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

パーミッションのプロテクションレベル

値 説明

normal 低リスク権限の時使用

protectionLevelの記載をしないとこの値になるアプリケーション情報画面にて、「すべて表示」を選択すると表示される

dangerous 危険とみなす権限に付加する

アプリケーション情報画面にて、表示されユーザにインストール時の許可を得たいときに使用する

signature 同じ署名のみ許可

権限を要求する側と、権限を要求される側が同じ署名を持つアプリケーション間で権限の許可をしたいときに使用するアプリケーション情報画面には表示されない

signatureOrSystem サードパーティアプリでは使用しない

39© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 40: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

独自に定義したパーミッションの注意

1. パーミッションは、AndroidManifest.xmlに記載される

2. AndroidManifest.xmlは誰にでも見れる

3. 他のアプリが勝手に使うことができる

4. 独自パーミッションはインストール時に表示されない

5. 従って制限になってない

6. 制限をかけるには、signature設定する必要がある

7. Signature設定するには2つのアプリが同じ証明書である必要がある

8. 2つのアプリなら両方に定義する事

結論独自パーミッションは必ずprotectionLevelをsignatureにする。

40© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 41: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

3つのPermission

• Permissionを定義する

– <permission name=“XXX” … />

• Permissionを利用宣言する

– <users-permission=“XXX” … />

• Permissionを要求宣言する

– <activity permission=“XXXX”… />

41© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 42: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

避けたいパーミッションの組み合わせ

42© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 43: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

tSpyChecker

• スパイウェアを検出する手助けをするアプリです

• https://market.android.com/details?id=jp.co.taosoftware.android.spychecker Google Playで「taosoftware」で検索

43© 2012 Taosoftware Co., Ltd. All rights reserved.

アプリ一覧 詳細表示

•パーミッションの組み合わせにより危険と表示

•実際は危険じゃないかもしれない

•権限説明をわかりやすくした(つもり)

Page 44: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

避けたいパーミッションの組み合わせ

• READ_CONTACTS + INTERNET– INTERNETパーミッション

• データを端末から悪いサーバに送る事ができる。

– READ_CONTACTS• 電話帳データを見ることができる。

– INTERNET+READCONTACTS = 友達の名前と電話番号が収集される

• READ_PHONE_STATE + INTERNET– READ_PHONE_STATE

• IMEI (端末識別番号)の取得に多く使われている

• 端末の電話番号を取得できる。

• 実はかかってきた電話番号もわかる

– 安易に使わないで

• 他にもある

• 広告の掲載にはINTERNETパーミッションが必要だが、スパイウエアと間違われる可能性がある。良く考えてください。

44© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 45: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

インテント

45© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 46: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

インテント使用時の注意点

• ActivityManagerログに注意– ActivityManagerはアクティビティに送られたインテントの内容をLogCatに出力する

– LogCatを監視するプログラムを常駐させることで、アプリーションがアクティビティの起動に使用しているインテント内容を簡単に取得できる

46© 2012 Taosoftware Co., Ltd. All rights reserved.

ActivityManager(1075): Starting activity: Intent { dat=http://www.taosoftware.co.jp/android?user_id=112233&pass=445566&[email protected]=jp.co.taosoftware.android.sb.intenttest/.IntentReceive (has extras) }

ブラウザへのアクセス

Page 47: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Android標準アプリと連係する際の注意

• OSによるインテントデータの隠蔽– URIのスキームがsms:とtel:の場合

– ActivityManagerはLogCatへの出力を隠蔽する(Android2.3から)

• 隠蔽されないケース– メール送信

• メールアドレスがLogCatに出力される

ActivityManager(10871):Starting: Intent { act=android.intent.action.DIALdat=tel:xxx-xxx-xxxxcmp=android/com.android.internal.app.ResolverActivity }

47© 2012 Taosoftware Co., Ltd. All rights reserved.

ActivityManager(10871):Starting: Intent { act=android.intent.action.SENDTOdat=mailto:[email protected]=0x3800000 cmp=com.google.android.gm/.ComposeActivityGmail (has extras) }

電話をかける時

メールを送る時

Page 48: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Android標準アプリと連係する際の注意(続き)

• 隠蔽されないケース(続き)

– ブラウザ起動

• 遷移先のURLがLogCatに出力される

– Googleマップ

• 位置情報がLogCatに出力される

48© 2012 Taosoftware Co., Ltd. All rights reserved.

ActivityManager(10871):Starting: Intent { act=android.intent.action.VIEWdat=geo:0,0?q=Tokyo flg=0x3800000 cmp=com.google.android.apps.maps/com.google.android.maps.MapsActivity }

ActivityManager(215): Starting: Intent { act=android.intent.action.VIEWdat=http://www.taosoftware.co.jp/android?user_id=112233&pass=445566&[email protected]=0x3800000 cmp=com.android.browser/.BrowserActivity }

ブラウザへのアクセス

地図へのアクセス

Page 49: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

インテントまとめ

• インテント内のデータは他のアプリから取得可能と考える

– AndroidManifestからインテントの情報がわかる

– LogCatによる出力

– 起動中のActivityが受け取ったIntentを取得するAPIがある

– Extraデータも、Intentオブジェクト取得できれば簡単に取得可能

• 対策– インテントにはセキュアなデータは含めない

• 他の方法で渡す

– 次案で、インテントデータの暗号化

49© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 50: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

アクティビティ、サービス、ブロードキャストレシーバ

50© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 51: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

AndroidManifest.xml セキュリティ設定

• android:enabled– falseを設定した場合、アプリケーション自身からも使用不可能になる

• android:exported– falseを設定した場合、他のアプリケーションから使用不可能になる

– 自分自身かsharedUserId指定によって、同じユーザIDを持っているアプリケーションのみアクセス可能となる

– IntentFilterが設定されている場合で、指定しない場合はtrue

– IntentFilterが設定されていない場合で、指定しない場合はfalse

• android:permission

– このパーミッションを持っているアプリケーションのみ、このコンポーネントにアクセスすることができる。

51© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 52: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

コンテントプロバイダ

52© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 53: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

コンテントプロパイダのEXPORTEDに注意

• android:exported– falseを設定した場合、他のアプリケーションから使用不可能になる

– 注意:OSのバージョンによるExport値の動作の違い

OSバージョン Exportedにfalseを設定した時に外部からのアクセスが可能かどうか

1.6(API Level4) 可能

2.1(API Level 7) 可能

2.2(API Level 8) 可能

2.3.1(API Level 9) 不可

2.3.3(API Level 10) 不可

3.0(API Level 11) 不可

3.1(API Level 12) 不可

53© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 54: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

パーミッション指定

• android:permission– 宣言しているアプリケーションのみ、コンテントプロバイダへの読み込み、書き込みの両方が可能になる

– 読込みだけを許可する場合はandroid:readPermissionを使用する

– 書き込みだけを許可する場合はandroid:writePermissionを使用する

• android:path-permission– コンテントプロバイダのURI単位でのアクセス権設定

– URI指定と権限の組の形で指定する

• android:grantUriPermission– コンテントプロバイダを提供するアプリケーションが、一時的に特定のアプリケーションに対してアクセスを許可する時に使用する

– falseが指定されている時は<grant-uri-permission>を指定することでより細かい許可指定が可能

• grant-uri-permission– URI単位でのアクセス権設定

– 指定方法はpath-patternと同じ

54© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 55: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

Grant URI Permission一時的に特定のアプリケーションに対してコンテントプロパイダへのアクセスを許可する時に使用

AndroidManifest.xmlにandroid:grantUriPermissionを指定し、インテントを投げるときに,

Intent.FLAG_GRANT_READ_URI_PERMISSIONやIntent.FLAG_GRANT_WRITE_URI_PERMISSIONフラグを指定するだけで、このような特殊なアクセスが可能になる

55© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 56: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

最後に テストに使ってみてください!

• 世界初!ルート化なしで動くパケットキャプチャソフトです。

• 完全無料

• 端末をルート化する理由を一つ減らすのが目的(たぶん)

• ICSでないと動きません(><

• ダウンロード全然延びません

56© 2012 Taosoftware Co., Ltd. All rights reserved.

Page 57: Androidのセキュリティと品質保証の問題について · 2014. 8. 13. · Androidのセキュリティと品質保証の問題について 第二回Androidテスト祭り

ありがとうございました。

第二回Androidテスト祭り

2012年4月28日(土) 13:10(50分)

東海大学高輪キャンパス2号館大講義室

タオソフトウェア株式会社 谷口岳

@tao_gaku

57© 2012 Taosoftware Co., Ltd. All rights reserved.