앱 진단(Android)/Diva 실습

1. Insecure Logging(불안전한 로깅)

보안개구리 2024. 7. 18. 01:00

 DIVA(Damn Insecure and Vulnerable App)는 보안 연구자, 애플리케이션 개발자, 그리고 보안 교육자를 위해 설계된 오픈 소스 Android 애플리케이션입니다. DIVA는 다양한 보안 취약점을 의도적으로 포함하고 있어, 사용자가 실제 애플리케이션에서 발생할 수 있는 보안 문제를 학습하고 실습할 수 있도록 도와줍니다.

 

1) Diva 앱을 접속하게 되면 13가지의 실습을 진행할 수 있습니다. 우선 1. INSECURE LOGGING를 클릭하여 접속합니다.

 

2) 접속 시 화면 상단에 Objective와 Hint 즉 목표와 힌트가 존재합니다.

목표: 취약한 코드 찾기

힌트: 불안전한 로깅은 개발자가 의도적 혹은 의도치 않게 민감한 정보를 로그로 기록할 때 발생

 즉 해당 실습환경에서는 로그상에 무언가 민감한 정보가 노출된다는 것을 추측할 수 있습니다. 화면 중앙을 보면 "Enter your credit card number" 즉 신용 카드 번호를 입력할 수 있는 공간이 있으며 CHECK OUT 버튼이 존재합니다. 임의의 번호를 입력한 후 CHECK OUT 버튼을 클릭해 보겠습니다.

 

3) "1234567898765432"라는 임의의 번호를 입력한 후 CHECK OUT 버튼 클릭 시 화면 하단에 "An error occured. Please try again later"이라는 문자열이 노출되는 것을 확인하였습니다. 뭐 오류가 발생했으니 나중에 다시 시도하라는 뜻인데 해당 문자열이 어디서 발생시키는지 알기 위해 jadx를 이용하여 해당 문자열을 검색해 보겠습니다.

 

4) 해당 checkout 메서드는 버튼 클릭 시 입력된 신용카드 정보를 처리하고 예외 발생 시 로그에 신용카드 정보를 기록하며 사용자에게 에러메시지를 표시하는 기능을 합니다.

 

5) 여기서 문제가 되는 부분은 바로 아래 부분인데 우리가 입력했던 텍스트는 신용카드번호입니다. 하지만 에러 발생 시 아래 코드에 의해 신용카드번호까지 로그에 표시됩니다. 확인을 위해 로그캣 기능을 이용하여 신용카드번호가 노출되는지 확인해 보겠습니다.

Log.e("diva-log", "Error while processing transaction with credit card: " + cctxt.getText().toString());

 

6) 아래 로그 기록을 보면 diva앱에서 에러 로그가 기록되어 있는데 이때 우리가 입력했던 신용카드번호(1234567898765432)가 노출되어 있는 것을 알 수 있습니다.