오늘은 '안전하지 않은 로깅 메커니즘' 취약점에 관하여 Insecure Bank앱 실습을 통해 알아보겠습니다!
['안전하지 않은 로깅 메커니즘' 이란?]
> 로그란, 서버에서 운영되는 서비스들이 실행되는 상태나 특정 프로그램을 사용한 사용자의 행위나 흔적을 파일이나 출력을 통해 남기는 행위를 말합니다. 그런데 이런 로그에 사용자의 개인정보 가령 비밀번호,아이디,계좌번호 등이 출력이 되버리면 정보가 유출될 수 있기 때문에 필요없는 로그정보는 남기지 말아야 합니다.
1. 취약점 진단
1. 우선 인시큐어 뱅크 어플을 로그인해줍니다.
2. 이후 nox_adb shell 로 녹스기기에 접근하셔서 해당 명령어를 통해 특정 어플의 log를 확인하실 수 있습니다. 사진을 보시면 로그인한 아이디&패스워드가 평문으로 저장되어 있는것을 확인하실 수 있습니다.
> nox_adb shell (녹스 기기에 접근)
> logcat -f [진단할 앱의 패키지명]
로그인 정보 로그저장 |
3. 비밀번호 변경 기능에서도 이전 비밀번호와 바꾼 비밀번호의 평문이 로그에 저장되는 것을 확인하실 수 있습니다.
비밀번호 변경 | 변경 내역 로그저장 |
4. 계좌이체기능을 통해 송금후 로그를 확인해 보셔도 평문으로 저장된 것을 확인하실 수 있습니다.
계좌이체 기능 사용 | 송금내역 로그에 저장 |
5. Jadx로 인시큐어 뱅크앱을 디컴파일 해준후 소스코드 검색을 통해 "Log.d" 라는 문구를 검색하시면 사진 속 표시된 부분으로부터 로그에 로그인정보를 남기고 있다는 것을 확인할 수 있습니다.
6. Log.[옵션] 명령어 외에도 로그에 기록을 남기는 명령어로는 system.put.print 가 있습니다. 이 또한 마찬가지로 검색창에 써보시면 위에서 확인했던 송금내역을 출력하는 소스코드를 확인하실 수 있습니다!
2. 대응방안
> 이건 사실 개발 마무리 과정에서 개발중간에 쓰였던 Log 소스코드들의 점검이 미흡했기 때문에 발생한 일입니다. 그러니 Log.d 나 system.put.print 를 쓰는 경우를 웬만하면 다 지워주셔야 하고, 만약 꼭 필요하다면 중요한 정보는 평문으로 저장되는것이 아닌 암호화 처리를 하여 저장해야합니다!
긴 글 읽어주셔서 감사합니다!
'모바일 앱해킹(Android) > Insecure Bank' 카테고리의 다른 글
[Insecure Bank] 디버깅 취약점 & 런타임 조작 취약점 (0) | 2024.12.11 |
---|---|
[Insecure Bank] 안드로이드 키보드 캐시 이슈 (0) | 2024.12.10 |
[Insecure Bank] 메모리 내 민감한 정보 저장 (0) | 2024.12.06 |
[Insecure Bank] 애플리케이션 패칭 취약점 (0) | 2024.12.05 |
[Insecure Bank] 취약한 웹 뷰 실행 (0) | 2024.12.05 |