SecurityAndroid

안드로이드 서비스 배포 체크리스트 2편

2024.12.03R&D | June

 

 

안드로이드 앱 개발은 기능 구현뿐만 아니라 보안을 최우선으로 고려해야 하는 복합적인 작업입니다. 이번 글에서는 앱 배포 전에 반드시 검토해야 할 주요 보안 정책을 다루며, 실제 사례를 통해 그 중요성을 설명하겠습니다. 🛡️

 

 


 

 

📂 1. 로그 관리: 배포 전 모든 로그를 제거하세요!

 

 

앱 개발 중 남긴 디버깅 로그는 배포 환경에서는 심각한 보안 위협이 될 수 있습니다. 악성 앱이 로그를 통해 민감한 데이터를 유출하거나 앱의 취약점을 분석할 가능성이 있기 때문입니다. 🕵️‍♂️

 

 

✅ 배포 환경에서 로그 사용의 위험

 

  • 데이터 노출: API 키, 사용자 토큰, 디버깅 메시지 등 민감한 정보가 로그에 기록될 수 있습니다.
  • READ_LOGS 권한 남용: READ_LOGS 권한을 가진 악성 앱이 다른 앱의 로그에 접근 가능.

 

🛠️ 로그 제거를 위한 해결책

 

  1. BuildConfig.DEBUG 활용하기:

     

    배포 빌드에서는 디버깅 로그가 출력되지 않도록 제어할 수 있습니다.

     

    if (BuildConfig.DEBUG) {
        Log.d("Debug", "디버깅 메시지");
    }

     

  2. R8/Proguard 설정으로 로그 자동 제거:

     

     

    테스트용 빌드에서만 로그를 출력하도록 코드를 수정하거나, r8 컴파일러에 아래와 같은 룰을 사용해서 로깅 관련 코드가 최적화되어 제거되도록 할 수 있습니다.

     

     

    -assumenosideeffects class android.util.Log {
        static *** i(...);
        static *** d(...);
        static *** v(...);
        static *** w(...);
        static *** e(...);
    }
    -maximumremovedandroidloglevel 4

 

 


 

 

📌 2. allowBackup 설정: 사용자 데이터 보호의 첫걸음

 

 

안드로이드 앱의 allowBackup 설정은 데이터 백업 및 복원과 관련된 기능을 제공합니다. 하지만 잘못 설정할 경우 치명적인 보안 문제가 발생할 수 있습니다.

 

✅ 왜 중요한가?

 

 

  • allowBackuptrue로 설정하면 앱의 내부 저장소와 SharedPreferences에 저장된 민감한 데이터를 ADB 명령을 통해 추출할 수 있습니다.
  • 사용자 인증 정보, API 키, 비밀번호 등 중요한 데이터가 노출될 위험이 큽니다.

 

✅ 올바른 설정 방법

 

  • 배포 전 필수 확인: AndroidManifest.xml에서 allowBackup을 반드시 false로 설정하세요.
  • 백업 규칙 세부 지정: 데이터 백업이 필요한 경우, 을 명확히 정의하세요.

 

<application
    android:allowBackup="false"
    android:fullBackupContent="false">
</application>

 

 

✨ TIP: 보안이 민감한 앱이라면 기본적으로 allowBackup을 false로 설정하는 것이 안전합니다.

 

 


🔧 3. debuggable 비활성화: 디버깅 악용 차단

 

 

배포 버전의 앱에서 debuggable=true로 설정된 경우, 공격자에게 앱의 내부 로직을 노출하는 셈입니다. 이는 악성 행위를 쉽게 수행할 수 있는 디버깅 취약점으로 이어질 수 있습니다.

 

⚠️ 디버깅 모드의 보안 허점

 

 

  • 앱 코드를 디컴파일하거나 데이터를 실시간으로 분석할 수 있는 환경을 제공합니다.
  • 민감한 데이터를 포함한 네트워크 요청, API 호출 등을 실시간으로 확인할 수 있어 악용될 가능성이 높습니다.

 

✅ 올바른 설정 방법

 

  • 릴리스 빌드 확인 필수: build.gradle 파일의 debuggable 속성을 반드시 false로 설정하세요.
  • 빌드 설정 최적화: Gradle에서 자동으로 디버깅 모드를 비활성화하도록 릴리스 빌드를 분리 관리합니다.

 

android {
    buildTypes {
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

 

주의: 디버깅이 활성화된 상태로 배포되면 Google Play에서 앱이 거절될 수 있습니다.

추천컬럼

추천컬럼 이미지

200건 이상 프로젝트 성공으로 실력이 검증된 개발 회사?

2024.09.20
추천컬럼 이미지

프로그램개발, 합리적인 가격을 위해 잊으면 안되는 MVP

2024.09.20

상담만 받아보셔도 좋습니다 긱다이브의 상담으로 업체 비교를 시작해보세요

CONTACT US