안전하지 않은 콘텐츠 프로바이더 접근
정의
- 콘텐츠 프로바이더를 이용하여 자신의 데이터에 다른 애플리케이션이 접근하거나 부여한 권한대로 이용하도록 할 수 있다.
발생 위치
- com.android.insecurebankv2.TrackUserContentProvider
영향
- 데이터베이스에 저장되어 있는 정보가 노출된다.
진단
프로바이더의 URI 구성에 포함되어 있는 authorities 항목이 TrackUserContentProvider 로 설정되어 있는 것을 확인 할 수 있다.

Drozer의 기능을 이용하여 콘텐츠 프로바이더에 공격 가능한 취약점이 존재하는지 확인했다.

애플리케이션의 콘텐츠 프로바이더 정보를 확인할 수 있다.

Scanner.provider.finduris 모듈을 통해 콘텐츠 프로바이더의 URI 주소를 검색하여 접근 가능한 목록을 출력 했다.

TrackUserContentProvider/trackerusers를 통해 애플리케이션 데이터를 조회했다.

일반적인 SQL Injection과 마찬가지로 싱글쿼터(‘’)를 이용하여 취약점을 확인했다. 에러 메시지가 출력되고, 일부 데이터베이스 쿼리가 메시지에 포함되어 있다.

데이터베이스 목록 중 names라는 항목이 있는 것을 확인 했기 때문에 names 칼럼을 출력해보았다.

대응방안
- 프로바이더를 선언할 때 exported를 false로 선언해야한다.
콘텐츠 프로바이더를 통해 애플리케이션의 데이터가 유출되지 않도록 하기위해서는 프로바이더를 선언할 때 exported를 false로 선언해야 한다.

콘텐츠 프로바이더 취약점을 검색한 결과 그림 1-2와 다르게 취약점이 존재하지 않았다.

Exported 값을 false로 변경한 후 콘텐츠 프로바이더의 URI 주소를 통해 접근한 결과를 보여준다. 권한이 없다는 메시지가 출력되고 그림 1-5와 같은 결과 값이 나타나지 않는다.
