android:exported

OWASP 카테고리: MASVS-PLATFORM: 플랫폼 상호작용

개요

android:exported 속성은 다른 애플리케이션의 구성요소에서 실행할 수 있는 구성요소(활동, 서비스, broadcast receiver 등)인지를 설정합니다.

  • true인 경우 모든 앱이 활동에 액세스할 수 있고 활동의 정확한 클래스 이름으로 활동을 실행할 수 있습니다.
  • false인 경우 같은 애플리케이션에 있는 구성요소나 동일한 사용자 ID를 가진 애플리케이션 또는 권한이 있는 시스템 구성요소만 활동을 실행할 수 있습니다.

이 속성의 기본값에 관한 로직은 시간이 지남에 따라 변경되었으며 구성요소 유형과 Android 버전에 따라 달랐습니다. 예를 들어 API 수준 16(Android 4.1.1) 이하에서는 <provider> 요소의 값이 기본적으로 true로 설정됩니다. 이 속성을 명시적으로 설정하지 않으면 기기 간에 서로 다른 기본값을 사용할 위험이 있습니다.

영향

기본값이 다른 상황에서는 실수로 내부 애플리케이션 구성요소를 노출할 수 있습니다. 그 결과를 보여주는 예는 다음과 같습니다.

서비스 거부 공격, 앱의 내부 기능을 수정하기 위해 내부 구성요소에 부적절하게 액세스하는 다른 앱, 민감한 정보 유출, 취약한 애플리케이션 컨텍스트에서 코드 실행

완화 조치

항상 android:exported 속성을 명시적으로 설정하세요. 이렇게 하면 해석할 여지가 없어 구성요소의 공개 상태와 관련된 개발자의 의도를 명확하게 알 수 있습니다.