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)|2017. 02. 16.
Advanced Malware Detection Techniques인용 수 5
한 줄 요약

이 논문은 24,000개의 안드로이드 앱에서 선언된 SDK 버전(DSDK)과 실제 API 호출 간의 일관성을 측정하기 위해 삼차원 분석을 제안한다. 분석 결과, 약 1,800개의 앱이 minSdkVersion을 제대로 설정하지 않아 이전 안드로이드 버전에서 충돌을 일으키며, 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.

연구 동기 및 목표

  • 실세계 안드로이드 앱에서 선언된 SDK 버전(DSDK) 관행을 체계적으로 연구하기 위해.
  • 앱이 실제로 수행하는 API 호출과 DSDK 버전 간의 일관성 분석을 위해.
  • 잘못된 DSDK 선언의 실제 영향을 정량화하기 위해, 런타임 충돌 및 보안 취약성 포함.
  • 안드로이드 개발에서 부적절한 SDK 마이너스 버전 관리와 관련된 과제와 위험에 대한 통찰을 제공하기 위해.

제안 방법

  • 연구는 구글 플레이, 안드로이드 문서, 개별 앱 바이너리 간의 삼차원 분석을 수행하여 SDK 및 API 매핑을 추출한다.
  • 안드로이드 문서를 분석하여 각 API와 해당 플랫폼 API 수준 간의 포괄적인 매핑을 구축한다.
  • 1,300개의 다중-Apk 앱을 제외하고 구글 플레이에서 24,000개 이상의 앱을 분석한다.
  • 코드 내 버전 기반 if-else 블록으로 인한 노이즈를 줄이기 위해 임계값 기반 필터링 기법을 적용한다.
  • 선언된 minSdkVersion을 초과하는 API 호출을 가진 앱과 오래된 targetSdkVersion을 가진 앱을 식별하며, 특히 addJavascriptInterface()와 같은 보안 민감도 API에 집중한다.
  • 제어 흐름 분석의 한계를 위협 요소로 간주하지만, 라이브러리 코드는 제외하고 히ュ리스틱을 적용하여 오류 양성(false positive)을 최소화한다.

실험 결과

연구 질문

  • RQ1실제 안드로이드 앱에서 minSdkVersion, targetSdkVersion, maxSdkVersion가 올바르게 선언되는 비율은 어느 정도인가?
  • RQ2앱이 선언된 minSdkVersion을 초과하는 API 호출을 수행함으로써 런타임 충돌이 발생하는 정도는 어느 정도인가?
  • RQ3오래된 targetSdkVersion 선언으로 인해 알려진 보안 취약점에 노출된 앱은 몇 개인가?
  • RQ4잘못된 DSDK 선언이 앱 호환성과 보안에 어떤 영향을 미치는가?

주요 결과

  • 분석 대상 앱의 약 17%는 targetSdkVersion을 선언하지 않거나 잘못 선언하고 있다.
  • 약 1,800개의 앱이 선언된 minSdkVersion을 초과하는 API 호출을 수행하여 이전 안드로이드 버전에서 런타임 충돌을 일으킨다.
  • 400개 이상의 앱이 오래된 targetSdkVersion 값을 가지고 있어 addJavascriptInterface() API를 통한 원격 코드 실행 공격에 취약하다.
  • addJavascriptInterface()를 사용하는 앱 중 413개는 targetSdkVersion < 17로 인해 취약하며, 그 중 238개는 targetSdkVersion을 전혀 정의하지 않고 있다.
  • minSdkVersion을 초과하는 API 호출이 5개 이상인 앱은 1,750개, 10개 이상인 앱은 692개로, 광범위한 일관성 부족이 드러났다.
  • 연구 결과, 잘못된 DSDK 선언은 안드로이드 앱에서 기능적 불안정성과 보안 위험의 주요 원인임을 입증한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.