모바일 디바이스는 데스크톱 및 랩톱보다 더 인기를 끌고 있습니다. 이것은 휴대가 간편할 뿐만 아니라 기술 발전으로 데스크탑과 거의 비슷한 기능을 수행할 수 있습니다. Techjury.net에 따르면 지난 1년 동안 모바일 사용자들은 10% 이상 증가했으며, 미국에서 온라인 사용자들이 소비하는 시간의 거의 51%를 모바일 디바이스가 차지하고 있다고 합니다.
사용자는 뉴스 시청에서 이메일 확인, 인스턴트 메시징, 온라인 물품 구매 및 은행 거래에 이르기까지 거의 모든 활동에 대해서 모바일 애플리케이션을 이용합니다. 이러한 앱을 통해 기업은 위치, 사용 통계, 전화 번호, 좋아요, 싫어요 및 기타 사용자에 대한 의미있는 지표 등의 유용한 정보를 수집할 수 있으며, 이는 기업이 서비스를 개선하기 위한 올바른 결정을 내리는데 도움이 됩니다. 이러한 모바일 디바이스의 데이터가 나쁜 손아귀에 들어간다면 사용자에게 해로움을 끼칠 수가 있습니다.
따라서 모바일 앱에 대한 보안의 필요성은 더욱 피할 수 없게 되었습니다.
모바일 앱 보안이란 무엇인가요?
모바일 앱 보안은 중요한 개인 및 금융 정보를 위험에 빠뜨리는 악성코드나 기타 디지털 사기와 같은 해커의 외부 위협으로부터 애플리케이션을 보호하기 위한 수단입니다.
오늘날 모바일 앱 보안은 다른 분야와 같이 그 중요성이 점점 커지고 있습니다. 모바일 보안 침해는 해커에 의해서 사용자 사생활에 실시간으로 접근할 수 있을 뿐만 아니라, 현재 위치, 은행 정보, 개인 정보 등과 같은 데이터도 공개될 수 있습니다.
모바일 앱 보안이 취약한 경우
소비자는 보안 조치를 취하기 위해 자신의 애플리케이션을 테스트하려는 조직을 의지하며 신뢰를 나타냅니다. 하지만, IBM이 실시한 연구에 따르면 충격적인 사실이 밝혀졌습니다.
출처: IBM
위의 숫자는 해커가 모바일 애플리케이션의 보안 허점을 악용하기에 충분한 동기를 제공하며 해커는 안전하지 않은 코드에서 다음 사항 중 일부 또는 전부를 활용하려고 시도합니다.
고객 정보
해커는 웹 사이트 (예를들어, 이메일, 은행, 소셜 네트워킹 사이트 등) 또는 디바이스의 로그인 자격 증명을 얻습니다. 아누비스 뱅킹 트로이 목마는 이 범주에서 악명 높은 예로, 손상된 앱을 다운로드하도록 유도하여 사용자의 디바이스에 들어갑니다. 악성앱의 일부는 안드로이드의 공식 앱 스토어에서 호스팅 되기도 합니다. 일단 디바이스가 감염되면 트로이 목마는 SMS를 송수신하고, 연락처 목록을 읽고, 디바이스 위치에 대한 접근 허가를 요청하고, 푸시 알림을 허용하며, 모바일 디바이스의 개인 파일에 대한 접근을 하는 모바일 연결(mobile connection) IP 주소를 결정하도록 합니다.
2019년 5월 왓츠앱(WhatsApp)은 알려지지 않은 번호에서 왓츠앱으로 사용자를 호출하는 것만으로 모바일 디바이스를 감염시킬 수 있는 이스라엘 기업 NSO 그룹의 스파이웨어에 자신들의 앱이 취약하다는 것을 인정했습니다.
출처: TechCrunch
사용자가 전화를 받지 않더라도 사용자의 디바이스는 손상될 수 있습니다. 일단 감염되면, 스파이웨어는 연락처 목록, GPS 정보, 미디어 파일 등 거의 모든 데이터를 디바이스에서 해커의 서버로 보낼 수 있습니다.
금융 정보
해커는 특히 일회용 비밀번호가 요구되지 않은 경우에, 은행 거래를 위한 신용 카드 및 직불 카드 번호를 얻을 수 있습니다. 카스퍼스키(Kaspersky) 연구원들은 Ginp라는 새로운 은행 트로이 목마를 발견하였습니다. 이 트로이 목마는 사용자 디바이스에서 사용자 자격 증명과 신용 카드 정보를 훔칠 수 있는 것으로 밝혀졌습니다. 디바이스의 SMS 기능을 제어하는 기능을 통해 은행 기능을 조작 할 수 있습니다. 이 조작된 코드는 스페인 은행의 24개 앱에서 발견된 것으로 밝혀졌습니다.
IP 도난
해커는 불법 복제본을 만들거나 앱을 소유한 회사의 지적 재산을 훔치기 위해 앱의 코드 베이스를 얻습니다. 앱이 성공적일수록 앱스토어에 더 많은 복제본이 나타날 수 있는 확률이 높습니다. 예를 들어, 구글 플레이 스토어(Google Play Store)에서 이용 가능하지 않았던 포트나이트(Fortnite)와 펍지 모바일(PUBG Mobile)은 사용자에게 인기를 끌었습니다. 그러자 많은 복제품들이 원작의 높은 인기 때문에 구글 플레이 스토어에서 높은 인기를 끌게 되었고, 곧 구글은 사용자에게 공식 포트나이트는 구글 플레이 스토어에서 이용 가능하지 않음을 사용자에게 경고해야 했습니다.
수익 손실
유틸리티나 게임앱에서 앱 소유자의 주 수익원인 프리미엄 기능에 접근할 수 있습니다. 2016년 모바일 보안 회사인 블루박스(Bluebox)는 인기있는 앱인 훌루(Hulu) 및 틴더(Tinder)에 대해서 어떻게 해커가 보안 허점을 악용하여 프리미엄(premium) 기능에 접근하여 앱 소유자에게 손실을 입혔는지에 대해서 공개했습니다. 당시 훌루의 OTT 스트리밍 서비스 월간 구독료는 한달에 7.99달러에 팔리고 있었습니다.
브랜드 신뢰도
중요한 사용자 데이터를 잃는 것 외에도, 손실은 사용자 정보의 오용과 그 영향을 받은 당사자가 소송을 취하는 형태로 나타날 수 있습니다. 보안 수단을 실시하는데 있어 긍정적 인 점은 고객이 충성심을 유지하고 브랜드를 신뢰한다는 것이지만, 부정적인 점은 고객의 신뢰가 영원히 상실될 수 있다는 것입니다. 기업은 비즈니스의 중심에 브랜드에 대한 고객의 신뢰가 있음을 인식해야 합니다. 따라서 앱 개발에 있어 비즈니스의 이러한 측면을 올바르게 고려해야 합니다.
모바일 앱 보안의 허점
모바일 앱은 안티 바이러스 역할을 하거나 인터넷을 통해 데이터를 안전하게 전송하도록 설계되지 않았습니다. 오히려 원활한 인터페이스 제공과 사용자에게 최고의 기능을 경험하도록 하는 것에 중점을 두고 있습니다. 마찬가지로 안티 바이러스 앱을 설치하면 네트워크를 보호하고 디바이스에 대한 공격을 방지할 수 있지만 취약한 비밀번호나 잘못 설계된 앱에 대한 보호 기능을 제공할 수는 없습니다.
대부분의 일반적 보안 문제는 개발자들을 위한 레퍼런스를 위해서 OWASP(Open Web Application Security Project) 산하의 업계 전문가에 의해서 문서화되어 있습니다. 인기있는 목록인 OWASP Mobile Top 10은 모바일 디바이스의 공격 경로를 제시하고 개발하는데 있어 업계 전문가의 지식을 종합적으로 기반하고 있습니다.
여기에서 상위 10 개의 모바일 위험과 디바이스 및 앱을 보호하는 방법에 대한 자세한 기사를 읽을 수 있습니다.
안드로이드 앱 보안 위험
리버스 엔지니어링
안드로이드 앱은 이클립스(Eclipse)와 같은 통합개발환경(IDE; Integrated Development Environment)을 갖춘 자바(Java)로 개발됩니다. 이러한 자바 앱은 인터넷에서 쉽게 통용되는 다양한 도구로 컴파일 이전으로 되돌릴 수 있습니다. 안드로이드에서는 바이트 코드가 변경되거나, APK 파일 형식으로 재 패키징될 수 있습니다. 역공학이 가능한 안드로이드 앱은 테스트 로그인 자격 증명, 잘못된 디자인에 대한 통찰력, 사용된 라이브러리 및 클래스에 대한 세부 정보를 손쉽게 노출합니다. 또한 앱에서 사용되는 암호화 유형에 대한 세부 정보가 노출될 수 있습니다. 이를 통해 공격자는 하나의 디바이스 뿐만 아니라 동일한 복호화 방법을 사용하여 여러 디바이스를 해킹할 수 있습니다.
안전하지 않은 플랫폼 사용
앱 개발자가 구글이 권장하는 모범 사례를 무시하고 특히나 불안전한 안드로이드 인텐트(Intent)나 플랫폼 권한 설정을 통해서 모바일 OS와 통신한다면, 해당 안드로이드 OS나 앱은 OWASP Mobile Top 10 위험에 노출됩니다. 예를 들어 개발자가 외부로 노출한 서비스에 대한 보안을 소홀히 하거나 API 호출시에 잘못된 플래그를 설정할 경우에는 해당 앱의 약점이 해커에게 그대로 노출됩니다. 해커는 합법적인 앱에서 사용되는 BroadcastReceiver 인스턴스를 수신하기 위해 안드로이드 디바이스에서 스누핑하는 행동을 보입니다. 개발자는 합법적인 앱에 대한 메시지 송수신을 위한 LocalBroadcastManager 사용을 무시하는 경향이 있으며, 이는 결국 보안의 빈틈을 만들어 냅니다.
업데이트 무시
많은 안드로이드 개발자들은 정기적인 앱 업데이트를 하지 않거나 안드로이드에서 발행한 OS 패치에 주의를 기울이지 않아 새로 발견된 취약점으로부터 보호 받지 못하고 있습니다. 업데이트에는 항상 최신 보안 패치를 포함하고 있습니다. 이를 무시한다면 애플리케이션은 최신 보안 위험에 노출될 수 있다는 점을 명심해야 합니다.
루팅된 디바이스
안드로이드 OS는 비록 사용자에게 경고 문구를 노출시키지만, 사용자가 3rd party 앱을 이용하여 디바이스의 루트 권한을 획득하도록 허용하고 있습니다. 그러나 모든 사용자가 자신의 루팅된 디바이스가 해커나 악성 소프트웨어를 통한 위변조에 노출될 수 있다는 점을 이해하고 있지 않습니다. 따라서 개발자는 앱이 루팅된 환경에서 실행되지 않도록 하거나 사용자에게 정기적인 경고를 노출하도록 해야 합니다.
iOS 앱 보안 위험
안드로이드 OS와는 달리 애플의 iOS는 보안 정책을 엄격하게 적용하고 있으며, 폐쇄형 운영체제입니다. 앱은 다른 앱과 통신하거나 다른 앱의 디렉토리나 데이터에 직접적인 접근을 할 수 없습니다. iOS 앱은 Xcode와 같은 도구를 사용하여 기본적으로 Objective C 언어로 개발됩니다. iOS는 애플의 랩톱 및 맥 컴퓨터에서 사용되는 OSX와 동일한 ARM 버전의 XNU 커널을 기반으로 합니다.
탈옥(Jailbreak)
탈옥은 애플 디바이스 관련하여 널리 사용되는 용어입니다. 탈옥은 사용자가 서명되지 않은 코드를 모바일 디바이스에서 실행할 수 있도록 커널의 보안 허점을 이용하는 것을 포함합니다. 탈옥은 테더링(tethered)되어 있으므로 사용자가 전화를 재부팅할 때마다 랩톱에 연결되거나 탈옥된 코드를 실행해야 합니다. 완전 탈옥(Untethered Jailbreak)은 재부팅 후에도 탈옥된 코드가 디바이스에 그대로 남아 있음을 의미합니다.
사용자 인증
iOS는 얼굴 인증(Face ID)이나 지문 인증(Touch ID)과 같은 하드웨어 수준의 보안을 제공하고 있으며, 이러한 인증을 위해서 OS와는 별도의 프로세스를 사용하도록 설계되었기 때문에 안전하다고 주장합니다. 이것을 전용 마이크로 커널에서 실행되는 Secure Enclave라고 합니다. 그러나 해커들은 지문 인증이 특히 그레이키(GrayKey)라고 불리우는 디바이스로 인해 손상될 수 있음을 보여 주었습니다. 그레이키는 비밀번호 추측을 위해서 기다리는 시간을 줄여주는 무차별 대입(brute force) 공격을 지원하는 도구입니다. 만약 앱 개발자가 지문 인증 시스템을 사용하여 앱내 데이터 또는 서비스를 보호하였다면, 이러한 유형의 공격에 노출되기도 합니다.
안전하지 않은 데이터 스토리지
대부분의 앱은 SQL 데이터베이스, 쿠키, 바이너리 데이터 저장소 등을 사용하여 데이터를 저장하며, 일부는 일반 텍스트 형태로 저장하기도 합니다. 이러한 스토리지는 운영 체제, 프레임워크 또는 컴파일러의 취약점이 있는 경우에 해커에 의해서 해당 위치가 노출될 수 있습니다. 또한 탈옥된 디바이스는 데이터가 쉽게 노출되는 위험을 가지고 있습니다. 만약 해커가 데이터베이스에 접근을 하게되면, 해커는 앱을 변조하여 자신의 컴퓨터에 정보를 수집하도록 조작합니다. 탈옥된 디바이스라면, 복잡하게 설계된 암호화 알고리즘까지도 노출될 수 있습니다.
보안 전문가들은 안전하지 않은 데이터 스토리지가 iOS 디바이스에서 가장 흔한 취약점 중 하나이며, 해커는 비밀번호, 금융 정보, 개인 데이터 또는 사용자 정보를 탈취하기 위해서 이러한 취약점을 악용한다고 경고합니다.
애플리케이션의 일반적인 위험
낮은 수준의 암호화
암호화는 암호키를 사용하여 데이터를 안전하게 전송하는 방법으로 키가 일치하지 않으면 데이터의 내용을 볼 수 없습니다. 시만텍의 자료에 따르면, 13.4%의 소비자 디바이스와 10.5%의 엔터프라이즈 디바이스는 암호화를 활성화하지 않아 민감한 데이터가 일반 텍스트 형태로 쉽게 노출될 수 있다고 보고되었습니다. 높은 수준의 데이터 암호화를 사용하면 앱은 쉽게 깨지지 않습니다.
악성 코드 주입
사용자 정보를 입력받는 폼은 악성 코드를 주입하기 용이합니다. 따라서 많은 해커들이 서버 데이터에 접근하기 위해서 이러한 취약점을 활용합니다. 예를들면, 특정 앱의 경우에는 사용자가 필드에 입력할 수 있는 문자를 제한하지 않았습니다. 이를 통해 해커는 JavaScript 코드를 로그인 필드에 삽입하여 개인 정보에 접근할 수 있었습니다.
출처: Threatpost
바이너리 플랜팅(Binary Planting)
공격자가 악성코드를 포함하는 바이너리 코드를 로컬이나 원격 시스템에 주입하여 취약성을 가진 애플리케이션이 이를 로딩하고 실행하도록 하는 공격을 의미합니다. 이러한 공격은 악의적인 SMS의 도움으로 수행되거나, 사용자가 악의적인 링크를 클릭하도록 강요하여 수행될 수 있습니다. 이러한 방식으로 해커는 합법적인 폴더나 설치 프로그램 파일내에 악성코드를 주입하고 마음대로 실행하여 디바이스의 보안을 손상시킬 수 있습니다. 바이너리 플랜팅은 공격자가 앱의 코드를 디컴파일하여 핵심 코드에 접근하려고 하는 리버스 엔지니어링으로 이어질 수 있습니다. 코드가 공개되면, 해커는 취약점을 찾고 악의적인 행동을 하기 위해서 이를 이용할 수 있습니다.
출처: ZDNet
모바일 봇넷(Mobile Botnets)
이들은 트로이 목마를 이용하여 만들어진 IRC 네트워크에서 실행되는 일종의 봇입니다. 감염된 디바이스가 인터넷에 연결되면 클라이언트로 동작하여 정보를 서버로 보냅니다. 모바일 봇넷은 디바이스를 완전히 완전히 통제하는 것을 목표로 합니다. 이메일 및 문자 메시지를 보내고, 전화를 걸고, 사진 및 연락처 목록과 같은 개인 데이터에 접근하는데 사용될 수 있습니다.
출처: IT Pro
모바일 앱 보안 모범 사례
모바일 앱 보안의 모범 사례는 앱의 위험 없이 사용자의 개인 정보를 공개하지 않도록 보장 합니다. 개발자가 사용자에게 앱을 공개하기 위해 업로드 하기 이전에 모든 보안 검사가 수행되도록 해야 합니다. 개발자는 소비자 및 비즈니스 앱이 부주의한 요소에 의한 무단 접근이 발생하지 않도록 하기 위해 다음 방법을 고려해야 합니다.
데이터 보안 강화
사용자가 해커의 함정에 쉽게 걸리지 않도록 데이터 보안 정책 및 지침을 수립해야 합니다. 여기에는 정보가 디바이스간에 전송될 때 잘 구현된 데이타 암호화를 이용하여 필요시마다 방화벽과 보안 도구를 사용하는 것이 포함될 수 있습니다. 또한 안드로이드 및 iOS에 대해 제시된 지침을 참조할 수도 있습니다.
비밀번호 저장 안함
많은 앱들은 사용자가 로그인 자격 증명을 반복적으로 입력하지 못하도록 하기 위해 사용자에게 비밀번호 저장을 요청합니다. 탈취된 디바이스의 경우 개인 정보에 접근하기 위해서 이렇게 저장된 비밀번호의 수집을 시도합니다. 마찬가지로 비밀번호를 암호화되지 않은 형식으로 저장하면 해커에 의해서 수집되어질 가능성이 매우 높습니다. 이러한 상황이 발생하지 않도록 개발자는 모바일 디바이스내 비밀번호 저장을 자제해야 합니다. 대신에 모바일 디바이스가 없는 경우에도 사용자가 서버에 로그온하여 이를 변경할 수 있도록 앱 서버에 저장해야 합니다.
세션 로그아웃 시행
사용자는 현재 이용중인 웹 사이트 또는 앱에서 로그아웃하는 것을 잊어 버리는 경우가 많습니다. 이러한 습관은 금융 앱이나 결제 관련 앱인 경우 매우 해로울 수 있습니다. 이러한 이유로, 결제 앱은 일정 기간 동안 사용하지 않거나 로그아웃시 안정성을 높히기 위해서 사용자 세션을 종료하는 경향이 있습니다. 개발자는 사용자가 박식하다고 하더라도 모든 비즈니스 및 소비자 관련 앱에서 세션 로그 아웃을 시행해야 합니다.
보안 전문가에게 자문
내부 보안팀의 경험이 아무리 많다고 하더라도, 앱에 관한 외부의 관점은 또 다른 견해를 제공할 수 있습니다. 앱 배포전에 보안 취약점을 식별하고, 해당 취약점이 노출될 가능성을 줄이는데 도움을 줄 수 있는 여러 보안 업체와 앱들이 있습니다. 기업은 개발팀이 3rd party 보안 업체에 평가를 통해서 보안 기능이 검증된 앱을 확보할 수 있도록 장려해야 합니다.
멀티팩터(Multi Factor) 인증 적용
멀티팩터 인증은 사용자가 앱에 로그인 할 때 별도의 보안 계층을 추가합니다. 멀티팩터 인증 방법은 해커가 쉽게 추측이 가능하고, 앱을 손상시킬 가능성이 있는 낮은 수준의 비밀번호를 보완합니다. 멀티팩터 인증은 디바이스 또는 앱에 로그인시에 비밀번호와 함께 입력을 해야 할 별도의 비밀 코드를 제공합니다 .이 코드는 SMS, 이메일, Google OTP 또는 생체 인식 방법을 통해 전송됩니다. 앱에서 멀티팩터 인증을 시행하지 않으면 해커들은 낮은 수준의 비밀번호를 추측할 수 있습니다.
출처: Avatier
모의 침투 테스트(Penetration Testing)
모의 침투 테스트는 앱내의 알려진 취약점을 확인하기 위해 수행됩니다. 공격자가 사용할 수 있는 취약점과 애플리케이션의 보안을 손상시킬 수 있는 잠재적인 약점을 찾는 것을 목표로 합니다. 낮은 수준의 비밀번호 정책, 암호화되지 않은 데이터, 3rd party 앱에 대한 권한, 비밀번호 만료 프로토콜 부재 등을 확인하는 것을 포함합니다. 보안팀은 잠재적인 해커의 공격 행위를 재조립하여 시행함으로써 앱에 약점이 있는지 확인합니다. 앱을 안전하게 유지하기 위해 모의 침투 테스트를 정기적으로 수행하는 것이 좋습니다. 화이트 박스 테스트 및 블랙 박스 테스트는 보안 문제를 확인하기 위해 수행 할 수 있는 다른 유형의 모의 침투 테스트 조치입니다.
출처: SecureOps
개인 디바이스 사용 금지
시스템 구매의 오버헤드 비용을 방지하기 위해 많은 기업들은 직원들에게 개발을 위해 자신의 랩톱이나 스마트 디바이스를 가져오라고 요청하는 것을 선호합니다. 이로인해 직원의 디바이스에 수집되었을 수 있는 수 많은 감염으로 기업의 네트워크가 열릴 수 있습니다. 멀웨어와 트로이 목마는 이러한 방식으로 한 디바이스에서 다른 디바이스로 이동합니다. 따라서 보안 정책을 마련하고 그러한 관행을 방지하는 것이 중요합니다. 사내 네트워크에 연결되는 각 디바이스는 방화벽, 바이러스 백신 및 스팸 방지 소프트웨어를 사용하여 철저히 검사해야 합니다. 그렇지 않으려면 사내 네트워크를 전혀 사용하지 않아야 합니다.
예방 조치된 3rd party 라이브러리 사용
3rd party 라이브러리를 사용하면 개발자가 수행하는 코딩 양이 줄어들고 애플리케이션 개발 프로세스가 쉬워질 수 있습니다. 그러나 그것은 위험한 제안이 될 수 있습니다. 예를 들어, GNU C 라이브러리에는 버퍼 오버플로를 허용하는 보안 결함이 있어 해커가 악의적인 코드를 원격으로 실행하여 디바이스를 손상시킬 수 있습니다. 이 보안 결함은 GNU 프로젝트에 기여한 오픈 소스 커뮤니티가 2016년에 수정 프로그램을 발표하기 전까지는 8년 동안 지속되었습니다. 따라서 개발자는 여러개의 3rd party 라이브러리의 사용을 제한하고 공격으로부터 앱을 안전하게 지키기 위해서 라이브러리 처리 정책을 만들어야합니다.
사용자 권한 제한
사용자에게 더 많은 권한이 부여 될수록 앱의 보안이 위협받을 가능성이 높아집니다. 많은 권한을 가진 사용자가 해킹되면 해커는 상상할 수 없는 수준의 앱 손상을 입힐 수 있습니다. 마찬가지로 앱은 필요하지 않은 기능(예 : SMS, DCIM 폴더 읽기 권한 등)에 대한 디바이스 권한을 요청해서는 안됩니다.
세션 처리
모바일 디바이스의 세션은 데스크톱에 비해 훨씬 오래 지속됩니다. 이렇게 하면 서버 부하가 증가합니다. 디바이스 식별자 대신 토큰을 사용하여 세션을 만드는 것이 더 안전한 옵션입니다. 토큰은 필요할 때마다 취소할 수 있으며 분실 또는 도난당한 디바이스의 경우 더 안전합니다. 개발자는 세션 만료를 옵션으로 고려해야 합니다. 분실 및 도난당한 디바이스에 대해 데이터를 원격으로 지우는 것도 앱에 적용하기 좋은 안전 옵션입니다.
안전한 키 관리
키 관리는 암호화에 중요합니다. 개발자는 앱 보안에 해로운 하드 코딩된 키 사용을 피해야 합니다. 만약 누군가 키를 훔치면, 그들은 해당 디바이스를 손쉽게 제어할 수 있습니다. 키는 안전한 컨테이너에 보관해야 하며, 대개는 사용자 디바이스에 보관되지 않아야 합니다. 이 목적으로 널리 사용되는 암호화 프로토콜 중 하나는 MD5 해시와 SHA1입니다. 개발자는 256비트 키를 사용하는 SHA-256 해시와 같은 최신 암호화 표준과 API를 사용해야 합니다.
주기적인 앱 테스트
안전한 모바일 앱 확보는 일회성 프로세스가 아닙니다. 매일 새로운 위협이 나타나고 이러한 위협이 사용자 디바이스에 손상을 입히기 전에 위협을 패치하기 위한 업데이트가 필요합니다. 2016년과 2017년에 사용자의 윈도우 디바이스를 암호화하고 비트 코인으로 몸값을 요구한 랜섬웨어 워너크라이(WannaCry)와 낫페트야(NotPetya)의 확산과 같은 악재는 개발자 커뮤니티에서 사이버 보안을 심각하게 받아들일 수 있는 충분한 경보를 일으켰습니다. 이러한 랜섬웨어는 주로 데스크톱에 크게 영향을 줍니다. 하지만 그 확산 속도와 피해는 앱의 주기적인 테스트 필요성을 보여줍니다. 언제나 위협은 우리 눈 앞에 있음을 잊지 말아야 합니다.
HTTPS 통신 보장
HTTPS는 보안된 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol over Secure Socket Layer)을 나타내며 HTTP 통신과 대조됩니다. HTTPS는 데이터가 네트워크를 통해 전송될 때 보안을 제공합니다. 통신 프로토콜은 TLS(Transport Layer Security)에 의해 암호화 됩니다. TLS 및 SSL(Secure Socket Layer)은 다양한 통신 채널을 통한 데이터 프라이버시를 보장하는 암호화 프로토콜입니다. 반면, HTTP 데이터는 암호화되지 않고, 검증되지 않으며, 검증할 수 없으므로 해커가 사용자 콘텐츠를 염탐할 수 있습니다. 개발자는 앱이 연결된 서버에서 유효한 SSL 인증서를 확인하고 HTTPS 프로토콜만 사용하여 앱과 서버간에 데이터를 전송해야 합니다.
캐시 암호화
캐시는 사용자 디바이스에 데이터를 임시로 저장하는 소프트웨어 구성 요소입니다. 이것은 주로 데이터 검색의 지연을 방지하는데 사용됩니다. 만약 캐시에 저장된 데이터가 암호화되어 있지 않다면, 해커는 손쉽게 데이터에 접근할 수 있습니다. 때때로 세션이 종료된 후에 앱이 데이터를 제거하지 않아 캐시가 만료되지 않고 남아있는 경우가 있습니다. 이러한 캐시 파일이 해커의 손에 들어간다면 해커는 이 파일을 조작하여 사용자 데이터나 서버에 접근할 수 있습니다.
RASP 보안 적용
RASP는 런타임 애플리케이션 자가 보호(Runtime Application Self Protection)를 나타내며 숨겨진 취약점에 대한 가시성을 높여 런타임시 발생하는 공격으로부터 앱을 보호합니다.
출처: E-SPIN
앱이나 런타임 환경과 통합되며, 공격자의 앱 호출을 지속적으로 가로채는 보안 소프트웨어 입니다. RASP 계층은 인입되는 트래픽을 사전에 분석하고 앱내에서 부정 호출이 되는 것을 방지합니다. 모든 수신 요청은 애플리케이션과 서버 사이에있는 RASP 계층을 통해 검사됩니다. RASP에 대한 우리의 게시물을 확인하여 자세한 내용을 확인할 수 있습니다.
코드 난독화
해커로부터 앱을 보호하는 가장 좋은 방법 중 하나는 코드 난독화 기술을 사용하는 것입니다. 이것은 해커가 이해하기 어려운 코드를 만드는 행위입니다. 이 기술은 널리 보급되어 사용되었고, 해커의 공격으로부터 코드를 숨기는데 활용되었습니다. Obfuscators는 프로그래밍 코드를 사람이 이해할 수 없는 형식으로 자동 변환하는데 사용됩니다. 코드 난독화에는 다음이 포함됩니다.
- 일부 또는 전체 코드 암호화
- 사용된 라이브러리 또는 API에 대한 정보를 나타내는 메타 데이터 제거
- 클래스와 변수 이름을 추측할 수 없도록 이름 변경
코드는 소프트웨어 프로그램을 사용하여 리버스 엔지니어링 할 수 있는 해커로부터 데이터와 속성 값을 보호하기 위해서 난독화됩니다. 애플의 iOS에서는 라이브러리를 오픈하고 있지 않고 있기 때문에 난독화와 같은 기술이 널리 사용되고 있지는 않습니다. 반면에 안드로이드는 오픈 소스 라이브러리를 사용하고 있습니다. 따라서 안드로이드 개발자는 코드 난독화 처리를 필수적으로 해야 합니다.
앱 보안 테스트를 위한 무료 도구
모바일 앱 개발자들은 그들의 앱이 사용자의 관심을 끌수록 해커도 동시에 관심을 갖기 시작한다는 것을 직관적으로 알고 있어야 합니다. 위에서 설명한 것처럼 해커는 자동화된 도구를 사용할 뿐만 아니라 매뉴얼하게 앱이나 디바이스의 취약점을 악용하려고 합니다. 그렇기 때문에 개발자가 앱을 앱 스토어에 업로드하기 전에 앱을 철저히 테스트 하는 것이 매우 중요합니다. 다행히 애플리케이션 보안 테스트 또는 AST 도구라고 하는 여러 가지 무료 도구를 사용할 수 있어 개발자가 안전하게 설계된 보안임을 용이하게 보장할 수 있습니다. 전통적인 위협에 대해서 수동으로 코드를 검토하는데는 시간이 걸립니다. 또한 새롭게 부상하는 위협을 추적하는 것은 다른 수준의 복잡성을 필요로 합니다. 이러한 이유 때문에 AST 도구는 테스트 프로세스를 자동화 합니다. 따라서 개발자는 보안을 강화하고 시간을 절약하기 위해 다음 도구 중 일부를 사용해야 합니다.
ADB (Android Debug Bridge)
이름에서 알 수 있듯이 ADB는 안드로이드 앱을 분석하기 위한 것이며 Android SDK Platform-Tools 패키지의 일부로 제공됩니다. 클라이언트, 데몬 및 서버의 세 가지 구성 요소가 있습니다. 클라이언트는 명령을 보내고 개발 시스템 또는 실제 모바일 디바이스에서 실행할 수 있으며 터미널을 통해 호출될 수 있습니다. 데몬은 백그라운드 프로세스로 디바이스에서 명령을 실행합니다. 서버는 개발 시스템에서 실행되며 클라이언트의 통신을 관리합니다. ADB를 사용하면 USB, Wi-Fi, Bluetooth 또는 기타 네트워킹 프로토콜을 통해 디바이스에서 시스템 이벤트를 실시간으로 모니터링 할 수 있습니다. ADB는 개발자에게 에뮬레이터 또는 실제 디바이스에서 앱을 테스트 할 수 있는 이점을 제공합니다.
사이트 방문하기: Android Debug Bridge
QARK (Quick Android Review Kit)
QARK는 앱의 소스 코드 또는 패키지된 APK 파일을 분석하기 위한 중요한 커뮤니티 지원(아파치 라이센스 지원) 도구입니다. 개발자는 QARK 분석을 실행하여 소스의 보안 취약성을 확인할 수 있습니다. 이 도구의 유용한 점은 에뮬레이터나 실제 디바이스를 테스트하기 위해 ADB 명령을 실행할 수 있다는 것입니다. ADB와 달리 앱이 안전한 환경에서 실행시 취약성을 확인해야 하기 때문에 디바이스를 루팅 할 필요가 없습니다. 이 파이썬 기반 도구는 윈도우, 리눅스 및 OSX에서 사용할 수 있습니다. QARK는 다음과 같은 취약점을 식별합니다.
- 부주의하게 송출된(exported) 컴포넌트
- 부적절하게 보호된 송출(exported) 컴포넌트
- 차단 또는 도청에 취약한 인텐트(Intent)
- 부적절한 x.509 인증서 유효성 검사
- 아무나 읽고 쓸수 있는(world-readable/world-writable) 파일 생성
- 데이터 누수 가능성이 있는 액티비티(Activity)
- 스티키 인텐트(Sticky Intent) 사용
- 안전하지 않은 펜딩 인텐트(Pending Intent)
- 안전하지 않은 브로드캐스트 인텐트(Broadcast Intent) 보내기
- 소스에 포함된 개인 키
- 낮은 수준 또는 부적절한 암호화 사용
- 잠재적으로 악용 가능한 웹뷰(WebView) 구성
- 송출된 환경설정(Preference Activity)
- 탭재킹(Tapjacking)
- 백업을 가능하게하는 앱
- 디버깅 가능한 앱
- 알려진 취약점을 가진 예전 API 버전을 지원하는 앱
ZAP (Zed Attack Proxy)
OWASP ZAP 도구 라고도 불리우는 이 도구는 OWASP 재단에서 개발 및 소유하며 Apache 2 라이센스하에 라이센스를 받았습니다. 하지만 이 도구는 Paros Proxy의 오픈 소스 버전의 포크이기도 합니다. 주로 숙련된 보안 개발자를 대상으로 하며, 모의 침투 테스트를 위한 가장 인기 있는 앱 보안 도구 중 하나로 간주됩니다. ZAP은 자신을 웹앱의 모든 요청과 수신된 모든 응답을 듣는 중간자 프록시(man-in-the-middle proxy)로 정의하고 있습니다. 자동화된 스캐너 및 기타 애드온을 사용하면 취약점을 자동 또는 수동으로 검색할 수 있습니다. 액티브 스캔 기능을 통해 개발자는 선택된 대상에 대해 알려진 공격을 시작할 수 있습니다. 또한 모든 요청과 응답이 앱 속도를 늦추지 않도록 백그라운드에서 스캔되는 검색 규칙 전달을 지원합니다. 웹 사이트는 주기적으로 업데이트되는 애드온 형태로 모든 검색 규칙의 저장소를 유지합니다.
사이트 방문하기: Zed Attack Proxy
Devknox
Devknox의 독특한 점은 개발자가 WYSIWYG 편집기의 맞춤법 검사 기능과 마찬가지로, 코드 작성시 코드에서 보안 오류를 확인할 수 있다는 것입니다. 안드로이드 스튜디오 플러그인의 인기에도 불구하고, 개발사인 XYSEC Labs은 관련 개발을 중단하였습니다. 아마도 곧 오픈 소스 릴리스를 발표할 것으로 예상됩니다. 이 도구의 또다른 중요한 특징은 코드를 수정하기 위한 제안을 제공한다는 것입니다. 다른 정적 코드 분석기와 마찬가지로 개발자는 이 도구를 사용하여 바이너리 코드 파일을 전체적으로 스캔하고 보안 수정 사항을 얻을 수 있습니다. 이 도구에 의해서 확인 가능한 취약점으로는 자세한 로깅 기능, DES 암호화, 안전하지 않은 파일 액세스 모드, AES CBC 암호화, AES ECB 암호화, RSA 패딩 사용하지 않음, AES 암호화 대체, RSA 취약한 키 쌍 생성기, 예측 가능한 의사 난수 생성기, 암호화되지 않은 소켓, 가능한 탭재킹(Tapjacking) 공격 등이 있습니다.
사이트 방문하기: Devknox
ImmuniWeb 모바일 앱 보안 테스트
이 무료 온라인 테스트 도구는 안드로이드 및 iOS 플랫폼의 기본 및 하이브리드 앱을 분석합니다. 다른 취약점 중에서도 OWASP Mobile Top 10 결함에 대해서 테스트를 수행합니다. 다음에 나열된 테스트를 앱에 적용합니다.
- 정적 애플리케이션 보안 테스트(SAST)
- 동적 애플리케이션 보안 테스트(DAST)
- 악성 기능 및 개인 정보 보호를 위한 동작 테스트(Behavior Testing)
- 소프트웨어 구성 분석(SCA)
- 모바일 애플리케이션 발신 트래픽
- 모바일 앱 외부 커뮤니케이션
또한 웹 서비스 및 모바일 서비스의 API를 테스트하기 위해 MobileSuite라는 고급 도구 세트를 제공하지만 유료입니다.
사이트 방문하기: ImmuniWeb
Drozer
개발자가 다른 앱이나 OS와 상호 작용하면서 안드로이드 프로세스간 통신 말단(endpoint)을 통과할 때 안드로이드 앱이 충분히 안전한지 확인하려면 Drozer에서 테스트 해야 합니다. Drozer의 중요한 기능은 개발자가 테스트하려는 디바이스에서 안드로이드 공개용 악성 공격자를 구현할 수 있다는 것입니다. 알려진 취약점을 기반으로 악성 파일 및 웹 페이지를 작성하여 악성 에이전트를 만듭니다. Drozer 에이전트가 테스트 중인 취약한 앱을 사용하여 디바이스에 전체 에이전트를 설치하려 한다면, 개발자에게 경보를 표시하고 보안 결함을 수정해야 합니다.
사이트 방문하기: Drozer
모바일 보안 프레임 워크 / MobSF
이것은 모의 침투 테스트, 악성코드 분석 및 보안 평가 프레임워크를 위한 포괄적인 모바일 앱 테스트 도구로 정적/동적 분석을 수행할 수 있습니다. 소스 코드뿐만 아니라 바이너리상에서도 안드로이드, iOS, 윈도우 앱을 분석 할 수 있습니다. MobSF는 OWASP Mobile Top 10 취약점에 대해 앱을 테스트 할 수 있습니다.
사이트 방문하기: MobSF
결국, 기업은 모바일 앱 보안의 영향이 사용자 보안을 넘어 브랜드 전체의 명성에 영향을 준다는 것을 이해해야 합니다. 해킹 시도와 데이터 침해가 증가함에 따라 사용자는 모바일 앱 보안 문제를 인식하고 정보를 장악하고 있는 것보다 안전한 앱을 선호합니다. 따라서 앱 개발자는 사용자의 요구를 만족시키는 애플리케이션을 만들기 위해서 노력해야 하며, 더불어 보안 측면에도 노력을 집중해야 합니다. 지금 바로 모바일 앱 보안 솔루션 앱실링으로 당신의 앱을 안전하게 보호해 보세요!