본문 바로가기

해킹-보안/모바일

액티비티 컴포넌트 취약점

반응형

설명


액티비티는 화면에 보여지는 구성 요소로서 하나의 파일이자 실행 단위이다.
은행 앱을 실행하면 로그인 화면이 뜨고, 사용자에게 계정을 입력받는다.
존재하는 계정이면 로그인되어 메인 메뉴가 실행되고 은행 관련 기능을 이용할 수 있다.
이때 액티비티 속성이 취약하게 설정되어 있다면, 인증 로직을 무시하고 필요한 액티비티를 강제 호출하여
권한이 없는 액티비티에 접근할 수 있다.


취약점 진단


액티비티는 AndroidManifest.xml 파일에 <activity> 요소로 정의된다.


태그 내의 android:exported 속성이 true로 설정되어 있으면 다른 애플리케이션에서 해당 액티비티를 실행할 수 있다.

인시큐어뱅크는 로그인 화면을 거치지 않고 비밀번호를 변경할 수 있는 취약점이 존재한다.


> nox_adb shell am start -n com.android.insecurebankv2/.changePassword -e uname jack
비밀번호 변경 시 이전 비밀번호를 입력 받는 코드가 구현되어 있지 않으므로
액티비티 강제 호출 명령어를 통해 특정 사용자("jack")의 비밀번호를 변경할 수 있다.

대응방안


애플리케이션 혹은 같은 사용자 ID만 실행 가능하도록 exported 속성 값을 "false"로 설정한다.
액티비티에 exported 속성이 존재하지 않으면 "false"이며 인텐트 필터가 포함되면 true 상태로 변경되니 
       개발에 유의한다.
비밀번호 변경 전 추가로 인증받는 절차를 추가한다.


반응형