인시큐어뱅크에서 찾을 수 있는 취약점 중 "취약한 SD 카드 스토리지" 취약점을 찾아보기로 했다.

SD 카드는 외부 저장소로 어느 앱이나 접근할 수 있는 공간이다.

그렇기 때문에 암호화되지 않은 개인정보나 중요정보는 SD카드에 존재하면 안 된다.

 

 

1. 점검 방법

 

우선 ManiFest 파일에서 WRITE_EXTERNAL_STORAGE 권한이 있는지 확인한다.

이 권한이 있으면 sd카드에 데이터를 저장할 수 있게 된다.

 

WRITE_EXTERNAL_STORAGE 권한

 

그런 다음 전체 검색해서 getExternalStorageDirectory() 메소드를 사용하고 있는 부분을 찾는다.

 

getExternalStorageDirectory() 란?
외부 저장소의 최상위 경로를 반환해 주는 메소드

 

 

 

2. 악용 방법

 

 

아마도 getExternalStorageDirectory()의 디폴트 리턴 값은 /sdcard일 것이다.

그렇다면 데이터가 저장되는 경로인 MYFILE은 /sdcard/Statements_[유저이름].html 가 되고 이곳에 데이터가 저장될 것이다.

 

/sdcard 경로에 해당 파일 확인
계좌 정보 노출

 

* 외부 저장소 permission

 

 

 

3. 조치방법

- 중요 정보 저장 시 내부저장소에 저장

- 외부 저장소 데이터 저장 시 암호화

- android 10 이상부터 getExternalStorageDirectory() 사용 불가

복사했습니다!