Activity 설정 취약점 (android:exported="true")


Activity 설정 취약점 (android:exported="true")

1. Activity 설정 취약점이란?

안드로이드 앱에서 볼 수 있는 모든 것은 Activity를 통해 이루어집니다. 예를 들어, 주어진 응용 프로그램에서 로그인 화면, 시작 화면 등 모든 것이 Activity입니다. Activity 설정 취약점은 안드로이드 앱의 Androidmanifest.xml 파일에서 android:exported="true"로 설정되어 있는 컴포넌트는 외부에서 해당 컴포넌트에 인텐트를 전달하여 활성화 시킬 수 있습니다. 이 경우, 해당 컴포넌트가 원래 의도하지 않았던 상황에서 실행이 가능하게 되므로 시스템 보안 침해 가능성이 생기게 됩니다.

2. 공격 방법

jadx-guiopen in new window 를 이용하여 대상 안드로이드 앱을 열어 앱 내의 AndroidManifest.xml 파일을 확인합니다.

AndroidManifest.xml 내의 android:exported

위의 사진에서 android:exported="true" 가 있는 activity는 2개인 것을 확인할 수 있습니다.

<activity android:name="com.app.damnvulnerablebank.SendMoney" android:exported="true">
<activity android:name="com.app.damnvulnerablebank.ViewBalance" android:exported="true"/>

AndroidManifest.xml에서 android:exported="true"가 있는 activity가 있는 경우, Android Debug Bridge (ADB) Shell을 이용하여 대상 단말기에 접속합니다. 만일, 아래의 명령어가 작동하지 않을 경우 환경 구성을 위해 이 게시글open in new window을 참고하여 진행해주시기 바랍니다.

adb shell

그리고, 접속에 성공한 경우에는 아래의 명령어를 이용하여, activity를 실행합니다.

am start -n [앱 패키지명]/[앱 activity 이름] 

위의 명령어를 사용한 예시입니다.

am start -n com.app.damnvulnerablebank/com.app.damnvulnerablebank.SendMoney

13

예시 문장을 이용하여 실행했을 시에 activity가 실행되는 모습을 확인할 수 있습니다.

14