1. 안전하지 않은 로깅
1.1 로그
로깅이란 운영되는 서비스들에 대하여 실행 상태나, 동작 등을 기록하여 해당 정보들을 파일 또는 출력을 통해 남기는 행위입니다. 이러한 흔적들을 분석하여 특정 서비스나 프로그램이 어떤 동작을 수행하였는지 알 수 있습니다.
1.2 로깅 취약점
어플리케이션이 실행되는 과정에서, 민감한 데이터나 노출되면 안되는 데이터들이 로그로 남게 되면 발생하는 취약점 입니다.
로그 버퍼는 다음과 같습니다.
로그 버퍼 | 설명 |
Main | 주요 로그 버퍼로, android.util.Log 클래스로 기록된 로그등이 기록됩니다. |
System | 시스템 로그 버퍼로, 안드로이드 플랫폼 내부의 하위 레벨에 있는 시스템이나 디버깅을 위한 로그입니다. |
Events | 이벤트 로그 버퍼로, 시스템 이벤트에 대한 로그 메시지가 여기에 기록됩니다. |
Kernel | 커널 로그 버퍼로, 리눅스 커널에서 생성된 로그 메시지가 여기에 기록됩니다. |
Radio | 통신 관련 로그 메시지가 여기에 기록됩니다. |
2. 실습
2.1 인시큐어 뱅크 앱
logcat
을 이용하여 PID로 필터링을 걸고 인시큐어 뱅크 앱을 실행시킨 후, 어플리케이션을 사용하며 어떤 로그들이 기록되는지 확인해 보겠습니다.2.2 동작 로그 확인
➡️ PID 확인
- 안드로이드 시스템에서
어플리케이션의 PID
를 확인합니다.
➡️ locat (pid 필터링)
- pid로 필터를 걸게 되면
해당 PID를 가지고 있는 어플리케이션에서 기록되는 로그만 확인
할 수 있습니다.
- 이후 어플리케이션에서 여러가지 동작을 수행하고 로그를 수집해 보겠습니다.
2.3 취약한 로그 수집
로그인
- 로그인을 하게 되면, 아이디와 비밀번호가 log에 기록되는 것을 볼 수 있습니다.
송금
- 송금 정보를 로그로 출력하기 때문에, 취약하다고 할 수 있습니다.
2.4 로그 필터링 및 저장
- 안드로이드에서 발생하는 로그는 종류가 많기 때문에
로그 등급
등으로 분류할 수 있습니다.
- 하지만
grep
명령어 등을 이용하여 좀더 Custom하게 이용할수도 있습니다.
- 리눅스 명령어를 좀더 잘 활용한다면, 로그 정보를 파일에 기록하여 추 후에 취약점 점검 이후 추가적으로 분석할 수 있습니다.
3. 대응방안
- 중요 정보들이 노출되지 않도록 조치
- 개발 단계에서 디버깅 용도로 기록하였던 로그는, 배포 단계에서 전부 삭제하고 배포