모바일 앱 보안 솔루션 에스이웍스(SEWORKS) 김호 연구원이 총 세번의 연재를 통해 모바일 보안에 대한 인사이트를 전합니다.
2. 일반 앱 개발자들을 위한 대비책
스마트폰 운영체제 시장에서 가장 큰 비중을 차지하는 안드로이드는, 앱 개발자의 입장에서는 개발시 직면하는 문제점이 많은 편이다. 이번 화에서는 일반 앱 개발자들이 안드로이드 운영체제 및 다양한 구조적 문제를 어떻게 파악하고 해결해야 할 지를 깊이 알아볼 것이다.
안드로이드 운영체제의 가장 큰 문제점 중 하나는 시스템 불안정성을 꼽을 수 있다. 안드로이드의 특징인 오픈소스 플랫폼은 커스터마이징이 가능하다는 장점이 있지만 이때문에 버그가 많고 불안정한 구조를 가지고 있다는 단점도 있다. 운영체제가 안정하지 못하다보니, 이를 개선하기 위해 OS 업데이트 주기가 매우 빠른 편이지만 앱 개발자들에게는 그에 적합한 업데이트를 신속하게 출시하기에 부담을 느낄 수 있다. 뿐만 아니라, 스마트폰 제조사별로 여러 안드로이드 OS 버전과 호환성이 다르다보니, 사용자와 앱 개발자 모두에게 혼란을 야기한다. 예를 들면,사용자 입장에서는 스마트폰 제조사가 안드로이드의 업데이트버전을 배포하지 않으면 보안 취약점을 가진 구버전을 계속 사용해야 하는 불편함이 있다. 앱 개발자의 입장에서는 이에 맞춰 제조사별로 시장에 나온 모든 기기를 구해 개발한 앱이 잘 실행되는지를 알아봐야 하는데, 이 과정은 개발자들에게 경제적 및 시간적 부담을 안겨주기 마련이다.
안드로이드의 빠른 변화에 맞추기 위해서는 개발자들은 항상 급하게 개발을 마무리해야 하는 상황이 종종 일어난다. 이런 상황이 지속된다면, 앱 소스코드에 버그가 발생할 가능성이 높아지며 이는 자연스레 많은 해킹위협에 앱을 노출시킨다.해킹이란 것 자체가 버그를 악용하는 행위인데, 안드로이드 앱과 같이 주기적으로 앱을 업데이트하고 기능을 개선하는 상황에서는 당연히 많은 해킹위협에 노출될 수 밖에 없는 것이다. 이러한 위험을 줄이기 위해서는 앱을 시장에 출시하기 전에, 충분한 테스트를 완료하고 버그를 미리 해결해놓아야 한다.
안드로이드의 구조적 문제의 또다른 큰 이유는 안드로이드가 선택한 개발 언어인 자바 (Java) 이다. 자바로 개발된 코드는 또다른 프로그래밍 언어인 C처럼 바이너리를 만드는 것이 아닌 클래스 (class) 파일을 생성한다. 이 파일은 자바 VM이 존재하는 시스템에서는 언제든지 실행이 가능하게 설계되어 있기때문에 C언어로 만들어진 바이너리 코드와는 달리 디컴파일 (Decompile)이 손쉽게 된다는 문제점이 있다.
이러한 배경을 바탕으로 보면, 자바 언어로 개발되는 안드로이드 앱 또한 어렵지 않게 디컴파일할 수 있다. 이는 앱의 코드를 노출시키고 개발자의 허가 없이 코드를 재사용 할 수 있는 문제점이 있다. 물론 이와 같은 문제점을 어느정도 보완하기 위해 프로가드 (ProGuard) 같은 소스코드 난독화 툴이 있지만 해커의 관점에서는 이러한 기본적인 보안기능은 큰 장애물이 되지 않는다. 따라서, 앱 개발자들이 이와 같은 위협을 최소화 하기 위해서는 먼저 하드코딩된 데이터들을 암호화하거나, 타인이 아예 볼 수 없도록 구현하는것이 최우선이다. 예를 들어, 앱 관리자 기능이 단순한 제어문으로 설계되어 있거나, 관리자의 계정 정보가 소스코드에 그대로 저장되어 있는 경우, 큰 보안 위협을 초래할 수 있다. 이를 방지하기 위해서는, 해당 정보들을 암호화하거나, 서버와 연동을 하여 해커에게 노출되지 않도록 각별한 주의를 기울여야 한다. 게다가, 위에 언급된 것처럼, 신속한 업데이트중 생길 수 있는 개발자의 실수들도 디컴파일로 확인 가능하기 때문에, 개발자들은 반드시 앱 출시전에 보안 점검을 위한 철저한 테스트를 진행해야 한다.
안타깝게도 앱 소스코드의 난독화 및 암호화만이 앱을 완벽하게 지켜주는 것은 아니다. 앱이 웹 서버와 통신하는 경우에는 HTTPSURLConnection과 같은 기능을 사용하여 통신되는 모든 데이터가 가로채어지지 않게 방지해야 한다. 또한, 스마트폰이 불안정한 와이파이에 연결되는 경우도 종종 있는데, 이는 이용자의 데이터가 해커에게 노출되거나 해거에 의해 조작될 수 있는 위험에 노출한다. 예를 들자면, 결제 관련 데이터가 암호화되지 않은 서버로 전송되며 서버가 참이나 거짓으로 구성된 값을 반환하는 경우, 서버와 이용자 사이에서 해커가 이용자의 정보를 손쉽게 유출하거나, 임의적으로 참/거짓 값을 조작할 수 있어 앱 실행에 치명적인 영향을 끼칠 수 있다. “중간자 공격”이라고 불리는 이 방식의 해킹을 막기 위해서 앱 개발자는 소스코드 보안 외에 네트워크 서버 통신관련 부분도 필수적으로 신경을 써야한다.
다음화에는 일반앱 외에 게임앱 개발자들의 관점에서 안드로이드 해킹 위협과 대처 방법을 살펴보도록 하겠다.
에스이웍스 (SEWORKS)는 국내 유명 화이트햇 해커 홍민표 대표와 와우해커 멤버들 및 보안 전문가들이 모여 설립한 모바일 앱 보안 솔루션 전문 스타트업이다.
글/김호 에스이웍스 연구원
You must be logged in to post a comment.