보안개구리
1. Insecure Logging(불안전한 로깅) 본문
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)가 노출되어 있는 것을 알 수 있습니다.
'앱 진단(Android) > Diva 실습' 카테고리의 다른 글
5. Access Control Issues(액세스 제어 이슈) (0) | 2024.07.29 |
---|---|
4. Input Validation Issues(입력 검증 이슈) (0) | 2024.07.25 |
3. Insecure Data Storage(안전하지 않은 데이터 저장소) (0) | 2024.07.23 |
2. Hardcoding Issues(하드코딩 이슈) (0) | 2024.07.18 |