[인시큐어뱅크] 안드로이드 SD 카드 저장 취약점
- 안드로이드
- 2020. 4. 18. 18:48
반응형
안드로이드 내부저장소/외부저장소
안드로이드 저장소는 내부저장소/외부저장소로 나뉘는데 여기서 외부저장소는 SD카드와 같은 이동식 저장소를 의미한다. 앱자체가 지나지케 클 경우 외부저장소에 앱을 설치하기도 하고 접근제한이 필요치 않거나 다른 앱과 공유하고 싶은 파일이 있을 경우 해당 파일을 외부저장소에 저장하기도 한다.
내부저장소는 다른 앱이 접근하지 못하지만 SD카드는 설정에 따라 외부에서도 접근할 수 있는 저장소이기 때문에 SD카드에 중요정보가 노출될 수 있는 가능성이 존재한다. SD카드 저장소는 /sdcard 에서 확인할 수 있다.
안드로이드 SD 카드 저장 취약점 진단
AndrioidManifest.xml 을 확인하면, "WRITE_EXTERNAL_STORAGE" 와 "READ_EXTERNAL_STORAGE" 권한이 설정되어있다.
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--
To retrieve OAuth 2.0 tokens or invalidate tokens to disconnect a user. This disconnect
option is required to comply with the Google+ Sign-In developer policies
-->
<android:uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
그리고 apk 디컴파일을 수행한 후 DoTransfer 클래스를 살펴보면, "Message: ~" 문자열을 구성한 뒤 getExternalStorageDirectory()로 SD카드 저장소 경로를 구하고 + /Statements_[유저네임].html에 저장하고 있다. Transfer에 실패한 경우와 성공한 경우 둘다에 대해 Transfer 내역을 SD 카드 저장소에 저장하고 있다.
String str1 = new String("\nMessage:Failure From:" + DoTransfer.this.from.getText().toString() + " To:" + DoTransfer.this.to.getText().toString() + " Amount:" + DoTransfer.this.amount.getText().toString() + "\n");
String str2 = Environment.getExternalStorageDirectory() + "/Statements_" + DoTransfer.this.usernameBase64ByteString + ".html";
try {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(str2, true));
bufferedWriter.write(str1);
bufferedWriter.write("<hr>");
bufferedWriter.close();
return;
} catch (IOException iOException) {
iOException.toString();
return;
/sdcard/Statements_jack.html을 보면 다음과 같이 Transfer 내역을 확인할 수 있다.
안드로이드 SD 카드 저장 취약점 진단결과 및 대응방안
- 인시큐어뱅크(InsecureBankv2) 앱은 중요한 거래정보를 SD카드에 암호화하지 않은 채로 저장하고 있다.
- SD카드에 중요정보 저장 시 유출될 가능성이 있으므로 해당 정보를 내부저장소에 저장하거나 외부저장소에 저장 시 암호화해서 저장하는 대응방안이 필요하다.
'안드로이드' 카테고리의 다른 글
[인시큐어뱅크] 앱 위변조, 리패키징 (Repackaging) 취약점 (0) | 2020.04.20 |
---|---|
[인시큐어뱅크] 안드로이드 메모리 덤프 취약점 (0) | 2020.04.19 |
[인시큐어뱅크] 개발자 백도어 (Developer Backdoors) 취약점 (0) | 2020.04.18 |
[인시큐어뱅크] HTTP 통신 및 파라미터 조작 취약점 (0) | 2020.04.18 |
[인시큐어뱅크] 안드로이드 웹뷰 (Webview) 취약점 (0) | 2020.04.17 |