androidセキュリティの今・昔 - jssec2017/02/08  · 1 androidセキュリティの今・昔...

37
1 Androidセキュリティの 今・昔 2017/2/28() JSSECセキュリティフォーラム2017 ベルサール神田2階 イベントフォール 15:0015:45 T3<技術部セッション3> タオソフトウェア株式会社 代表取締役 谷口岳 @tao_gaku

Upload: others

Post on 18-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

1

Androidセキュリティの今・昔

2017/2/28(水) JSSECセキュリティフォーラム2017

ベルサール神田2階 イベントフォール

15:00~15:45 T3<技術部セッション3>タオソフトウェア株式会社

代表取締役

谷口岳

@tao_gaku

Page 2: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 2

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

代表取締役 谷口岳

2005年創業、Android関連システム受託開発

Google Playにアプリを多数公開

ブログにて開発者向け情報を発信(昔)

雑誌執筆、講演

セキュリティ色々

自己紹介

Page 3: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 3

自己紹介

タオバイザー3DVRゴーグル

• クラウドファンディングで資金調達

• http://taovisor.com

Page 4: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 4

2012年1月1日発刊

開発者向け

出版社:インプレスジャパン

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

Page 5: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 5

RiskFinder アンドロイドアプリの脆弱性発見ツール

APKファイルをアップロードするだけで脆弱性レポートが作成されます。

1. プログラマでなくても使える2. ソースコード不要3. ウエブサービス型4. 脆弱性以外も検出

講演をする中で、「気を付ける事が沢山あるのは分かった。でも全てのプログラマが理解するのは

難しい何かいい方法はないか?」という声があったので作ってみました。

Page 6: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved.©Taosoftware, inc. All rights reserved.

アンドロイドセキュリティの

今・昔

Page 7: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 7

Androidアプリは、セキュリティ的に問題が多いと言わ

れ2012年にはIPAテクニカルウオッチ「Androidアプ

リの脆弱性」に関するレポートが公開されました。

Androidは毎年バージョンアップされ、色々な問題が解

決されてきました。Androidアプリが陥りやすかった過

去の問題は最新のOSではどのようになっているのか、

どのように解決されているかを解説し、また小粒な新

しいセキュリティに関する機能に関してもご説明致し

ます。

Androidセキュリティの 今・昔

Page 8: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 8

「Androidアプリの脆弱性」

IPAテクニカルウオッチ

IPAテクニカルウオッチ「Androidアプリの脆弱性」

https://www.ipa.go.jp/about/technicalwatch/20120613.html

2012年6月13日

IPAに届け出られるAndroidアプリの脆

弱性関連情報が2011年後半から増加し

ていることを踏まえ、それらを分析して

脆弱性を作り込みやすいポイントをまと

め、技術レポート「IPAテクニカル

ウォッチ」として公開しました。

20ページと少ないが重要な事項を抽出

している。

Page 9: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 9

2012/1/1

Android Security安全なアプリケーションを作成するために発刊(タオソ

フトウェア)

2012/6/1

Androidアプリのセキュア設計・セキュアコーディングガイド(JSSEC)

2012/6/13

IPAテクニカルウオッチ

2015/5/25

IPA Androidアプリの脆弱性の学習・点検ツールAnCoLe

https://www.ipa.go.jp/security/vuln/ancole/

2017/2/8

今日

2012年~

Page 10: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 10

2011年02月 Android3.0端末リリース

2011年11月 Android 4.0端末リリース

2012年07月 Android 4.1端末リリース

….

2016年10月 Android 7.0端末リリース

現在 Android 7.1.1

アンドロイドは大きく変化

Page 11: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

11©Taosoftware, inc. All rights reserved.

IPAテクニカルウオッチの

振り返り

Page 12: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 12

簡易チェックリスト

Page 13: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 13

1.ファイルのアクセス制限

SDカードに機微な情報を保存しない

必要に応じて、SDカードに保存するデータを暗号化する

ファイル作成時に、ファイルのアクセス許可を適切に設定する。

2.コンポーネントのアクセス制限

アクティビティやサービスに対してアクセス制限をかける

コンテントプロパイダに適切なアクセス制限をかける

3.ログ出力の内容

デバックログに機微な情報を含めない

インテントを送信する際のパラメータに機微な情報を含めない

4.アプリの権限

必要以上に権限を要求しない

簡易チェックリスト

Page 14: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved.©Taosoftware, inc. All rights reserved.

1.ファイルのアクセス制限

Page 15: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 15

要求と問題点

連携するアプリとデータのやり取りがしたい

他のアプリから参照可能になる

良くわからないのでソースコードをコピペ

そのまま動いてしまうので脆弱性となる

サイズの大きなファイルをSDカードに置きたい。

他のアプリから参照可能になる

端末の写真データをアプリで使いたい。

外部ストレージ全アクセス権限が必要で怪しくなる

ファイルのアクセス制限

Page 16: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 16

ファイルでのデータ連携は禁止

Android OS 4.2 (API level 17)

openFileOutput(),getSharedpreferences()等のファイ

ル作成メソッド引数変更

MODE_WORLD_WRITEABLE,

MODE_WORLD_READABLE 非推奨

SharedPreference Class

名前はShareだけどShare機能はなくなった。

連携するアプリとのデータのやり取り1

Page 17: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 17

Android 7.0 (API level 24)

MODE_WORLD系使用時は、SecurityExceptionとなる。

ファイルでは、データの連携できなくなった。

ContentProvider,FileProviderを利用するというルール

連携するアプリとのデータのやり取り2

Page 18: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 18

ディレクトリ移動も制限

従来

パッケージディレクトリのアクセス許可:

751

所有ユーザ:rwx、所属グループ:r-x、その他のユーザ:--x

Android 7.0(API Level 24)

パッケージディレクトリのアクセス許可

700

所有ユーザ:rwx、所属グループ:---、その他のユーザ:---

連携するアプリとのデータのやり取り3

Page 19: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 19

WRITE_EXTERNAL_STRAGEの問題

Android 1.5(API Level 3)

アプリから外部ストレージアクセスし放題

ユーザの写真、データが改変、読み取り可能

Android 1.6(API Level 4)

WRITE_EXTERNAL_STARAGE追加、この権限がないと外部スト

レージに書き込みできない。

読み込みは権限関係なく可能→ユーザの写真が自由に読み取り可能

Android 4.1(API Level 16)

READ_EXTERNAL_STRAGE仮追加

多くのアプリがWRITE_EXTERNAL_STRAGEを持つよう

になり意味がなくなってきた

外部ストレージの仕様変更

Page 20: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 20

アプリ専用外部ストレージエリア導入(権限なく特定の領域は外

部ストレージアクセス可能)

Android 4.4(API Level 19)

ExternalAppDirに書き込みを行う際、WRITE権限が不要。

例) storage/sdcard0/Android/data/com.example/files

キャッシュや巨大なデータを保存するのにWRITE権限は必要ではなくなっ

た。

READ_EXTERNAL_STRAGE追加、この権限がないと外部スト

レージの読み込みはできない(WRITEがあればできる)

写真にアクセスしたいだけなのに、

WRIE_EXTERNAL_STRAGEが必要な問題はそのまま

サイズの大きなファイルをSDカードにおきたい

Page 21: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 21

Android7.0(API Level 24)

Scoped Directory Access

従来のパーミッションモデルとは異なるが、実行時にユーザに特定

のディレクトリにアクセスしても良いか問い合わせる仕組み

写真データに怪しまれずにアクセスしたい

タイプ 説明

DIRECTORY_MUSIC 一般的な音楽ファイルの標準ディレクトリ

DIRECTORY_PODCASTS ポッドキャストの標準ディレクトリ

DIRECTORY_RINGTONES 着信音の標準ディレクトリ

DIRECTORY_ALARMS アラーム音の標準ディレクトリ

DIRECTORY_NOTIFICATIONS 通知音の標準ディレクトリ

DIRECTORY_PICTURES 画像ファイルの標準ディレクトリ

DIRECTORY_MOVIES 動画ファイルの標準ディレクトリ

DIRECTORY_DOWNLOADS ユーザがダウンロードしたファイルの標準ディレクトリ

DIRECTORY_DCIM カメラによる画像・動画ファイルの標準ディレクトリ

DIRECTORY_DOCUMENTS ユーザによって作られたドキュメントの標準ディレクトリ

Page 22: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 22

外部ストレージの問題は、ほぼ終了

Android 7.0でWRITE_EXTERNAL_STRAGEを利

用する必要は殆どなくなった。

2年ほどすれば、WRITE_EXTERNAL_STRAGEを

持っているアプリは怪しいと言える環境が出来上がる

はず。

外部ストレージ問題

Page 23: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved.©Taosoftware, inc. All rights reserved.

2.コンポーネントのアクセス

制限

Page 24: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 24

問題点

アクティビティやサービスを他のアプリからアクセス可能に

なることを知らずに、アクセス可能な実装してしまう。

コンテントプロパイダーを他のアプリからアクセス可能な実

装してしまう。

コンポーネントのアクセス制限

Page 25: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 25

Acrivityに関するAndroidの仕様変更は特になし。

基本export=false

アクティビティ

Page 26: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 26

明示的Intentを使うルール変更

Android 5.0 (API level 21)

Serviceの仕様を変更

startService

intent-filterは利用しない事を推奨

bindService

Bindサービス時ににIntent-Filterを使用すると、

IllegalArgumentExceptionが発生

サービス

Page 27: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 27

外部連携のためではなく、自アプリのデータベースへ

のアクセス手法として実装する例が多い。

デフォルトがtrueになっていたので多くのアプリが

ContentProvider公開設定になっていた。

Android 4.2 (API Level 17)

exportのデフォルトがtrueからfalseに変更

コンテントプロパイダーのアクセス

Page 28: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved.©Taosoftware, inc. All rights reserved.

3.ログ出力の内容

Page 29: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 29

• デバッグログをそのままにしてしまう問題

• インテント内容がデバッグログに出力される問題

Android4.1 (API Level 16)

自分自身のログのみ参照可能に仕様変更

システムログ、他アプリのログが参照不可能になった

ログの出力

Page 30: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved.©Taosoftware, inc. All rights reserved.

4.アプリの権限

Page 31: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 31

必要以上に権限を要求しない

何も考えずにアプリの権限をどんどん付けてしまう。

Android 6.0 (API Level 23)

Runtime Permission

インストール時ではなく、実行時に権限を確認するため、不

必要な権限は使用されない。

権限取得ダイアログを実装する必要があるため、権限取得に

慎重になる。

アプリの権限

Page 32: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

32©Taosoftware, inc. All rights reserved.

まとめ

Page 33: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 33

ファイルのアクセス制限

SDカードに機微な情報を保存しない

必要に応じて、SDカードに保存するデータを暗号化する

ファイル作成時に、ファイルのアクセス許可を適切に設定する。

コンポーネントのアクセス制限

アクティビティやサービスに対してアクセス制限をかける

コンテントプロパイダに適切なアクセス制限をかける

ログ出力の内容

デバックログに機微な情報を含めない

インテントを送信する際のパラメータに機微な情報を含めない

アプリの権限

必要以上に権限を要求しない

簡易チェックリスト

注意

OK

OK

OK

OK

OK

注意

OK

Page 34: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved.©Taosoftware, inc. All rights reserved.

最近のちょっとした機能

Page 35: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 35

SafetyNet Attestation

システムがRoot化されている、システム自体が改変されて

ているかをチェックする機能

Google Play Serviceにて提供

Googleのサーバと通信してチェックを行う

https://developer.android.com/training/safetynet

/index.html

Root化チェック

Page 36: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved. 36

SafetyNet SafeBrowsing

Googleが常に更新している安全でないウエブサイトのリス

トに対して、URLを渡し確認できる機能

フィッシング詐欺サイト

マルウェアサイト

不要なソフトをホストするサイト

Google Play Serviceにて提供

Googleのサーバと通信してチェックを行う

https://developer.android.com/training/safebrows

ing/index.html

安全でないURLチェック

Page 37: Androidセキュリティの今・昔 - JSSEC2017/02/08  · 1 Androidセキュリティの今・昔 2017/2/28(水) JSSECセキュリティフォーラム2017 ベルサール神田2階

©Taosoftware, inc. All rights reserved.©Taosoftware, inc. All rights reserved.

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

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