Android/Diva

Insecure Logging - Level 1

정보

  • level 1은 신용카드 번호를 입력 후 체크 아웃하는 기능을 가졌으며, 신용카드 번호와 같은 민감한 정보가 로그에 남는 것을 확인하는 단계이다.

기본 화면은 다음 [그림 1]과 같이 신용 카드 번호를 입력할 수 있는 부분과 CHECK OUT이라는 버튼 하나로 구성되어 있다.

[그림 1] Level 1 기본 구성

 

이때 신용카드 번호 입력 후 CHECK OUT 버튼을 누르면 "An error occured. Please try again later"라는 문자열이 출력되는 것을 확인할 수 있다.

[그림 2] 에러 값 출력

 

분석

checkout

public void checkout(View view) {
        EditText cctxt = (EditText) findViewById(R.id.ccText);
        try {
            processCC(cctxt.getText().toString());
        } catch (RuntimeException e) {
            Log.e("diva-log", "Error while processing transaction with credit card: " + cctxt.getText().toString());
            Toast.makeText(this, "An error occured. Please try again later", 0).show();
        }
    }

    private void processCC(String ccstr) {
        throw new RuntimeException();
    }

코드를 확인해보면 다음과 같은 정보를 확인할 수 있다.

  • cctxt 변수에 입력한 값(신용카드 번호)가 저장된다.
  • cctxt를 인자로 processCC() 함수를 호출한다.
  • processCC() 함수에서 throw를 통해 예외를 발생시켜준다.
  • catch를 통해 예외가 발생되었다면
    • Log.e 함수를 통해 Error 레벨의 로그를 입력값(신용카드 번호)과 함께 생성한다.
    • Toast를 통해 메시지를 출력해준다.

코드를 분석하면 알 수 있듯 해당 애플리케이션의 문제점은 신용카드 번호와 같은 중요 정보를 그대로 로그에 남기는 것이다. 이러한 부분은 향후 단말기가 감염되었을 때 공격자가 로그에 정보를 그대로 사용할 수 있기 때문에 로그에 민감한 정보를 남기지 않도록 주의해야 된다.

 

Exploit

로그 내 중요 정보 확인

신용카드 값이 로그 내 저장되는 것을 확인하기 위해 값을 입력해준다(이때 1, 2 같이 너무 흔한 값이 아니라 특정지기 쉬운 값으로 입력한다).

[그림 3] 특정 값 입력

 

이후 "adb shell"로 연결을 한 뒤 logcat 명령어를 통해 디버깅 로그를 확인하면 다음 그림과 같이 입력한 값이 담긴 로그를 확인할 수 있다.

[그림 4] 로그 내 중요 정보 확인

 

 

이때 출력되는 출력문은 다음과 같은 형식을 가지고 있다.

  • 10-31 17:49:28.223 13156 13156 E diva-log: Error while processing transaction with credit card: 10310540
    • 10-31 : 월/일
    • 17:49:28.223 : 시/분/초
    • 13156 : PID(Process ID)
    • 13156 : TID(Thread ID)
    • E : 우선순위 (Verbose < Debug < Info < Warn < Eerror < Assert)
    • diva-log : Log Tag
    • Error while processing transaction with credit card: 10310540 : Log Message

 

Reference

'Android > Diva' 카테고리의 다른 글

Hardcoding Issues(Part 2) - Level 12  (0) 2021.11.01
Access Control Issues(Part 3) - Level 11  (0) 2021.11.01