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

※この記事は、書籍『Android Security 安全なアプリケーションを作成するために』の第1章の内容を、ThinkIT向けに特別にオンラインで公開しているものです。詳しくは記事末尾の書籍紹介欄をご覧ください。現在、アンドロイドOSは携帯電話(スマートフォン)用のOSとして爆発的な普及を見せ

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

2012年3月5日 20:00

※この記事は、書籍『Android Security 安全なアプリケーションを作成するために』の第1章の内容を、ThinkIT向けに特別にオンラインで公開しているものです。詳しくは記事末尾の書籍紹介欄をご覧ください。

現在、アンドロイドOSは携帯電話(スマートフォン)用のOSとして爆発的な普及を見せています。アンドロイドOSはLinuxをベースにしていますが、Linuxのすべての機能が実装されているわけではありません。また、アンドロイドアプリはJavaで開発するのが主流ですが、Javaのすべての機能が使えるわけではありません。一般的なOSとJavaの感覚でアンドロイドアプリを開発してしまうことで、意図せずにセキュリティホールを生み出してしまうことがあります。ここでは、「知っていれば防げたのに」という事例を2つ挙げてみたいと思います。

1.1 Skypeアプリの脆弱性

Skypeとは、インターネットを使って音声通話やビデオ通話等を行うサービスで非常に有名なアプリケーションです。2011年4月16日にアンドロイド版Skypeに個人情報を取得できる脆弱性が発見され、同年4月21日に修正が行われています。

脆弱性により流出する情報:

  • Skypeに登録した個人情報
  • Skypeコンタクト情報
  • チャットの履歴

原因:

  • 設定ファイルとデータベースファイルのアクセス許可がすべてのアプリケーションから読み書きできる状態になっている
  • データが暗号化されずに平文で格納されている

通常のアンドロイドアプリでは、設定情報などを保存するためにプリファレンスを利用する場合は/data/data/<パッケージ名>/shared_prefsディレクトリにファイルが保存され、データベースを利用する場合は/data/data/<パッケージ名>/databasesディレクトリにファイルが保存されます。この場合、保存されたファイルはアンドロイドOSのセキュリティ機能によって保護され、アプリケーションが意図的に公開しない限り、他のアプリケーションからアクセスできないようにアクセス許可が適切に設定されます。

しかしSkypeアプリでは、設定ファイルやデータベースファイルを通常の位置ではなく、独自に生成した/data/data/com.skype.raider/filesディレクトリの下に保存しています※1。アンドロイドOSでは、パッケージ名ディレクトリの下にあるfilesディレクトリは、そのアプリケーションが自由にファイルの入出力を行うことができる場所であり、アクセス許可の設定もアプリケーション自身に任されています。今回の脆弱性は、Skypeアプリがアクセス許可の設定を適切に行っていなかったことが原因で発生しています。

1.1.1 チャット履歴の取得例

com.skype.raiderディレクトリとcom.skype.raider/filesディレクトリのアクセス許可を調べてみましょう。ディレクトリの読み取りは他のアプリケーションに許可されていないため、ここではrootユーザで実行します。

リスト1-1 /data/data/com.skype.raiderディレクトリ

# ls -l /data/data/com.skype.raider/
ls -l /data/data/com.skype.raider/
drwxrwx--x app_158  app_158           2011-07-12 16:42 cache
drwxr-xr-x system   system            2011-07-12 16:33 lib
drwxrwx--x app_158  app_158           2011-07-12 16:29 databases
drwxrwx--x app_158  app_158           2011-07-12 16:44 files
drwxrwx--x app_158  app_158           2011-07-12 16:29 shared_prefs

リスト1-2 /data/data/com.skype.raider/filesディレクトリ

# ls -l /data/data/com.skype.raider/files
ls -l /data/data/com.skype.raider/files
-rwxrw-rw- app_158  app_158     54738 2011-07-03 10:56 shared.xml
drwxrwxrwx app_158  app_158           2011-07-12 19:35 (Skype ID名ディレクトリ(※2))
-rwxrw-rw- app_158  app_158         0 2011-06-30 10:37 shared.lck
-rwxrw-rw- app_158  app_158        16 2011-06-30 10:37 csf
-rwxrwxrwx app_158  app_158   2559052 2011-06-30 10:37 skypekit

設定ファイル/data/data/com.skype.raider/files/shared.xmlがすべてのユーザから読み取り可能であることがわかります。このファイルからユーザのSkype IDを読み取ることができます。アプリケーションがインストールされると、アンドロイドOSによってアプリケーションごとにユーザIDが作成されます。この端末にインストールされたSkypeアプリの場合、ユーザIDは「app_158」です。以降の操作は、「app_158」ユーザ以外の一般的なアプリケーション権限を持つユーザとして実行したものです。

  • ※1 com.skype.raiderはSkypeアプリのパッケージ名。
  • ※2 実際にはSkype IDがディレクトリ名となります。

人気記事トップ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