不正Androidアプリを検知するためのピアグループアナリシス
  • 最小権限の違反を検知
  • 違反レベルに応じて脅威度(severity)をランクづけ

Android Permission

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.app.myapp" >
    // SMS 受信メッセージをモニターする
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    ...
</manifest>


課題

  • ソフトウェアデベロッパー → minimum なPermissionを設定するのがめんどくさい。
  • アプリ利用者 → As studies have shown, most users will nearly always grant a privilege requested by software developer

ピアグループ

  • マーケット上のメタデータ(説明文、アプリカテゴリー、近似したアプリ)から、似たアプリをクラスタリングしたピアグループを作り、
  • 機能を分析
  • 機能ごとにグルーピングされた特権を分析

  • 特権のouter-boundaryを決める
  • 閾値を超えた違反アプリを割り出す
  • これを、Chromeエクテンションx44,000 + Androidアプリ on Google Play Store x 1000000
  • `Our user study confirm that users expect applications to have different privileges based on their functionality. W`
  • . Our goal is to create a safer ecosystem with increased incentives for non-malicious developers to create least-privileged applications.

ピアグループの分類

  • 開発者に提供された分類
  • レコメンデーションによる分類
  • メタデータ(ユーザーレビュー/アプリの説明文)による分類

分類機の生成

  • 教師あり学習
  • Naive Bayes
  • 教師データ: Play Storeからの説明文と開発者によるカテゴリ → 15000
  • テストデータ: 上記のうち6000
  • 60%の精度
  • 教師なし学習
  • Latent Dirichlet Allocation(LDA)
  • クレンジングしたデータ(自然言語処理)
  • 3文字以下の単語を除外
  • 辞書にない単語を除外
  • Genismライブラリを使ってトピックモデリング
  • そこからLDAモデルを作成
  • 教師あり学習を採用!
  • LDAによって生成されたモデルのいくつかが、アプリの機能に関係してないものがあった。
  • マッピングが困難!

権限の解析

  • アプリに利用される権限の見積もり