모바일 애플리케이션과 운영 체제는 데스크톱 애플리케이션보다 더 안전하지만 정기적인 테스트 계획과 강력한 보안 기능을 필요로 합니다. 모바일 앱 개발 단계에서는 이러한 필요성이 더욱 분명해집니다. 로컬 데이터 스토리지, 중요한 정보, 엔드포인트 통신, 인증 및 검증, 코드 품질, 네트워크 연결 등 다양한 영역에 보호가 필요합니다. 여기서 OWASP 모바일 보안 테스트 가이드는 개발자가 애플리케이션을 안전하게 보호할 수 있는 지침을 제공합니다.
OWASP 모바일 보안 테스트 가이드
OWASP 모바일 보안 테스트 가이드는 iOS 및 Android 모바일 보안 테스터를 위한 모바일 애플리케이션 보안 개발, 테스트, 리버스 엔지니어링 지침을 수록한 종합 설명서입니다. 모바일 보안 테스트의 중요한 요소, 개념, 기술에 대해 간단히 살펴보겠습니다.
OWASP 모바일 앱 테스트 가이드 요구사항 및 검증
OWASP 모바일 애플리케이션 보안 검증 표준(MASVS)은 소프트웨어 설계자, 테스터 및 개발자가 안전한 모바일 애플리케이션을 만들기 위해 따르는 표준입니다. 프로젝트의 여러 단계 동안 다양한 시나리오가 다양한 팀 구성원에 의해 다뤄집니다. 개발자는 개발에 대해 설명된 보안 요구 사항을 따르고, 테스터는 모범 사례와 테스트 사례를 따라 모바일 앱 침투 테스트를 수행하며, 팀은 공급업체와 협력하는 동안 규정을 준수하고 지침을 엄격히 준수할 수 있습니다.
모바일 앱 분류법
‘모바일 앱’이라는 용어는 모바일 기기에서 실행되는 모든 프로그램을 의미합니다. 모바일 앱에는 다음과 같은 특정 유형이 있습니다.
네이티브 앱
이러한 앱은 앱을 사용할 시스템 전용으로 만들어져서 모바일 기기의 운영 체제와 긴밀하게 상호작용합니다. 따라서 네이티브 앱은 카메라, 센서 등과 같은 장치의 다른 구성 요소에 거의 항상 바로 액세스할 수 있습니다. 그리고 이러한 앱에는 자체 소프트웨어 개발 키트(SDK)가 포함되어 있습니다.
출처: CleverTap
웹 앱
웹 앱은 기기의 브라우저에서 실행되며 거의 네이티브 앱과 비슷하게 보입니다. 기기의 구성 요소와는 많이 상호작용하지 않으며 어느 정도 샌드박스화되어 있습니다.
Source: CleverTap
하이브리드 앱
네이티브 앱과 웹 앱의 특징 합쳐진 형태입니다. 이들은 네이티브 앱처럼 실행되지만 앱의 일부는 내장된 웹 브라우저에서 실행됩니다. 이때, 웹-네이티브 추상화 레이어가 관련 액세스 제어를 지원합니다.
출처: CleverTap
프로그레시브 웹 앱
일반 웹 페이지처럼 보이지만 개발자가 오프라인으로 작업할 수 있고 모바일 기기 하드웨어에 액세스할 수 있다는 추가적인 이점이 있습니다. 웹에서 사용할 수 있는 여러 개방형 표준을 결합하여 더 나은 사용자 환경을 제공합니다.
출처: DEV
모바일 앱 보안 테스트
모바일 애플리케이션의 보안 테스트는 개발 단계부터 출시 단계까지 모두 수행해야 합니다. 다양한 유형의 테스트가 수행됩니다. 이러한 테스트를 살펴보겠습니다.
블랙박스 테스트
테스터가 실제 공격자처럼 행동하며 공개적으로 사용 가능하고 검색 가능한 정보에 대해 가능한 모든 조합과 사용 사례를 살펴봅니다. 이 테스트는 ‘제로 지식 테스트’라고도 불립니다.
화이트박스 테스트
위의 내용과는 정반대인 테스트로, 이때 테스터는 취약점, 수정 사항, 소스 코드, 설명서, 다이어그램에 대한 지식을 가지고 보다 정교한 테스트를 수행합니다. 이 테스트는 ‘숙지 테스트’라고도 불립니다.
그레이박스 테스트
위에서 언급한 두 가지 유형 사이에 있는 이 테스트에서는 테스터가 자격 증명과 같은 일부 정보를 제공받게 되며 그 밖의 영역은 일반적으로 숨겨집니다.
취약성 분석
여기서 테스터는 앱에서 취약성을 찾습니다. 정적 분석에는 소스 코드의 상세한 분석이 포함됩니다. 수동 또는 자동으로 수행될 수 있습니다. 동적 분석은 런타임 중에 수행되므로 더욱 정교합니다. 이를 통해 테스터가 취약한 진입점, 취약점, 허점 등과 같은 세부 사항을 살펴볼 수 있습니다.
출처: Zero2Infynite
침투 테스트
이 테스트는 최종 또는 거의 최종 단계에서 수행됩니다. 준비, 정보 수집, 애플리케이션 매핑부터 실제 테스트 및 보고까지의 철저한 계획이 수반됩니다.
모바일 앱 인증 아키텍처
모바일 애플리케이션에 대한 인증은 중요하며 사용자 자격 증명(암호, PIN), 중요한 정보(SIM, 암호 생성기, 하드웨어 토큰), 생체 인식(지문, 음성, 망막) 등과 같은 시나리오에서 활용됩니다. 몇 가지 구체적인 인증 요구 사항은 다음과 같습니다.
- 원격 엔드포인트에서 사용자 이름/암호 인증을 수행해야 함
- 암호 정책이 시행되어야 함
- 2차 인증 요소는 중요한 앱에 적용됨
- 사용자에게 최근 계정 활동을 알려야 함
인증 아키텍처에는 두 가지 중요한 메소드가 있습니다.
Stateful 인증
모든 세션에 대해 고유한 세션 ID가 생성됩니다. 들어오는 모든 새 요청에 대해 해당 세션 ID가 참조로 사용됩니다. 여기에 임의의 세션 ID가 생성됩니다.
Stateless 인증
사용자에 대한 모든 정보는 서버로 전달되는 클라이언트 측 토큰에 저장됩니다. 따라서 서버 측에서 세션 상태를 유지할 필요가 없습니다. 이를 통해 확장성과 성능이 향상됩니다.
네트워크 통신 테스트
네트워크에 연결된 모든 모바일 앱은 HTTP(Hypertext Transfer Protocol) 또는 TLS(Transport Layer Security) 또는 HTTPS를 사용하여 원격 엔드포인트 간에 데이터를 전송합니다. 여기서 네트워크 기반 공격이 발생할 수 있습니다. 중요한 전략 중 하나는 모바일 기기에 시스템 프록시를 구성하여 HTTP(S) 트래픽을 가로채는 것입니다.
모바일 앱의 암호 기법
암호 기법은 기밀성, 데이터 무결성, 진위 여부에 초점을 맞춤으로써 모바일 애플리케이션의 데이터 보안을 지원합니다. 기밀성은 암호화 및 암호 해독의 도움을 받아 데이터를 보호합니다. 데이터 무결성은 데이터의 일관성을 보장하고 데이터의 오용 또는 변조 여부를 식별합니다. 인증은 소스와 사용자를 확인하는 데 중점을 둡니다. 데이터 보안을 보장하기 위해 사용되는 주요 메서드는 대칭 키 암호화 알고리즘, 공개 키 암호화 알고리즘, 해시 기술, 메시지 인증 코드, 서명, 키 파생 기능입니다.
코드 품질 테스트
개발자들은 각기 다른 프로그래밍 언어와 프레임워크를 사용하기 때문에 코드의 품질이 중요합니다. 시장에 여러 버전과 업그레이드가 출시되고 있는 상황에서 코드 품질을 테스트하면 처음부터 보안을 유지할 수 있습니다. 일반적인 취약성은 SQL 주입, XML 주입, 주입 공격 벡터, XSS 결함, 호스트 간의 버퍼 오버플로우입니다.
변조 및 리버스 엔지니어링
공격자가 날이 갈수록 지능화됨에 따라 모바일 앱 테스트도 더욱 정교해졌습니다. 컴파일된 앱을 분해하고, 정기적인 보안 패치를 적용하고, 라이브 프로세스와 코드를 변조하는 일이 일상화되었습니다. 변조란 특정 중단점과 보안 허점을 테스트하기 위해 모바일 애플리케이션의 환경 또는 동작을 변경하는 프로세스입니다. 리버스 엔지니어링은 소스 코드에 대한 특정 정보를 추출하여 컴파일된 앱의 심층 분석을 수행하는 데 초점을 맞춥니다. 이 두 가지 방법은 블랙박스 테스트와 보안 강화에 중요합니다.
Android 및 iOS 테스트 가이드
Android 및 iOS용 테스트 가이드는 모바일 플랫폼 세부 정보, 애플리케이션 라이프사이클의 다양한 개발 단계, 정적 및 동적 테스트, 리버스 엔지니어링 및 변조, 소프트웨어 보호 가이드 및 세부 테스트 사례와 같은 주요 구성 요소를 다룹니다. 개발자와 테스터는 이 가이드를 참조하여 강력한 애플리케이션을 개발하고 철저히 테스트하며 리버스 엔지니어링과 같은 공격이 있는지 확인할 수 있습니다. 여러 개발 단계가 다루어지기 때문에 더 나은 커버리지를 보장하기 위해 문제를 더 적극적으로 확인하고 수정할 수 있습니다. 제공된 자세한 테스트 사례는 실제 시나리오를 복제하고 해커처럼 생각하는 데에도 도움이 됩니다.
접근 방식 및 모범 사례
모바일 애플리케이션 보안도 중요하지만 더 높은 보안 태세로 전환하기 위한 다양한 옵션을 사용할 수 있습니다. 그 모범 사례는 다음과 같습니다.
- 철저한 평가: 모든 테스트는 환경에 대한 올바른 이해에서 시작됩니다.
- 코드 품질/보안 분석: 이를 통해 문제의 근원을 파악하여 보안에 집중할 수 있습니다.
- 침투 테스트: 여기서 테스트 사례를 실행하여 공격자가 데이터에 액세스하기 위해 활용할 수 있는 실제 취약점을 설명합니다.
- End-to-End 기기 테스트: 모든 주요 기기 및 운영 체제가 여기서 다뤄집니다.
- 전체 계획 수립 및 실행: 준비 및 실행에서 보고, 해결, 재테스트에 이르는 모든 단계가 고려됩니다.
미래를 위한 대비
IoT와 AI와 같은 새로운 기술은 사이버 공격자의 영역을 넓혀주고 있습니다. 또한 더 많은 기업들이 인터넷을 통해 연결될수록 그 범위는 더욱 넓어집니다. 자동화는 새로운 시스템이 서로 상호작용하고 이동 중에 정보에 액세스하는 것을 의미합니다. 이러한 복잡성과 연결은 취약성 수준에 더 영향을 미칠 수 있습니다. 이제 봇도 혼합이 도입되어 공격 속도가 빨라지고, 정교해지고, 탐지와 제어가 훨씬 어려워집니다. 악성 프로그램 사이트는 최근 SSL 인증서로 위장된 것으로 확인되었습니다. 이러한 프로그램은 사용자가 안전하게 탐색하고 있다고 쉽게 속일 수 있습니다. 기업들은 개인화라는 명목으로 사용자 데이터를 수집해 왔습니다. 특히 항상 이동하면서 대화하고 거래하는 모바일 사용자의 데이터를 수집했습니다. 기업들은 개인화된 쇼핑 경험을 제공하면서 고객의 행복과 안전을 유지하기 위해 보안을 강화할 필요가 있습니다. 피싱 공격 또한 증가하고 있습니다.
그러나 기술은 또한 새로운 문제에 대처하기 위해 보조를 맞추고 있습니다. 머신러닝 기반 모바일 앱 보안은 이러한 시기에 구세주가 될 가능성이 높습니다. 이를 통해 모든 활동을 실시간으로 모니터링하고 훨씬 더 높은 효율성, 정확성, 속도로 기업 데이터를 분석할 수 있습니다.
RASP(Runtime Application Self-Protection)는 애플리케이션의 실시간 분석을 수행함으로써 이 작업에 도움이 됩니다. 앱실링(AppSealing)과 같은 우수한 솔루션의 위협 분석을 이용하면 공격 벡터를 더 잘 커버할 수 있으므로 관련 조치를 신속하게 수행할 수 있습니다. 이것은 이제 기업들이 공격자들보다 우위를 점할 수 있다는 것을 의미합니다.