본문 바로가기
해킹&보안/모바일

모바일 정적분석 #3

로그 정보 유출 분석

1. 서론 

안드로이드 개발 과정에서 로그는 애플리케이션의 동작을 실시간으로 추적하고 오류를 디버깅하는 데 필수적인 도구입니다.

개발자들은 종종 변수의 값, 함수의 호출 순서, 네트워크 응답 등 다양한 정보를 로그로 출력하여 개발 및 테스트의 효율성을 높입니다. 하지만 개발 단계에서 사용된 디버깅용 로그 코드가 상용(release) 버전의 애플리케이션에 제거되지 않고 그대로 포함될 경우, 이는 민감한 정보 유출로 이어지는 심각한 보안 취약점이 될 수 있습니다.

공격자는 adb logcat과 같은 표준 안드로이드 디버깅 도구를 사용하여 기기에서 발생하는 시스템 및 애플리케이션 로그를 실시간으로 모니터링할 수 있습니다. 만약 이 로그에 사용자 계정 정보, 세션 토큰, 개인 식별 정보 등이 평문으로 출력된다면, 공격자는 루팅이나 복잡한 리버싱 과정 없이도 손쉽게 중요 정보를 탈취할 수 있습니다.


2. 분석 환경

분석 대상: InsecureBankv2.apk

분석 도구: JADX-GUI 1.4.7, Android Debug Bridge(adb)


3. 분석 절차 

3.1. 분석 전략: 로그 출력 함수 검색

안드로이드 표준 로그 API는 android.util.Log 클래스를 통해 제공됩니다. 로그 레벨에 따라 Log.d() (Debug), Log.i() (Info), Log.v() (Verbose), Log.w() (Warning), Log.e() (Error) 등의 메소드가 사용됩니다. 정적 분석에서는 이러한 로그 출력 함수들을 검색하여 어떤 정보가 기록되는지 확인하는 것이 핵심입니다

 

3.2. 단서 식별: JADX를 이용한 코드 분석

  1. JADX의 전체 텍스트 검색기능을 사용하여 Log.d 키워드를 검색합니다.
  2.  로그인 기능을 처리하는 com.android.insecurebankv2.DoLogin 클래스에서 의심스러운 로그 출력 코드가 발견됩니다.

DoLogin 클래스 내부의 RequestTask 클래스, 그 안의 postData 메소드를 살펴보면 로그인 성공 조건문 안에서 아이디와 비밀번호를 로그로 출력하는 코드를 확인할 수 있습니다.

서버로부터 "Correct Credentials"라는 응답을 받아 로그인이 성공했을 때, Log.d 메소드를 통해 사용자의 아이디와 비밀번호가 평문 그대로 로그에 기록되고 있습니다.


4. 취약점 분석 및 영향

  • 취약점 분류: CWE-532
  • 위험도: 중간
  • 상세 설명: 애플리케이션이 사용자 계정 정보, 인증 토큰, 금융 정보, 개인 식별 정보 등 민감한 데이터를 로그 파일에 저장할 때 발생하는 취약점입니다.
  • 영향: 기기에 접근 권한이 있는 공격자나, 다른 악성 앱이 로그 데이터를 읽을 수 있는 권한을 획득했을 경우, 별다른 해킹 기술 없이도 민감 정보를 손쉽게 탈취할 수 있습니다. 이는 계정 도용, 2차 금융 피해, 개인정보 노출 등 심각한 문제로 이어질 수 있습니다.

5. 결론 및 대응 방안

로그는 개발에 필수적이지만 보안 관점에서는 잠재적인 정보 유출 통로가 될 수 있음을 항상 인지해야 합니다.

사용자의 입력값이나 서버로부터 받은 민감한 데이터는 절대 로그로 남기면 안 됩니다

 

안전한 로깅 방안

  • 민감 정보 로깅 금지: 사용자 계정 정보, 비밀번호, 토큰, API 키, 주민등록번호, 카드 번호 등 어떤 민감 정보도 로그로 출력하지 않는 것을 원칙으로 합니다.
  • 빌드 타입에 따른 로그 분리: BuildConfig.DEBUG 플래그를 사용해서, 디버그 빌드에서만 로그가 출력되고 상용 빌드에서는 로그 출력 코드가 컴파일되지 않도록 구현합니다.

'해킹&보안 > 모바일' 카테고리의 다른 글

모바일 정적분석 #6  (0) 2025.10.18
모바일 정적분석 #5  (0) 2025.10.18
모바일 정적분석 #4  (0) 2025.10.17
모바일 정적분석 #2  (0) 2025.10.16
모바일 정적분석 #1  (0) 2025.10.16