-->

[인시큐어뱅크] 안드로이드 액티비티 (Activity) 취약점

 

안드로이드 액티비티 (Activity) 취약점

안드로이드에서 액티비티란 앱 UI를 제공하는 앱 컴포넌트로써 쉽게 말하면 하나의 화면이라고 생각하면 될 것 같다. 액티비티 취약점이 존재하면 공격자가 액티비티를 호출할 권한이 없는데도 강제로 호출할 수 있게 된다. 즉, 권한이 없는 기능을 사용할 수 있게된다.

 

액티비티는 리시버와 비슷하게 AndroidManifest.xml에서 <activity>로 선언할 수 있다.

 

 

 

안드로이드 액티비티 (Activity) 취약점 진단

위에서 본대로 여러 액티비티가 존재하는데 그 중, DoTransfer 액티비티에 로그인 없이 바로 접근 가능한지 확인해보겠다.

 

      <activity
            android:name=".LoginActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <activity
            android:name=".FilePrefActivity"
            android:label="@string/title_activity_file_pref"
            android:windowSoftInputMode="stateVisible|adjustResize|adjustPan">
        </activity>
        
        <activity
            android:name=".DoLogin"
            android:label="@string/title_activity_do_login" >
        </activity>
        
        <activity
            android:name=".PostLogin"
            android:exported="true"
            android:label="@string/title_activity_post_login" >
        </activity>
        
        <activity
            android:name=".WrongLogin"
            android:label="@string/title_activity_wrong_login" >
        </activity>
        
        <activity
            android:name=".DoTransfer"
            android:exported="true"
            android:label="@string/title_activity_do_transfer" >
        </activity>
        
        <activity
            android:name=".ViewStatement"
            android:exported="true"
            android:label="@string/title_activity_view_statement" >
        </activity>

        <activity
            android:name=".ChangePassword"
            android:exported="true"
            android:label="@string/title_activity_change_password" >
        </activity>

 

 

adb로 안드로이드 쉘에 접근해준 후 am명령어를 사용해준다. adb의 am 명령어를 사용하면 액티비티를 실행시킬 수 있는데 (intent를 날림) 사용법은 < am start -a [액션네임] -n [패치지명]/[액티비티명] > 이다. 여기서 인시큐어뱅크의 액티비티의 경우 액션네임이 따로 정의되어있지 않기 때문에 아래 명령어를 사용해도 무방하다.

 


> am start -n [패치지명]/[액티비티명] >

> am start -n com.android.insecurebankv2/.DoTransfer

 

 

 

(drozer 추가)

 

 

안드로이드 액티비티 (Activity) 취약점 진단결과 및 대응방안

  • 인시큐어뱅크(InsecureBankv2)의 경우 로그인을 하지 않은 권한없는 사용자가 계좌이체 UI를 실행시킬 수 있으므로 액티비티 취약점이 존재
  • 따라서 아래와 같이 AndroidManifest.xml <activity>의 exported="true" 부분을 false로 변경하는것이 필요함

 

 

댓글

Designed by JB FACTORY