2012年11月1日木曜日

secroidのBashful Clockに関する記述について

secroidは、ネットエージェント株式会社が公開しているユーザーにとってのリスクレベルと内容の情報をアプリごとに公開しているサイトです。

まだベータ版だそうで、検索がおかしいらしくアプリ名で探しても見つからなかったのですが、グーグルで「secroid <パッケージ名>」を検索したらBashful Clockのページを見つけました。

これを書いている11/01現在、secroidが検査してくれたのはバージョン2.0.4のようです(11/01の最新版は2.1.2)。しかしまあ、権限や操作している中身は大差ないので、バージョンが最新版であろうと結果は同じだと思います。

ユーザーの視点からすれば、secroidの取り組みは有用ですが、過信は禁物です。「HIGH」とかはちょっと要求パーミッションが多いと簡単につくっぽいですし。ですが、一応中身も見て「広告があるよ」とか「アプリ内で使ってるよ」とか教えてくれるようなので、一つの参考資料にはなると思います。

secroidの内容を鵜呑みにすると、Bashful Clockは「若干インストールするのをためらってしまうアプリ」になってしまいます。そこで、悪意あることはしてないですよってことで、Bashful Clockについてsecroidに書かれていることに対する説明をしておこうというのが、この文章の主旨です。

なお、これはあくまで自己申告です。嘘をつく気はありませんが、それを信用するかどうかは皆さん次第です。信用できないと思うようでしたら、僕の作ったアプリの使用を取り止めてください。


「このアプリに潜むリスク」について

取り上げられているのは以下の三項目です。

  • SDカードの内容を読んでいます
  • バックグラウンドで動作します
  • レシーバを登録します

SDカードの読み込み

secroidには「目的:不明」「送信先:不明」と書いてあります。どういう原理でこれを不明としたのかちょっとわからないんですが、ユーザーとしては不安ですよね。

目的は「自前フォントファイルの読み込み」と「バックアップファイルの読み込み(と書き込み)」です。それ以外には何もしていません。

また、仮にそれ以外のファイルを読み書きしていても、そこで得た情報を外部に送信することはたぶん不可能です。現在僕は、インターネット権限を持ったアプリを公開していません。

バックグラウンドで動作

これは言うまでもないですが、時計を自動表示するためのサービスのことです。画面点灯やロック解除を検知するためには、バックグラウンドにサービスを常駐させる必要があります。

レシーバを登録

これも「目的:不明」「送信先:不明」になってるんですよね。なんでかなあ……。

レシーバーは、静的に登録しているのが一つ、動的にが四つです。動的にってのは、前述のサービスによって登録したりしなかったりしてるってことです。詳細は別ページをご覧ください。Androidユーザー向け 「何となくわかるレシーバー講座」

まず静的なやつ、これはBOOT_COMPLETEDです。端末の起動完了を検知して、時計の自動表示機能が有効になっている場合、サービスを開始するために使用します。BOOT_COMPLETEDAndroidManifest.xmlに書かれています。

動的なやつは、まず時計更新用にACTION_TIME_TICK。これは、一分おきにOS側が通知を出してくれるやつです。秒表示ありのときはタイマーで1000ミリ秒ずつ更新してるんですが、秒表示なしのときはACTION_TIME_TICKを受信することでバッテリー負荷を抑えています。

次にACTION_BATTERY_CHANGED。これは、ベータ機能であるバッテリー残量表示のために使用します。これを登録することで、現在のバッテリー残量を取得できます。

残り二つはACTION_SCREEN_ONACTION_USER_PRESENT。それぞれ「スクリーンオン」と「ロック解除」を検知します。

「アクセス許可」について

  • 自動起動。起動完了の受信
  • USB ストレージのコンテンツの変更/削除、SD カードのコンテンツの変更/削除
  • システムレベルの警告の表示

自動起動とSDカード読み書きについては説明済みですね。USBストレージってのはちゃんと調べていませんが、SDカード書き込み(android.permission.WRITE_EXTERNAL_STORAGE)の権限が内包しているんだと思います。

システムレベルの警告について。secroidには「システムの警告ウィンドウの表示をアプリに許可します。この許可を悪意のあるアプリに利用されると、画面全体が乗っ取られる恐れがあります。」と書かれています。この項目については別ページに詳しい説明を書きましたので、興味のある方は読んでください。Androidユーザー向け 「何となくわかる表示レイヤー講座 ~オーバーレイ表示の仕組み~」

Bashful Clockでは、時計表示にはシステムオーバーレイを使っています。「タップで終了する」が有効になっている場合は、システムアラートを使って時計と同じ大きさの透明なビューを表示させています。こうすることで、「ロックが解除された後なら触れば終了する」時計が表示できるってわけです。


個人的には、「このアプリに潜むリスク」にオーバーレイに関する記述がないのが疑問ですね。レシーバの登録なんかよりよっぽど重要だと思うんですけど……。

とりあえず説明は以上です。何か質問などありましたらご連絡ください。

0 件のコメント:

コメントを投稿