Skip to main content
QUICK REVIEW

[論文レビュー] Measuring the Declared SDK Versions and Their Consistency with API Calls in Android Apps

Daoyuan Wu, Ximing Liu|arXiv (Cornell University)|Feb 16, 2017
Advanced Malware Detection Techniques被引用数 5
ひとこと要約

本論文は、24,000のAndroidアプリとその実際のAPI呼び出しとの整合性を測る3次元的分析を提案し、宣言されたSDKバージョン(DSDK)を測定する。約1,800のアプリがminSdkVersionが低く設定されているために古いAndroidバージョンでクラッシュする一方、400以上が古くなったtargetSdkVersionのため、リモートコード実行の脆弱性を抱えている。これはSDK宣言の実践における重要な互換性とセキュリティリスクを示している。

ABSTRACT

Android has been the most popular smartphone system, with multiple platform versions (e.g., KITKAT and Lollipop) active in the market. To manage the application's compatibility with one or more platform versions, Android allows apps to declare the supported platform SDK versions in their manifest files. In this paper, we make a first effort to study this modern software mechanism. Our objective is to measure the current practice of the declared SDK versions (which we term as DSDK versions afterwards) in real apps, and the consistency between the DSDK versions and their app API calls. To this end, we perform a three-dimensional analysis. First, we parse Android documents to obtain a mapping between each API and their corresponding platform versions. We then analyze the DSDK-API consistency for over 24K apps, among which we pre-exclude 1.3K apps that provide different app binaries for different Android versions through Google Play analysis. Besides shedding light on the current DSDK practice, our study quantitatively measures the two side effects of inappropriate DSDK versions: (i) around 1.8K apps have API calls that do not exist in some declared SDK versions, which causes runtime crash bugs on those platform versions; (ii) over 400 apps, due to claiming the outdated targeted DSDK versions, are potentially exploitable by remote code execution. These results indicate the importance and difficulty of declaring correct DSDK, and our work can help developers fulfill this goal.

研究の動機と目的

  • 実世界のAndroidアプリにおける宣言されたSDKバージョン(DSDK)の実践を体系的かつ調査すること。
  • アプリが行う実際のAPI呼び出しとDSDKバージョンとの整合性を分析すること。
  • 誤ったDSDK宣言がもたらす実世界の影響を定量的に評価すること、特に実行時クラッシュやセキュリティ脆弱性を含むこと。
  • Android開発における不適切なSDKバージョニングに関連する課題とリスクについての知見を提供すること。

提案手法

  • Google Play、Androidドキュメント、個々のアプリバイナリの3つの次元にわたる分析を通じて、SDKとAPIのマッピングを抽出する。
  • Androidドキュメントを解析し、各APIとその対応するプラットフォームAPIレベルとの包括的なマッピングを構築する。
  • Google Playから抽出した24,000以上のアプリを分析し、重複を避けるために1,300件のマルチ-Apkアプリを除外する。
  • コード内のバージョン依存のif-elseブロックに起因するノイズを低減するために、しきい値ベースのフィルタリング手法を適用する。
  • 宣言されたminSdkVersionを超えるAPI呼び出しを行っているアプリ、および古くなったtargetSdkVersionを有するアプリを特定する。特にaddJavascriptInterface()のようなセキュリティ感受性の高いAPIに注目する。
  • 制御フローアナリシスの限界を脅威として認識するが、ライブラリコードを除外し、誤検出を最小限に抑えるためのヒューリスティクスを適用する。

実験結果

リサーチクエスチョン

  • RQ1実際のAndroidアプリにおいて、minSdkVersion、targetSdkVersion、maxSdkVersionの正しい宣言はどの程度広がっているか?
  • RQ2アプリが宣言されたminSdkVersionを超えるAPI呼び出しを行うと、どの程度実行時クラッシュが発生するか?
  • RQ3古くなったtargetSdkVersionの宣言により、既知のセキュリティ脆弱性にさらされるアプリはどれくらいの数にのぼるか?
  • RQ4誤ったDSDK宣言がアプリの互換性とセキュリティに及ぼす影響はどのようなものか?

主な発見

  • 分析対象アプリの約17%が、targetSdkVersionを宣言していないか、誤って宣言している。
  • 約1,800のアプリが、宣言されたminSdkVersionよりも高いAPIレベルのAPI呼び出しを行っており、古いAndroidバージョンで実行時クラッシュを引き起こしている。
  • 400件を超えるアプリが古くなったtargetSdkVersionの値を有しており、addJavascriptInterface() APIを介したリモートコード実行の脆弱性を抱えている。
  • addJavascriptInterface()を使用するアプリのうち、targetSdkVersion < 17であるため脆弱なのは413件で、そのうち238件はtargetSdkVersionをまったく定義していない。
  • minSdkVersionを超えるAPI呼び出しが5つ以上あるアプリは1,750件、10個以上あるのは692件に上り、これは広範な整合性の欠如を示している。
  • 本研究の結果は、誤ったDSDK宣言がAndroidアプリにおける機能的不安定性とセキュリティリスクの主要因であることを浮き彫りにしている。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。