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

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
発行:インプレスジャパン

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30