OWASP Mobile Top 10은 비영리 단체인 Open Web Application Security Project가 발표한 모바일 애플리케이션의 10대 가장 중요한 취약점 목록입니다. 이 문서는 보안 커뮤니티와 실제 사고 데이터를 기반으로 몇 년마다 업데이트됩니다. OWASP Foundation(2024)에 따르면, 75% 이상의 상용 모바일 애플리케이션이 이 목록에서 적어도 하나의 취약점을 포함하고 있습니다. Mobile Top 10을 학습하면 개발자와 테스터가 아키텍처 설계 단계에서 보호를 구축하는 데 도움이 됩니다. OWASP, 2024
핵심 요점
OWASP Mobile Top 10은 모바일 애플리케이션에 특화된 가장 중요한 보안 위험의 표준화된 목록입니다. 웹 애플리케이션용 일반 OWASP Top 10과 달리, 모바일 버전은 플랫폼의 특성을 고려합니다: 기기의 로컬 저장소, 센서와의 상호작용, 오프라인 모드, 앱 스토어의 특성 등. 이 문서는 2010년부터 발행되었으며 2–4년마다 개정됩니다: 2024년 현재 버전에는 M1 — Improper Credential Usage 및 M8 — Security Misconfiguration과 같은 카테고리가 포함됩니다. 이 프로젝트는 전 세계 500명 이상의 자원봉사자 커뮤니티의 지원을 받고 있습니다.
원래 OWASP Top 10은 웹 애플리케이션만 다루었지만, 2010년대 모바일 개발의 성장으로 별도의 문서가 필요해졌습니다. Mobile Top 10의 첫 번째 버전은 2011년에 출시되었으며 7개 항목만 포함했습니다. 2024년까지 목록은 10개 카테고리로 확장되었으며, 각 카테고리에는 여러 특정 공격 시나리오가 포함됩니다. 문서의 주요 목적은 개발자와 보안 팀이 위험을 논의하고 수정 사항의 우선순위를 지정하는 공통 언어를 제공하는 것입니다. 목록의 정기적인 업데이트는 위협 환경의 변화를 반영합니다: 새로운 API의 등장, 운영 체제(Android, iOS)의 진화, Positive Technologies 및 기타 연구 센터의 보고서에 설명된 새로운 공격 기술 등.
Mobile Top 10을 편집하는 방법론은 실제 프로젝트의 데이터를 기반으로 합니다: 모바일 애플리케이션 침투 테스트 결과, 사고 보고서, 취약점 연구가 분석됩니다. 각 카테고리는 발생률(Incidence Rate)과 기술적 영향(Technical Impact)의 두 가지 매개변수로 평가됩니다. 이러한 메트릭의 조합이 최종 순위를 형성합니다. 주관적인 목록과 달리 OWASP는 공개 데이터를 사용합니다: 커뮤니티 구성원은 누구나 프로젝트의 GitHub 저장소를 통해 새 카테고리 포함을 요청할 수 있습니다. 2024년 현재 버전의 경우 25개국에서 300,000개 이상의 보안 테스트가 처리되어 통계가 글로벌 모바일 개발 생태계를 대표하게 되었습니다. 또한 OWASP는 MASVS(Mobile Application Security Verification Standard)를 발행합니다 — 8개 카테고리에 분산된 80개 이상의 특정 검사를 포함하는 상세한 보안 요구사항 세트입니다. MASVS는 애플리케이션 인증의 기초이자 침투 테스트를 위한 체크리스트로 사용됩니다: 각 요구사항은 Mobile Top 10 카테고리에 대한 참조를 가지며, 표준과 위험 목록 간의 추적성을 보장합니다.
OWASP Mobile Top 10 2024의 세 가지 가장 중요한 카테고리를 살펴보겠습니다. 이 카테고리들은 모바일 프로젝트의 모든 보안 사고의 70% 이상을 차지합니다. 각 카테고리에는 특정 악용 시나리오와 보호 권장 사항이 포함됩니다.
이 카테고리(M1)는 개발자가 API와 플랫폼 메커니즘을 부적절하게 사용하는 상황을 다룹니다. 일반적인 예: Android에서의 Intent Injection, iOS에서의 열린 Deep Link 핸들러, Keychain 및 SharedPreferences의 잘못된 처리. 공격자는 특별히 제작된 Intent를 보내 다른 애플리케이션이나 구성 요소의 데이터에 액세스할 수 있습니다. NowSecure 보고서(2023)에 따르면, 테스트된 Android 애플리케이션의 22%에 Intent Redirection 유형의 취약점이 있었습니다. 보호에는 다음이 포함됩니다: 입력 데이터의 엄격한 검증, Intent 소스 확인, 내보낸 구성 요소에 대한 권한 사용.
안전하지 않은 데이터 저장(M2)은 모바일 애플리케이션에서 가장 일반적인 문제입니다. 민감한 데이터(액세스 토큰, 비밀번호, 개인 데이터)가 일반 텍스트로 저장되거나 보호가 불충분할 때 발생합니다. 취약점의 일반적인 원인: 암호화되지 않은 SQLite 데이터베이스, EncryptedSharedPreferences 없는 SharedPreferences, 디버그 모드에서의 데이터 로깅. OWASP Foundation(2024)에 따르면, Google Play의 무료 애플리케이션 중 60% 이상이 적어도 한 가지 유형의 민감한 데이터를 암호화되지 않은 형태로 저장합니다. 해결책은 Android EncryptedSharedPreferences, iOS Keychain을 사용하고 로컬 저장소에 쓰기 전에 데이터를 암호화하는 것입니다.
카테고리 M3 — 안전하지 않은 통신 — 은 앱과 서버 간의 데이터 전송 채널의 취약점을 포함합니다. HTTPS 부족, SSL 인증서의 부적절한 검증, 오래된 TLS 1.0/1.1 프로토콜 사용 — 이러한 모든 문제는 공격자가 Man-in-the-Middle 공격을 통해 트래픽을 가로챌 수 있게 합니다. 애플리케이션이 보호되지 않은 채널을 통해 민감한 데이터(은행 거래, 의료 정보)를 처리할 때 상황은 특히 위험합니다. 2023년 NCC Group의 연구원들은 인기 있는 금융 애플리케이션의 12%가 잘못된 TLS 구성을 사용하고 있음을 발견했습니다. 권장 사항: Certificate Pinning과 함께 HTTPS를 의무적으로 사용하고 프로덕션 빌드에서 HTTP를 거부하십시오.
OWASP 방법론을 사용한 모바일 애플리케이션의 보안 테스트는 여러 단계를 포함합니다: 정적 코드 분석(SAST), 동적 분석(DAST), 수동 테스트(침투 테스트). 각 단계는 Mobile Top 10에서 특정 취약점 카테고리를 식별하는 것을 목표로 합니다.
자동화된 분석을 위해 OWASP는 MobSF(Mobile Security Framework) — 오픈 소스 도구 — 의 사용을 권장합니다. MobSF는 소스 코드 및 바이너리 파일의 정적 분석을 수행하고, 매니페스트 구성을 확인하며, 권한을 분석하고 Mobile Top 10의 취약점을 식별합니다. 동적 분석을 위해 Burp Suite(트래픽 가로채기용 프록시)와 Frida(런타임 분석 도구)가 사용됩니다. 이러한 도구의 조합은 목록의 80% 이상의 카테고리를 다룹니다. MobSF를 사용한 CI/CD 파이프라인에서의 정기적인 테스트는 개발 초기 단계에서 취약점을 식별할 수 있게 하며 수정 비용을 60–70% 줄입니다. 파이프라인에 SAST 및 DAST 도구를 통합하는 것은 Gradle/Maven 플러그인 또는 iOS 빌드의 Fastlane 단계를 통해 자동화되어야 합니다.
MobSF를 실행한 후 개발자는 색상 표시기가 있는 보고서를 받습니다: 빨간색 — 중요 취약점, 주황색 — 중간 위험, 노란색 — 낮은 위험. 각 경고에는 해당 OWASP Mobile Top 10 카테고리, 문제 설명 및 수정 권장 사항에 대한 참조가 포함됩니다. 빨간색 경고를 제거하는 것뿐만 아니라 주황색 경고도 분석하는 것이 중요합니다: 많은 경고(예: 보호되지 않은 내보내진 Activity)가 결합되어 공격자에게 공격 벡터를 제공할 수 있습니다. 각 릴리스 전에 빨간색 경고를 0개로, 주황색 경고를 2–3개 이하로 유지하는 것이 좋습니다. MobSF 보고서에는 애플리케이션 권한 분석도 포함됩니다: 과도한 권한(예: 계산기의 카메라 액세스)은 최소 권한 원칙 위반으로 플래그 지정되며 매니페스트에서 제거되어야 합니다. iOS 애플리케이션의 경우 MobSF는 .ipa 파일에 대한 유사한 분석을 수행하며, ATS 예외에 대한 Info.plist 확인 및 NSAllowsArbitraryLoads와 같은 안전하지 않은 API에 대한 Mach-O 바이너리 분석을 포함합니다.
OWASP Mobile Top 10의 취약점을 식별하기 위해 MobSF를 사용한 Android 애플리케이션의 정적 분석 예제를 살펴보겠습니다. 코드는 일반적인 실수 — SharedPreferences에서 토큰의 안전하지 않은 저장 — 를 보여줍니다.
class InsecureStorage {
private val prefs = context.getSharedPreferences("my_app", Context.MODE_PRIVATE)
fun saveToken(token: String) {
prefs.edit().putString("auth_token", token).apply()
}
fun getToken(): String? {
return prefs.getString("auth_token", null)
}
}
MobSF는 이러한 코드를 분석할 때 안전하지 않은 데이터 저장(카테고리 M2 — Insecure Data Storage)에 대한 경고를 발행합니다. 수정된 버전은 AndroidX Security 라이브러리의 EncryptedSharedPreferences를 사용합니다. 저장소 수준에서의 데이터 암호화의 올바른 구현은 OWASP 권장 사항을 준수하며 기기에 대한 물리적 액세스 시 토큰 누출을 방지합니다. EncryptedSharedPreferences를 구현한 후 취약점이 해결되며, 이는 MobSF 보고서에서 해당 경고가 없는 것으로 입증됩니다.
class SecureStorage(context: Context) {
private val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
private val securePrefs = EncryptedSharedPreferences.create(
context,
"secure_prefs",
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
fun saveToken(token: String) {
securePrefs.edit().putString("auth_token", token).apply()
}
}
자주 묻는 질문
OWASP Mobile Top 10은 모바일 애플리케이션에서 가장 자주 발견되는 10가지 가장 위험한 취약점의 목록입니다. 이 문서는 개발자가 안전한 애플리케이션을 만들 때 무엇에 주의해야 하는지 이해하는 데 도움이 됩니다.
목록은 약 2–4년마다 업데이트됩니다. 최신 버전은 2024년에 출시되었습니다. 업데이트는 모바일 플랫폼의 변화, 새로운 API의 등장, 공격 방법의 진화를 반영합니다.
Mobile Top 10은 모바일 플랫폼의 특성을 고려합니다: 로컬 데이터 저장, 센서 작업, Android Intent 시스템, 오프라인 모드, 앱 스토어 게시 특성 등 웹 버전에는 없는 요소들입니다.
OWASP Foundation 통계에 따르면 가장 일반적인 것은 M2 — Insecure Data Storage입니다. 모든 카테고리의 테스트된 모바일 애플리케이션 중 60% 이상에서 발견됩니다.
MobSF — 무료 정적 분석 도구 — 를 설치하는 것으로 시작하세요. 애플리케이션의 APK 또는 소스 코드를 업로드하면 MobSF가 프로젝트에 존재하는 Mobile Top 10 카테고리를 자동으로 표시합니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.