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

Androidアプリの脆弱性
学習・点検ツール『AnCoLe』(デモあり)
独立行政法人情報処理推進機構 (IPA)
技術本部 セキュリティセンター
谷口 隼祐
Androidアプリの脆弱性とは
Androidアプリの脆弱性とは
• Androidアプリ側の不備によって、データが
窃取できてしまったり、データを改ざんできた
りしてしまうセキュリティ上の問題のこと
• 脆弱性の中には、Android OS が提供する
アクセス制限に関する仕組みを、アプリが適
切に使用することで防げるものがある
3
不正なAndroidアプリと何が違うの?
• 不正なアプリとは、直接悪事を働くアプリのこと
– ユーザを騙して、裏でこっそりとアドレス帳の情報
などを盗んだりする
例:~the Movie、電波改善、電池長持ち
4
不正なAndroidアプリと何が違うの?
• 脆弱性のあるAndroidアプリは、健全なアプリ
だが、攻撃によりデータの漏えいや改ざんの
可能性があるアプリのこと
etc.
5
アプリの脆弱性対策は必要?
• 例えばスマートフォンには、いわゆるプライバシー
に関する情報が蓄積されやすい
• アプリ提供者は、利用者のためにもアプリが保有す
るデータや機能を適切に管理する必要がある
6
アプリの脆弱性対策は必要?
• 複数のアプリをインストールする傾向にある
– Googleの調査によると、インストールしているア
プリの平均数は36(※)
• Google Playだけでなく、独自マーケットや個
人サイトでもアプリを配布可能
• ユーザが、他のアプリを攻撃するアプリを誤
ってインストールする可能性は否定できない
※出典
Our Mobile Planet:日本モバイル ユーザーの実態 2013 年 5 月
http://services.google.com/fh/files/misc/omp-2013-jp-local.pdf
7
Androidアプリの脆弱性例の紹介
最近の
Androidアプリのセキュリティの話題
• CERT/CCにより、SSLサーバ証明書の検証不備がある
アプリが多数公表される(11/18時点で6524アプリ)
• HTTPS通信により本来守られるはずのデータが、中間者
攻撃により盗聴または改ざんされる問題
9
最近の
Androidアプリのセキュリティの話題
• 日本国内向けのアプリも同様の問題あり
– IPAに対しても類似の問題の届出が複数あり、そのうち13ア
プリが修正され、JVNで対策情報を公表
10
他にもあるAndroidアプリの脆弱性
• IPAへの届出は、10月末時点で累計185件
• 様々な種類の脆弱性が届出られている
140件
120件
累計
Androidアプリの届出
Androidアプリの届出累計
169
185
150件
100件
52
80件
100件
60件
117
40件
20件
0件
200件
20
50件
20
32
2011年
2012年
16
2013年
0件
2014年
図.Androidアプリの届出件数の年別推移(2014年9月末時点)
11
届出られる脆弱性の種類
• Androidアプリ特有の脆弱性を含む8種+その他
No. 脆弱性の種類
1
脆弱性等がもたらす想定被害
ファイルのアクセス制限不備
アプリが保有する情報の漏えい、改ざん
2
コンポーネントのアクセス制限不備
3
暗黙的Intentの不適切な使用
アプリが出力する情報の漏えい
4
不適切なログ出力
5
WebViewの不適切な使用
端末内の情報の漏えい、改ざん等
6
SSL通信の実装不備
通信内容の漏えい、改ざん
7
アドレスバーの偽装
フィッシングサイトへの悪用
8
ディレクトリ・トラバーサル
意図しないディレクトリへのファイル設置
12
アプリの脆弱性を悪用するデモ
[デモ]アプリの脆弱性を悪用した攻撃
• アプリの脆弱性を悪用してAndroid端末内の
情報を窃取するデモをお見せします
• 複数のアクセス制限不備に起因する脆弱性
が潜んでいますので、デモ後にそれらの脆
弱性について解説します
14
[デモ1]デモの実施手順
攻撃
15
[デモ2]デモの実施手順
WebViewで
HTML表示
16
デモに含まれていた脆弱性
• 赤字の脆弱性が含まれていた
No. 脆弱性の種類
1
脆弱性等がもたらす想定被害
ファイルのアクセス制限不備
アプリが保有する情報の漏えい、改ざん
2
コンポーネントのアクセス制限不備
3
暗黙的Intentの不適切な使用
アプリが出力する情報の漏えい
4
不適切なログ出力
5
WebViewの不適切な使用
端末内の情報の漏えい、改ざん等
6
SSL通信の実装不備
通信内容の漏えい、改ざん
7
アドレスバーの偽装
フィッシングサイトへの悪用
8
ディレクトリ・トラバーサル
意図しないディレクトリへのファイル設置
17
ファイルのアクセス制限不備
• Androidはファイルへのアクセス許可の設定が
できるが、その設定が緩いことが原因
– デフォルトでは他のアプリからアクセスできないよ
うに設定されている
• アクセス許可を緩く設定してしまうと、想定して
いないアプリからデータにアクセスを許してし
まう
18
対策のポイント
• ファイル作成時に、ファイルへのアクセス許可
を適切に設定する
アプリA
アプリB
ユーザID :app_30
グループID:app_30
ユーザID :app_31
グループID:app_31
アクセス許可
所有ユーザ 所属グループ その他ユーザ
rw-
rw-
---
secret.txt
アプリAの実行ユーザ「app_30」は、ユーザ「app_31」が所有しているsecret.txtファイルへのアク
セスが許可されていないため、アプリAからsecret.txtファイルにアクセスできない
19
コンポーネントのアクセス制限不備
• アプリ間でデータ共有や機能連携ができるが
、その制限が緩いことが原因
• 特定のアプリからのアクセスを許可するつもり
が、制限が緩いと想定していないアプリからデ
ータや機能に不正にアクセスされてしまう
20
対策のポイント
• コンテントプロバイダに適切なアクセス制限を
かける
アプリA
アプリB
Read:OK
Write:NG
公開
データ1
コンテント
プロバイダ
データ2
Read:OK
Write:OK
非公開
データ3
21
対策のポイント
• アクティビティやサービスに適切なアクセス制
限をかける
インテント
カメラアプリ
インターネット
に接続する権
限を持つアプリ
インターネットに接続する権限を持った
アプリに機能の使用を許可する
メールアプリ
公開
メール送信機能
(アクティビティ)
メール送信
非公開
メール受信機能
(アクティビティ)
22
不適切なログ出力
• アプリが出力するデバッグ情報等のログに、
機微な情報を含めていることが原因
• ログ情報は他のアプリからも参照することが
出来るため(※)、ログから機微な情報が漏え
いしてしまう
– ※ Android OS 4.1からは、他アプリのログの参
照に制限がかかるようになった
23
対策のポイント
• ログに機微な情報を出力しないようにする
– デバッグ情報の消し忘れ等に注意する
24
WebViewの不適切な使用
• Androidアプリ内でWebコンテンツを扱うコンポ
ーネント「WebView」の実装方法不備が原因
• ウェブサイトを閲覧しただけで、アプリを不正に
操作され、情報漏えいや情報の改ざんが行わ
れる
25
対策のポイント
• Androidアプリにおいて、信用のおけるコンテ
ンツのみ読み込むように制限する
– Android端末内部の当該アプリが管理する領域
の信頼できるコンテンツに制限する
– 外部サーバからコンテンツを読み込む場合は、
アクセス先のドメインを制限し、通信はHTTPSに
制限する
• そもそもaddJavascriptInterfaceを使わない
26
「AnCoLe」の紹介
脆弱性の学習・点検ツール作りました
• IPAへの届出が多い脆弱性を中心に、Androidアプ
リの脆弱性の対策方法を学べるツールを無償公開
28
学習・点検できる脆弱性の種類
• Androidアプリ特有の脆弱性を含む6種+その他1種
No.
1
脆弱性の種類
脆弱性等がもたらす想定被害
ファイルのアクセス制限不備
学習
可能
○
アプリが保有する情報の漏えい、改ざん
2
コンポーネントのアクセス制限不備
○
3
暗黙的Intentの不適切な使用
○
アプリが出力する情報の漏えい
4
不適切なログ出力
○
5
WebViewの不適切な使用
端末内の情報の漏えい、改ざん等
○
6
SSL通信の実装不備
通信内容の漏えい、改ざん
○
7
アドレスバーの偽装
フィッシングサイトへの悪用
ー
8
ディレクトリ・トラバーサル
意図しないディレクトリへのファイル設置
ー
29
動作デモ
30
まとめ
• IPAでは、情報セキュリティの普及・啓発の一環とし
て、下記のような活動を実施しています
– 脆弱性情報の受付
– 脆弱性の対策情報の公表
– 情報セキュリティの施策実施に役立つツールの提供
• 自組織のセキュリティ向上に、IPAの情報やツール
の利用をご検討ください
31
https://www3.jitec.ipa.go.jp/JitesCbt/
32