知っていれば防げたはずのAndroidケーススタディ

2012年3月5日(月)
タオソフトウェア株式会社

1.2 コンテントプロバイダ使用時の典型的な脆弱性

アンドロイドアプリには、アプリケーション内のデータを外部に公開してアプリケーション間で共有する、コンテントプロバイダという仕組みが存在します。コンテントプロバイダはデータベースへの読み書きを行うインターフェースとして作成されることが多く、また開発時の分業にも役立つため、データベースを使用するアプリケーションでは、外部にデータを公開する必要がなくてもコンテントプロバイダを使用しているケースがよく見られます。アンドロイドOSのセキュリティ基本方針は、他のアプリケーションへのアクセスをデフォルトで禁止することですが、コンテントプロバイダは外部にアプリケーションデータを公開するための仕組みなので、他のアプリケーションからのアクセスがデフォルトで可能となっています。このため、データベース内に個人情報などが存在する場合、アクセス制限を適切に行わないと、他のアプリケーションからアクセスされ、情報が漏洩してしまいます。

アンドロイドマーケット上には、電話帳などの個人情報にアクセスしてアプリケーション固有のデータベースに保存しているにもかかわらず、コンテントプロバイダへのアクセスを制限していないものが見受けられます。このような脆弱性を持っていることが第三者にわかってしまうと、この脆弱性を突いた第三者アプリケーションによる個人情報の流出が可能になります。ここでは、第三者アプリケーションがどのようにして情報を取得するかについて説明します。

1.2.1 電話帳データの漏洩例

プログラムA:電話番号からQRコードを作成するアプリ

日本では電話番号を交換する際、赤外線通信を使って電話番号の交換を行うのが一般的です。しかし、アンドロイド端末には赤外線通信機能が付いていないものも多いため、口頭による電話番号の交換の代わりに、電話番号をQRコード化してアンドロイド端末上に表示し、受け取り側のカメラでQRコードを読み込んで電話番号を受け取るという、アプリケーションを経由した方法が存在します。

QRコードアプリ(プログラムA)をインストールすると、「連絡先データの読み取り」パーミッションがあることが表示されます。このアプリケーションは当然電話番号にアクセスする必要がありますし、ネットワーク通信を行うパーミッションもないため、ユーザはプログラムAによって連絡先データがネットワーク経由で収集されることはないと判断し、安心してインストールを行います。ここでは、作者の不注意により、プログラムAは電話帳から電話番号を取得してアプリケーション内のデータベースに名前や電話番号などの値を保存し、コンテントプロバイダで無制限に外部に公開しているものとします(図1-4)。

プログラムB:壁紙ダウンロードアプリ(プログラムAの脆弱性を利用したスパイアプリ)

有名になったプログラムAを調べていて、コンテントプロバイダへのアクセスが可能であることを発見した悪意を持つ第三者は、この脆弱性を利用してユーザの個人情報を盗むプログラムBを作成します。プログラムBはスパイアプリとわからないよう、正しい目的でインターネットにアクセスするように見えるアプリケーションとして、壁紙をダウンロードするアプリケーションを作成します。ユーザがプログラムBをインストールする際には、「ネットワーク通信/完全なインターネットアクセス」パーミッションがある旨が表示されます。壁紙をダウンロードするアプリケーションなのでネットワーク通信は必要であり、個人情報へのアクセス権限は持っていないので、ユーザは安心してインストールを行います(図1-5)。

図1-4:プログラムAのパーミッション(クリックで拡大) 図1-5:プログラムBのパーミッション(クリックで拡大)

しかし、このプログラムBは壁紙をダウンロードするだけでなく、プログラムAのコンテントプロバイダから名前や電話番号などの個人情報を取り出し、自分のネットワークサーバにアップロードします。アンドロイドでは、アプリケーションプロセスが他のアプリケーションから守られているため、他のプロセスからはプログラムBがどのようなデータを送信したのかわかりません。セキュリティソフトウェアをもってしても、これらの動作を検知することはできません。

図1-6:電話帳データの流れ(クリックで拡大)

プログラムAの脆弱性により、ユーザは個人情報を抜き取られてしまいます。このような仕組みによってデータを抜き取られる可能性があることはあまり知られておらず、アンドロイドアプリの開発経験を積んだ技術者だけが把握しているのが現状です。この問題についての対策は、個人データにアクセスするコンテントプロバイダに適切なアクセス制限をかけるだけですが、コンテントプロバイダの動作の仕組みをよく理解していないと、重大なセキュリティホールを発生させてしまう可能性があるので、注意が必要です。

1.3 まとめ

アンドロイドの基本的な動作を理解していないことが原因で、作成したアプリケーションが意図せず、大きな問題を抱えてしまう可能性があることが理解いただけたでしょうか。次章では、アンドロイドOSがセキュリティを維持するための仕組みについて見ていきます。

この記事のもとになった書籍
Android Security 安全なアプリケーションを作成するために

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

システムの脆弱性を突くスパイウェアの手法を学び、ユーザの個人情報や企業データを情報漏洩のリスクから守る。セキュリティ対策チェックシートや用語集も収録! アンドロイドアプリの開発者が知っておくべき実践ノウハウが満載の一冊です。Android 4.0:Ice Cream Sandwich(APIレベル14)に関する最新情報にも対応!

タオソフトウェア株式会社 著
価格:3,360円 (本体 3,200円+税)
発売日:2012年01月06日発売
ISBN:978-4-8443-3134-6
発行:インプレスジャパン

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

2005年創業の独立系ソフトハウス、代表取締役 谷口 岳
サーバサイドアプリケーション開発会社としてスタート。Google社のアンドロイドに発表当初より着目し、研究開発を開始。現在はアンドロイド専業(受託開発)として、アンドロイド端末上で動作するアプリケーションやアンドロイド端末と連携して動作するサーバ側アプリケーションを数多く手がけている。日経BP社主催Android Application Award 2010 Springにて「tWakeUpCallMaker」が大賞を受賞。2010年5月に、プログラミング不要でアンドロイドアプリを作成できる「DOROKURI」サービスを開始。記事執筆、講演など多数。
ブログ(開発者向け情報を発信)

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています