Android/InsecureBankv2

인시큐어뱅크 앱 취약점 - 취약한 콘텐츠 프로바이더

박연준 2023. 7. 3. 21:07

인시큐어뱅크 앱 취약점 - 취약한 콘텐츠 프로바이더

취약점 소개

콘텐츠 프로바이더(Content Provider)란, 다른 앱이 데이터베이스에 접근할 수 있도록 도와주는 역할을 한다. 컨텐츠 프로바이더는 앞서 살펴본 액티비와 비슷하게 AndroidManifest.xml에 <provider>로 선언할 수 있다.

콘텐츠 프로바이더 취약점이 존재하게 되면, 데이터베이스에 접근할 권한이 없는데도 데이터베이스에 접근이 가능할 수 있게 된다.

취약점 진단

액티비티 취약점 진단과 비슷하게 android:exported=”true”로 설정되어 있는지 확인하면 된다.

인시큐어뱅크 앱의 AndroidManifest.xml의 <provider>를 살펴보면 아래와 같이 export 여부가 true로 설정되어있다.

 

drozer를 사용해서 run scanner.provider.finduris -a com.android.insecurebankv2를 입력하면 해당 컨텐츠 프로바이더의 접근 가능한 URI 주소를 얻을 수 있다.

 

얻은 URI 주소를 사용해 데이터베이스에 접근해보면 로그인에 따라 아래 테이블의 행수가 증가하는 것으로 보아 로그인한 사용자 정보를 담고 있는 테이블인 것 같다.

명령은 run app.provider.query 뒤에 content주소를 붙여넣어주면 된다.

 

 

대응 방안

인시큐어뱅크 앱의 경우 AndroidManifest.xml 의 <provider>의 exported 값이 true로 설정되어 있어 외부에서 해당 컨텐츠 프로바이더의 특정 데이터베이스에 접근해 값을 보는 것이 가능했다.

따라서 권한없는 사용자에게 데이터가 유출되는 것을 방지하기 위해서는 아래와 같이 exported 값을 false로 선언해주어야 한다.