모바일 보안, 어떻게 대비해야 하는 것인가?(2)

[graybox]모바일 앱 보안 솔루션 에스이웍스(SEWORKS) 김호 연구원이 총 세번의 연재를 통해 모바일 보안에 대한 인사이트를 전합니다.[/graybox]

2. 일반 앱 개발자들을 위한 대비책

스마트폰 운영체제 시장에서 가장 큰 비중을 차지하는 안드로이드는, 앱 개발자의 입장에서는 개발시 직면하는 문제점이 많은 편이다. 이번 화에서는 일반 앱 개발자들이 안드로이드 운영체제 및 다양한 구조적 문제를 어떻게 파악하고 해결해야 할 지를 깊이 알아볼 것이다.

안드로이드 운영체제의 가장 큰 문제점 중 하나는 시스템 불안정성을 꼽을 수 있다. 안드로이드의 특징인 오픈소스 플랫폼은 커스터마이징이 가능하다는 장점이 있지만 이때문에 버그가 많고 불안정한 구조를 가지고 있다는 단점도 있다. 운영체제가 안정하지 못하다보니, 이를 개선하기 위해 OS 업데이트 주기가 매우 빠른 편이지만 앱 개발자들에게는 그에 적합한 업데이트를 신속하게 출시하기에 부담을 느낄 수 있다. 뿐만 아니라, 스마트폰 제조사별로 여러 안드로이드 OS 버전과 호환성이 다르다보니, 사용자와 앱 개발자 모두에게 혼란을 야기한다. 예를 들면,사용자 입장에서는 스마트폰 제조사가 안드로이드의 업데이트버전을 배포하지 않으면 보안 취약점을 가진 구버전을 계속 사용해야 하는 불편함이 있다. 앱 개발자의 입장에서는 이에 맞춰 제조사별로 시장에 나온 모든 기기를 구해 개발한 앱이 잘 실행되는지를 알아봐야 하는데, 이 과정은 개발자들에게 경제적 및 시간적 부담을 안겨주기 마련이다.

안드로이드의 빠른 변화에 맞추기 위해서는 개발자들은 항상 급하게 개발을 마무리해야 하는 상황이 종종 일어난다. 이런 상황이 지속된다면, 앱 소스코드에 버그가 발생할 가능성이 높아지며 이는 자연스레 많은 해킹위협에 앱을 노출시킨다.해킹이란 것 자체가 버그를 악용하는 행위인데, 안드로이드 앱과 같이 주기적으로 앱을 업데이트하고 기능을 개선하는 상황에서는 당연히 많은 해킹위협에 노출될 수 밖에 없는 것이다. 이러한 위험을 줄이기 위해서는 앱을 시장에 출시하기 전에, 충분한 테스트를 완료하고 버그를 미리 해결해놓아야 한다.

안드로이드의 구조적 문제의 또다른 큰 이유는 안드로이드가 선택한 개발 언어인 자바 (Java) 이다. 자바로 개발된 코드는 또다른 프로그래밍 언어인 C처럼 바이너리를 만드는 것이 아닌 클래스 (class) 파일을 생성한다. 이 파일은 자바 VM이 존재하는 시스템에서는 언제든지 실행이 가능하게 설계되어 있기때문에 C언어로 만들어진 바이너리 코드와는 달리 디컴파일 (Decompile)이 손쉽게 된다는 문제점이 있다.

이러한 배경을 바탕으로 보면,  자바 언어로 개발되는 안드로이드 앱 또한 어렵지 않게 디컴파일할 수 있다. 이는 앱의 코드를 노출시키고 개발자의 허가 없이 코드를 재사용 할 수 있는 문제점이 있다. 물론 이와 같은 문제점을 어느정도 보완하기 위해 프로가드 (ProGuard) 같은 소스코드 난독화 툴이 있지만 해커의 관점에서는 이러한 기본적인 보안기능은 큰 장애물이 되지 않는다. 따라서, 앱 개발자들이 이와 같은 위협을 최소화 하기 위해서는 먼저 하드코딩된 데이터들을 암호화하거나, 타인이 아예 볼 수 없도록 구현하는것이 최우선이다. 예를 들어, 앱 관리자 기능이 단순한 제어문으로 설계되어 있거나, 관리자의 계정 정보가 소스코드에 그대로 저장되어 있는 경우, 큰 보안 위협을 초래할 수 있다. 이를 방지하기 위해서는, 해당 정보들을 암호화하거나, 서버와 연동을 하여 해커에게 노출되지 않도록 각별한 주의를 기울여야 한다. 게다가, 위에 언급된 것처럼, 신속한 업데이트중 생길 수 있는 개발자의 실수들도 디컴파일로 확인 가능하기 때문에, 개발자들은 반드시 앱 출시전에 보안 점검을 위한 철저한 테스트를 진행해야 한다.

안타깝게도 앱 소스코드의 난독화 및 암호화만이 앱을 완벽하게 지켜주는 것은 아니다. 앱이 웹 서버와 통신하는 경우에는 HTTPSURLConnection과 같은 기능을 사용하여 통신되는 모든 데이터가 가로채어지지 않게 방지해야 한다. 또한, 스마트폰이 불안정한 와이파이에 연결되는 경우도 종종 있는데, 이는 이용자의 데이터가 해커에게 노출되거나 해거에 의해 조작될 수 있는 위험에 노출한다. 예를 들자면, 결제 관련 데이터가 암호화되지 않은 서버로 전송되며 서버가 참이나 거짓으로 구성된 값을 반환하는 경우, 서버와 이용자 사이에서 해커가 이용자의 정보를 손쉽게 유출하거나, 임의적으로 참/거짓 값을 조작할 수 있어 앱 실행에 치명적인 영향을 끼칠 수 있다. “중간자 공격”이라고 불리는 이 방식의 해킹을 막기 위해서 앱 개발자는 소스코드 보안 외에 네트워크 서버 통신관련 부분도 필수적으로 신경을 써야한다.

다음화에는 일반앱 외에 게임앱 개발자들의 관점에서 안드로이드 해킹 위협과 대처 방법을 살펴보도록 하겠다.

001

[graybox]에스이웍스 (SEWORKS)는 국내 유명 화이트햇 해커 홍민표 대표와 와우해커 멤버들 및 보안 전문가들이 모여 설립한 모바일 앱 보안 솔루션 전문 스타트업이다.[/graybox]

글/김호 에스이웍스 연구원