티스토리 뷰

728x90
반응형

[ 취약한 인증 메커니즘]

      : 정상적인 인증 절차를 우회해 비정상적인 인증으로 접근 권한을 취득하는 취약점

 

OWASP Mobile Top 10 2014-M5에 해당하는 취약점으로, 일반적으로 다음과 같은 경우에 해당

  • 적절하지 않은 앱 퍼미션 설정 여부
  • 서비스 권한 상승 행위에 대한 통제 여부
  • 기능에 대한 제한 또는 우회 금지 여부
  • 불필요하거나 사용하지 않는 액티비티 제거 여부
  • 인텐드 사용에 대한 안전성 여부
  • 마스터 키 취약점 대응 여부

 

 

< 취약점 진단 과정 >

AndroidManifest.xml 코드 일부

<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>

    <provider
        android:name=".TrackUserContentProvider"
        android:authorities="com.android.insecurebankv2.TrackUserContentProvider"
        android:exported="true" >
    </provider>

    <receiver
        android:name=".MyBroadCastReceiver"
        android:exported="true" >
        <intent-filter>
            <action android:name="theBroadcast" >
            </action>
        </intent-filter>
    </receiver>

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

안드로이드 액티비티의 속성이 anroid:exported="true"로 설정되어 있는 것을 확인 할 수 있다.

이 경우 다른 액티비티에서 인증 없이 접근 할 수 있다.

 

1)  ADB 이용

adb shell am start [앱이 설치된 주소] / [호출하고 싶은 패키지 주소]

adb shell am start com.android.insecurebankv2/com.android.insecurebankv2.PostLogin

위 명령어 입력시 로그인 없이 인증을 무시하고 바로 로그인이 완료된 액티비티를 호출 할 수 있다.

 

adb shell am start com.android.insecurebankv2/com.android.insecurebankv2.ChangePassword

위 명령어 입력시 로그인 없이 인증을 무시하고 바로 비밀번호 변경 액티비티를 호출 할 수 있다.

 

 

2) Drozer 이용

1. 앱의 Activity 확인

run app.activity.info -a com.android.insecurebankv2

 

 

2. Activity 실행

run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin

 

 

 

< 대응 방안 >

1. android:exported="true"를 false로 설정

컴포넌트에 대한 접근은 외부에 허락하지 않는 것이 안전.

설정 값이 false이면 이 액티비티는 같은 앱 or 같은 유저 ID를 가진 앱의 컴포넌트만 불러올 수 있다.

 

만약 true로 설정할 경우 별도의 intent-filter로 검증한다.

 

인증 취약점은 진단 과정에서 살펴본 액티비티 취약점 이외의 앱에 인증을 우회할 수 있는 다양한 방법이 존재하므로

소프트웨어 개발 시 안전하게 처리하는 것이 중요하다.

 

 

728x90
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함