“안드로이드요? 오픈소스 플랫폼이라 보안에 취약한 거 아닌가요?”
모바일 보안 이야기를 시작하면 대다수 사람들이 안드로이드 보안에 비슷한 질문을 던진다. 안드로이드가 구글의 오픈소스 정책 때문에 보안에 취약하다는 오해다.
안드로이드는 오히려 오픈소스기 때문에 폐쇄적 플랫폼 구조보다 더 투명하고 안전한 환경을 만들 수 있다. 사실상 안드로이드 보안은 플랫폼 자체 문제점보다는 애플리케이션(앱), 실행파일인 APK 보안문제가 더욱 심각하다고 말할 수 있다.
이미 많은 보안전문가들은 알고 있지만 안드로이드가 보안에 취약한 것은 사실 꼭 오픈소스기 때문만은 아니다.
애플 iOS에 비해 보안문제가 많이 거론되는 것은 여러 가지 이유가 있겠지만 전체 사용자가 다른 운용체계들보다 많다는 점이 가장 큰 이유라 할 수 있다.
자연스럽게 다양한 서드파티 마켓이 등장하면서 해커들은 안드로이드 앱을 향한 공격에 더욱 초점을 맞추게 된다. 또 앱의 주요 기능을 모두 담고 있는 소스코드를 볼 수 있는 디컴파일(파일에서 개발한 소스코드를 추출하는 것) 역시 그리 어렵지 않다는 점도 한몫했다. 누구나 인터넷 검색만으로도 공개된 디컴파일 도구와 상용화된 도구 등을 이용해 쉽게 디컴파일이 가능한 것이 어쩔 수 없는 현실이다.
지금 우리가 사용하고 있는 모든 소프트웨어(SW)와 앱은 리버스 엔지니어링이 가능하다. 리버스 엔지니어링이란 해커가 이미 만들어진 프로그램 코드를 역추적해 내부 구조를 알 수 있는 분석 기법이다. 널리 사용하고 있는 안드로이드 앱은 물론이고 애플의 iOS 역시 이 기법을 활용해 소스코드를 들여다볼 수 있다.
특히 해커들이 SW나 앱을 공격하기 전에 이 기법을 이용하는 사례가 많다. 이 때문에 안드로이드 앱만 보안에 더 취약하다고 말하기도 어렵다는 것이다.
안드로이드는 오픈소스 플랫폼인 리눅스를 기반으로 만들어졌다. 그리고 자바(Java)와 C언어 등의 프로그래밍 언어로 앱이 개발된다. 실제로 우리가 사용하는 안드로이드 앱은 쉽게 말해 파일의 형태가 압축파일(Zip)과 같은 형태다. APK파일의 압축을 풀면, 달빅 가상 머신에서 실행 될 수 있는 DEX파일과 여러 라이브러리 파일들이 존재한다. 해커들은 이들 파일을 디컴파일해 개발자가 개발한 소스코드를 탈취한 다음, 다양한 형태로 악용하게 된다. 최근 발생하고 있는 대다수의 앱 보안 해킹이 이런 기법으로 이뤄졌다.
안드로이드 앱은 자바 코드로만 개발하는 것이 아니기 때문에 안전하다고 말하는 개발자도 많다. 바로 .so에 라이브러리 파일들이 있어 문제가 없다고 보기 때문이다. 하지만 안드로이드가 있기 전부터 이 부분 역시 리버스 엔지니어링이 가능했다. 대표적 상용 리버싱 도구를 사용해 알 수 있는 것은 물론이고 바이너리 패치로 내용까지 수정 가능하다.
이렇게 해커는 개발자들이 애써 만들어놓은 코딩 내용을 해킹으로 탈취한 다음, 자신의 이득을 위해 악용하는 것이 일반적이다. 가장 쉽게 할 수 있는 것이 앱 리패키징(Repackaging)이다. 해커들은 이를 통해 기존 소스코드를 일부 수정하거나 다른 모듈을 삽입해 카피앱이나 위장앱으로 만든다. 그런 다음 기존 앱에서 입력받는 데이터를 공격자 서버로 전달하는 기능 등을 삽입해 재배포한다. 악성코드 삽입, 앱 복제, 개인정보 불법수집 등 데이터 변조를 통해 해커 임의로 원하는 기능을 자유자재로 구현할 수 있게 되는 것이다.
인앱결제 기능이 포함돼 있는 앱은 해커들의 공격이 특히 활발하다. 금전적 이득이 있는 곳에 당연히 해커가 모여들 수밖에 없기 때문이다. 해커가 임의로 디지털콘텐츠나 아이템 구매 등의 가격을 변조할 수도 있고, 결제서버를 가로채는 등의 형태로 개발사에 직접 금전적인 타격을 줄 수 있다. 요즘 공격의 주 타깃이 되는 산업이 게임, 금융, 전자상거래분야인 것도 이 때문이다.
실제로 안드로이드 앱을 악용해 해킹한 사례는 알려지지 않은 것이 훨씬 많다. 모바일 시대로 들어서면서 앱이 기업의 수익과 직결되는 만큼 앞으로도 앱을 이용한 공격은 지속적으로 늘어날 전망이다. 때문에 공들여 만든 앱을 보호하기 위해선 미리 보안에 신경을 써야 한다.
배포한 앱의 무결성을 검증하는 것은 물론이고 앱 위·변조를 실시간으로 체크해 어떤 형태로 공격이 발생하는지 데이터를 수집해 해킹 공격에 대비하는 것이 필수다.
물리적 보안과 네트워크 보안 외에도 이제는 앱의 소스코드와 바이너리 난독화, 디컴파일 방지, 라이브러리 보안 그리고 앱 위·변조 탐지, 모니터링까지 전체 과정상 보안을 소홀히 해서는 안 될 것이다.
홍민표 에스이웍스 대표 hong@medusah.net