모바일앱(Mobile APP) 보안, 어떻게 시작해야 할까?

모바일앱 보안, 어떻게 시작해야 할까?

연재의 첫 시작인 오늘은 Mobile APP 보안을 어떻게 접근해야 할지부터 소개해 드리겠습니다. 이 글은 주로 Mobile APP 개발 경험자를 대상으로 하지만, 개발 경험이 없는 분들도 충분히 이해할 수 있도록 작성했으니 찬찬히 읽어보세요.

1. WHAT–무엇이 문제인가?

왜 공격자들은 모바일앱을 공격할까요? 모바일 기기를 통해 서비스를 제공하는 서비스제공자 입장에서는 결국 궁극적으로 보호해야 할 대상은 데이터인데요. 결국 이런 데이터가 어플리케이션을 통해 접근 가능하고, 모바일앱의 경우 서버와 달리 공격자도 손쉽게 획득하여 공격에 이용할 수 있기 때문입니다.

자, 그럼 모바일앱에 대한 보안을 고려하기로 결정했다면, 보통 “무엇부터 시작해야 하지?”라는 막막함을 마주하게 됩니다. 인터넷 검색을 하더라도, 개발 시 활용 가능한 정보보다는 일부 침해 사례들에 대한 정보만 접하기 십상입니다.

그렇다면 어떤 방법으로 접근해야 할까요? 먼저 Mobile APP 개발 시 고려해야 하는 전체 범위를 쉽게 파악할 수 있도록 “OWASP mobile Project”에 대해 알아보겠습니다. OWASP (Open Web Application Security Project)는 명칭 그대로 ‘웹 애플리케이션 보안을 위한 프로젝트’입니다. 현재는 여러 Application 보안 분야까지 확대하여 다양한 정보를 제공하고 있죠.

OWASP mobile project를 통해서 우리는 Mobile APP 위험요소에 대한 TOP 10 항목과 설계/개발 시 참고할 수 있는 체크리스트를 확인할 수 있습니다. 이외에도 모바일 보안과 관련된 여러 정보와 외부 참조 링크를 제공해주어 Mobile APP 보안과 관련된 업무에 유용하게 활용할 수 있습니다.

2. Mobile APP 보안 – What & How!

OWASP Top 10 Mobile Risk 또는 체크리스트의 항목을 통해 Mobile APP 보안에서 우선적으로 고려해야 할 내용에 대해서 알아보았으니, 다음은 대응 방법에 대해 살펴보겠습니다. 모바일 보안을 위해서는 크게 설계단계, 개발단계, 마지막으로 테스트단계에서의 고려할 부분으로 나누어 볼 수 있습니다.

2.1 Mobile APP - 설계 단계에서 고려할 내용

M1 ~ M6까지의 내용은 설계단계에서의 보안내용입니다. 대부분의 개발팀은 개발완료 후 출시전 품질점검에서 보안에 대한 테스트를 진행합니다. 설계부분에서 보안이 고려되지 않은 경우 개발물의 많은 부분의 변경이 필요하게 되어 사실상 출시가 불가능하거나 리스크를 가지고 출시하는 경우가 대부분입니다. 보안은 반드시 설계단계부터 고려되어야 합니다. 그리고 이때는 반드시 경험이 있는 보안아키텍트의 도움이 필요합니다.

개발자들이 설계단계에서 실수하는 대표적인 경우를 예를 들겠습니다. 모바일앱과 서버간 안전한 통신을 위해서 Secure Communication이 필요하며 보통 SSL/TLS등의 라이브러리를 사용합니다. 그런데 이때 양측 인증없이 암호화통신을 하기 위한 암호키를 공유하는 경우가 있습니다. 이는 아파트 문을 잠궈놓고 키를 문앞에 놓아두는 것과 같습니다. 인증없는 Secure Communication은 아무 의미가 없습니다.

2.2. Mobile APP - 개발 단계에서 고려할 내용

M7 ~ M10에 대한 내용은 주로 개발 단계에서 고려할 항목입니다.
특히 “M7- Client Code Quality”의 경우, 높은 위험도의 취약점인 데 비해 개발 시점에서 쉽게 탐지할 수 없는 항목으로 분류되어 있습니다. 그러나 공격자들은 정적/동적분석 자동화 도구들을 활용하여 이러한 취약점을 탐지해냅니다. 때문에 개발 시에도 이와 같은 자동화 도구들을 활용하여 아래 예제와 같은 소스 코드 취약점을 탐지하는 것을 권장합니다.

"M10 - Extraneous Functionality”는 개발 단계에서 디버깅 등의 용도로 사용하던 기능이 Mobile APP 배포 시 일반 사용자에게까지 그대로 제공되는 경우에 발생 가능합니다. 예를 들어, 설정 파일에 "debug=true"와 같이 특정 Flag를 설정했을 때 출력되지 않아야 할 메시지들이 출력되는 경우가 여기에 해당됩니다.

대부분 사용자들이 이러한 Flag 값을 알아내기는 어려울 것이라고 예상하지만, 공격자들은 “M9-Reverse Engineering”을 통해 Mobile APP을 분석 후 이러한 숨겨진 설정값들을 찾아내기도 합니다. 또, “M8-Code Tampering”을 통해 실제 Flag 설정이 가능하지 않는 경우라도 내부에 관련 기능이 포함되어있다면, 강제 호출을 통해 기능을 악용하기도 합니다.
따라서, 이러한 우회경로(백도어)가 사용자에게 제공되지 않도록 출시 전 반드시 확인이 필요합니다.

2.3 Mobile APP – 3rd Party 기술 도입 고려

앞서 살펴본 내용 중에는 일반적인 Mobile APP 개발 시 개발자가 직접 구현하여 달성하기는 어려운 부분도 있습니다. 이러한 항목의 경우 안전성이 확인된 오픈소스 또는 3rd Party 보안 솔루션 적용에 대한 고려가 필요합니다.
대표적으로 “M5-Insufficient Cryptography”, “M8-Code Tampering”, “M9-Reverse Engineering” 항목이 해당됩니다.

“M5-Insufficient Cryptography” 항목에서는, 흔히 사용되는 암호 알고리즘 라이브러리는 공격자들에게도 널리 알려져 있기 때문에 코드/바이너리 분석 시 암호화 키와 같은 주요 정보도 분석이 가능 하다는 것을 지적하고 있습니다. 개발자들이 안전하지 않은 암호알고리즘이나 파라미터(MD5, RSA with 512-bit key)를 사용하거나, 혹은 암호키를 안전하게 다루지 않을 때 즉시 공격으로 이어질 수 있습니다. 이에 OWASP에서는 보다 높은 보안 수준이 요구되는 경우 WBC(White Box Cryptography)와 같이 공격자의 분석에도 안전한 3rd Party 암호화 알고리즘 사용을 권장하고 있습니다.
“M8-Code Tampering”은 주로 모바일 플랫폼의 보안이 무력화된 상태(Rooting)에서 공격이 진행되기 때문에 Rooting 탐지 기능 적용을 권장하고 있습니다. 3rd Party 보안 솔루션의 경우 Rooting 탐지 기능 외에도 모듈/메모리 탐지, 함수 Hooking 탐지 등의 기능이 제공되어, Mobile APP이 달성하고자 하는 보안 수준에 따라 솔루션 도입에 대한 고려가 필요합니다.
“M9-Reverse Engineering”은 공격자가 Mobile APP을 소스 코드 수준으로 역변환하는 분석 기법으로, 이를 방지하기 위해서는 코드 난독화 도구 적용을 권장합니다. 이 항목은 기능이 제한적이기는 하나 오픈소스 도구 (ex. Proguard) 등도 활용 가능하며, 보다 다양한 난독화 기법을 제공하는 3rd Party 코드 난독화 도구들에 대한 도입도 가능합니다.

2.4 Mobile APP – 테스트 단계에서 고려할 내용

마지막으로, 테스트 단계에서는 위와 같이 개발팀에서 보안을 고려하여 개발한 Mobile APP에 대하여, 침투 테스트(Penetration Test: 개발팀 외부의 화이트 해커에 의해서 보안성을 확인하는 단계)까지 진행해야 실제 외부 공격에 대비할 수 있습니다.

모바일앱 테스트 이미지

3. 마무리하며

이번 연재에서는 “OWASP Top 10 Mobile Risk”를 바탕으로 Mobile APP 보안에 대한 전체적인 범위에 대해서 살펴보았습니다. 또한, Mobile APP 보안은 개발 완료 후 단기간에 확보할 수 있는 것이 아니라, “설계”부터, “개발”, “테스트”, “3rd Party 기술 도입”에 이르기까지 개발 전 단계에 걸친 고려를 통해 달성할 수 있음을 확인했습니다. 다음 시간에는 White-box 암호 및 App Shielding 기술에 대해 이야기를 나누어 보겠습니다.

관련자료
https://www.owasp.org/index.php/OWASP_Mobile_Security_Project
https://www.owasp.org/index.php/OWASP_Mobile_Security_Project#tab=Top_10_Mobile_Risks
https://www.owasp.org/index.php/Mobile_Top_10_2016-Top_10
https://www.owasp.org/index.php/OWASP_Mobile_Security_Testing_Guide#tab=Main



▶   해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶   해당 콘텐츠는 사전 동의없이 2차 가공 및 영리적인 이용을 금하고 있습니다.

조지훈팀장, 이창훈 프로
조지훈팀장, 이창훈 프로 IT테크놀로지 전문가
삼성SDS 연구소

조지훈 팀장은 University of Waterloo와 Royal Holloway University of London에서 암호학과 정보보안분야에서 석/박사학위를 취득하였습니다. 2013년부터 현재까지 SDS연구소에서 암호기술 및 어플리케이션 보안기술을 연구/개발하고 있습니다. 2013년 이전에는 LG전자에서 mobile security architect로 Secure Boot, TrustZone등의 H/W기반의 보안기술과 BYOD보안기술을 개발하였습니다.

이창훈 프로는 Mobile App Shielding 업무경험을 보유하고 있으며, 현재는 데이터 및 어플리케이션 보안 연구를 진행하고 있습니다.

관련 아티클

구독하기

인사이트 리포트 소식을 메일로 받아보세요