사이버 보안의 위협은 날로 심각해지고 있는 반면, 사이버 공격에 대응할 수 있는 보안 전담 인력은 부족한 것이 현실입니다. 한국정보보호산업협회가 발간한 ‘2023 정보보호 실태조사’에 따르면, 기업체의 31.5%가 정보보호 조직을 보유하고 있다고 합니다. 2022년 대비 8.8% 감소한 수치로, 대부분 겸임 조직(26.1%)인 것으로 나타났습니다. IT 인력이나 사무직 직원이 부가적으로 정보보호 업무를 맡고 있는 것이 현실입니다.
서비스 예정이거나 제공 중에 자체적인 앱 보안 취약점 점검 요청이나 보안 감사가 발생한다면, 보안 업무를 겸임으로 하는 분들은 어디서부터 무엇을 어떻게 해야 할지 당황스러우실 겁니다. 이번 포스팅에서는 모바일 앱 보안 취약점 점검과 보안 감사 관련한 기본 정보와 방법에 대해 소개하려고 합니다.
모바일 앱 보안 취약점 점검 정의와 기준
모바일 앱 보안 취약점 점검은 모바일 애플리케이션의 보안 상태를 평가하여 잠재적인 취약점을 식별하고 분석하는 과정을 말합니다. 주로 앱을 배포하기 전 혹은 서비스를 운영하는 중에 수행하며, 다양한 점검 도구나 수동 검토를 통해 진행됩니다. 점검을 통해 보안 문제를 발견하고 해결해 전반적으로 보안을 강화할 수 있습니다.
앱 보안 취약점 점검을 위해 가장 먼저 정해야 하는 것은 바로 ‘기준’을 정하는 겁니다. 이를 위해서는 레퍼런스 가이드를 찾아야 합니다. 가장 많이 활용되는 가이드는 미국 비영리단체 OWASP(Open Web Application Security Project)의 ‘OWASP Mobile Top 10’과 한국인터넷진흥원(KISA)의 ‘모바일 대민 서비스 보안 취약점 점검 가이드’입니다. OWASP Mobile Top 10은 국제적으로 널리 인정된 기준으로 글로벌 수준의 보안 점검을 수행 가능합니다. 모바일 대민 서비스 보안 취약점 점검 가이드는 국내의 법적 요구 사항 등을 반영해 보다 현실적이고 구체적인 점검 기준을 제공합니다.
모바일 앱 보안 취약점 점검 레퍼런스 가이드
1. OWASP Mobile Top 10 2024
아래 표와 같이 앱 보안 취약점 점검을 위해 꼭 확인해야 사항 10가지를 2024년에 발표했습니다.
No. | 항목 | 설명 |
1 | 부적절한 자격 증명 사용 | 하드코딩된 자격 증명, 불안전한 자격 증명 전송, 보안이 보장되지 않은 자격 증명 저장, 약한 사용자 인증으로 인한 취약점 |
2 | 불충분한 공급망 보안 | 3rd party 구성 요소의 보안 부족, 불충분한 테스트 및 검증, 보안 인식 부족으로 인해 발생하는 취약점 |
3 | 보안에 취약한 인증 및 권한 부여 | 출처가 분명하지 않은 백엔드 API 실행, 비밀번호 로컬 저장, 부실한 패스워드 정책으로 인한 취약점 |
4 | 부족한 입력/출력 검증 | 입력 검증 부재 및 출력 정보에 대한 보안 부족으로 인한 취약점 |
5 | 안전하지 않은 통신 | 민감한 데이터를 패키징해 장치 안팎으로 전송하여 발생하는 취약점 |
6 | 불충분한 개인정보 보호 제어 | 부적절한 자격 증명 및 보안에 취약한 인증 및 권한 부여해 발생하는 취약점 |
7 | 부족한 바이너리 보호 | 하드코딩된 민감한 데이터나 알고리즘이 포함돼 발생하는 취약점 |
8 | 잘못된 보안 구성 | 기본 설정 검토를 무시하고 안전한 통신 부재, 업데이트 또는 패치 실패 등으로 나타나는 취약점 |
9 | 안전하지 않은 데이터 저장소 | 부적절한 암호화, 부실한 세션 관리, 클라우드 스토리지의 잘못된 구성 등으로 나타나는 취약점 |
10 | 불충분한 암호화 | 약한 암호화 알고리즘, 부족한 키 길이 및 관리, 불충분한 유효성 검사 및 인증 등으로 발생하는 취약점 |
2. KISA 모바일 대민 서비스 보안 취약점 점검 가이드
KISA의 모바일 대민 서비스 보안 취약점 점검 가이드에서는 앱이 실행되는 동안 동작을 점검하는 기능 보안 취약점에 대한 점검 기준을 제공합니다.
No. | 점검 항목 | 설명 | Android | iOS |
1 | 반복 설치 시 오류 발생 | 앱 반복 설치 시 주요 설정 파일 변경 등의 문제가 발생할 수 있는 취약점 | O | O |
2 | 앱 설치 전후 비정상적인 파일 및 디렉토리 설치 | 앱 설치 전후로 비정상적인 파일 및 디렉토리가 생성될 수 있는 취약점 | O | O |
3 | 불필요하거나 과도한 권한 설정 | 불필요하거나 과도한 권한 설정으로 앱 서비스 목적과 상이한 임의기능 동작이 가능한 취약점 | O | O |
4 | 앱 삭제 후 안전성 | 앱 삭제 시 관련 디렉토리 및 파일 이외 파일이 삭제될 수 있는 취약점 | O | O |
5 | 기능의 정상 동작 | 각 기능이 오동작할 수 있는 취약점 | O | O |
6 | 임의 기능 등 악성 행위 기능 존재 | 앱 서비스 목적과 상이한 임의 기능, 백그라운드에서 구동 되는 악성 행위 기능이 존재할 수 있는 취약점 | O | O |
7 | 정보 외부 유출 | 허가된 주소 이외의 주소로 정보 전송이 가능한 취약점 | O | O |
8 | 자원 고갈 | 정상 기능 오동작 또는 취약점을 이용하여 과도한 트래픽 사용 및 배터리를 고갈 시키는 취약점 | O | O |
9 | 루팅 및 탈옥 기기에서의 정상 동작 | 루팅 및 탈옥된 기기에서 앱 설치, 동작되어 보안 메커니즘 우회 등이 발생할 수 있는 취약점 | O | O |
10 | ID 값의 변경 | 앱에 부여되는 일반 권한의 UID(User Identifier, 사용자 식별 번호), GID(Group Identifier, 그룹 식별 번호) 등이 임의로 변경될 수 있는 취약점 | O | – |
11 | 동일키로 서명된 서로 다른 앱 간의 UID 공유 | 안드로이드 플랫폼에서 동일한 제작자가 개발한 앱의 경우 동일한 서명 키(Key Sign)로 서로 다른 앱 간의 UID를 공유할 수 있는 취약점 | O | – |
12 | 인텐트 권한*의 올바른 설정 | 기능 사용 요청 및 권한이 부적절한 취약점 | O | – |
13 | 인증 정보 생성 강도 적절성 | 사용자 ID, 패스워드 등의 인증 정보의 생성 강도가 낮아 쉽게 추측할 수 있는 취약점 | O | O |
14 | 중요 정보의 평문 저장 및 전송 | 중요 정보가 모바일 기기에 평문으로 저장하거나 전송되어 외부에 유출될 수 있는 취약점 | O | O |
15 | 중요 정보 저장 및 전송 시 취약한 암호 알고리즘 적용 | 중요정보 저장 또는 서버로 전송시 취약한 암호알고리즘 사용으로 중요정보가 유출될 수 있는 취약점 | O | O |
16 | 기타 중요 정보의 평문 저장 및 전송 | IMEI** 정보 등 기타 중요 정보가 평문으로 저장되거나 전송되어 외부에 유출될 수 있는 취약점 | O | O |
17 | 기타 중요 정보 저장 및 전송 시 취약한 암호 알고리즘 적용 | IMEI 정보 등 중요정보를 저장 및 전송시 취약한 암호알고리즘 사용으로 중요정보가 유출될 수 있는 취약점 | O | O |
18 | 파일 다운로드 시 외부 주소 및 파일 무결성 우회 | 설정 파일 또는 업데이트 다운로드 시 외부 주소 변조 및 파일 무결성 우회 가능 취약점 | O | O |
19 | 개인정보 및 개인위치정보 수집 및 활용에 대한 동의 | 사용자의 동의없이 임의로 개인정보 및 개인위치 정보를 수집하고 활용하여 발생할 수 있는 법적 문제 발생 취약점 | O | O |
20 | 난독화 | 리버스 엔지니어링(역공학) 기술에 의한 모바일 앱 소스 코드 유출 및 보안 메커니즘 우회 등이 발생할 수 있는 취약점 | O | – |
모바일 앱 취약점 점검에 따른 대응
보안 감사 및 점검 시 자주 지적받는 상위 5개 취약점에 어떻게 대응해야 하는지는 아래와 같습니다.
1. 불필요한 권한 설정
앱이 필요하지 않은 권한을 요청해 유저의 개인정보나 기기 데이터에 접근해 정보가 유출될 수 있습니다. 이에 대응하기 위해 앱이 요청하는 모든 권한을 다시 검토하고, 최소 권한 원칙(Least Privilege Principle)에 따라 필요하지 않은 권한을 제거하도록 합니다. 사용자 데이터를 보호하기 위해 앱 기능별로 권한을 세분화하고, 권한 사용을 최소화합니다.
2. 데이터 암호화 부족
앱이 사용자 데이터를 서버로 전송하거나 로컬에 저장할 때 데이터를 암호화하지 않으면 중간자 공격(Man-in-the-Middle)에 노출될 수밖에 없습니다. 그렇기에 민감한 데이터는 반드시 SSL/TLS*와 같은 강력한 암호화 프로토콜을 사용하도록 권장합니다. 데이터 저장 시에도 AES와 같은 강력한 암호화 알고리즘을 적용할 수 있어야 합니다.
3. 루팅 및 탈옥된 기기에서의 실행
앱이 루팅 혹은 탈옥된 기기에서 실행되면 보안 메커니즘이 우회되어 앱 내 보안 기능이 무력화될 수 있습니다. 이를 통해 악성 소프트웨어가 쉽게 설치될 수 있고, 앱 내 정보나 데이터가 쉽게 변조될 수 있습니다. 이에 대응하기 위해서는 루팅 혹은 탈옥된 기기에서 앱이 실행되지 않도록 탐지 기능을 추가하도록 합니다.
4. 소스 코드 보안 취약점
소스 코드에서 입력 값 검증이 부족하거나 오류 처리가 미흡하면 취약점이 발견됩니다. 이에 대응하려면 입력값 검증을 강화하고 정기적인 코드 리뷰와 자동화된 정적 분석 도구를 활용해 지속적으로 보안을 개선합니다.
5. 리버스 엔지니어링
소프트웨어를 분석하고 소스코드를 이해하거나 설계와 구조를 파악하려는 이 행위를 통해 보안 메커니즘을 우회하고 불법적이거나 비즈니스에 피해를 입히는 행위를 수행합니다. 특히 모바일 앱에서는 리버스 엔지니어링을 통해 코드 취약점을 발견할 수 있습니다. 이에 대응하기 위해서는 소스코드를 해커들이 이해하지 못하도록 난독화, 암호화를 적용합니다. 또한 이들은 디버깅 도구를 이용해 분석을 시도합니다. 그렇기에 안티 디버깅 기술을 도입해 분석 시도 자체를 차단할 수 있습니다.
확실하고 편리하게 모바일 앱 보안 취약점에 대응하는 ‘앱 보안 서비스’
다양한 모바일 앱 보안 취약점에 대응을 위해 일일이 구현하고 유지하는 것은 상당한 시간과 비용이 소요됩니다. 또한 보안 전문 인력이 내부에 존재하지 않는 한 시작부터 엄두가 나지 않는 작업이 됩니다. 이러한 복잡한 보안 취약점 문제를 효과적으로 해결하기 위해 모바일 앱 보안 전문 서비스를 도입하는 것이 합리적인 선택이 될 수 있습니다. 보안 서비스 하나로 다양한 보안 취약점에 대응할 수 있습니다.
OWASP Top 10 2024 기준, 앱 보안 서비스 ‘앱실링’ 하나로 대응할 수 있는 취약점
- 보안에 취약한 인증 및 권한 부여
- 부족한 입력/출력 검증
- 안전하지 않은 통신
- 부족한 바이너리 보호
- 잘못된 보안 구성
- 불충분한 암호화
또한 앱 보안 서비스 업체는 보안만 전문으로 연구하는 만큼 최신 보안 기술을 통합적으로 제공하며, 지속적으로 업데이트와 지원을 통해 새로운 해킹 유형에도 신속하게 대응할 수 있습니다. 이를 통해 앱의 보안성을 높은 수준으로 유지할 수 있습니다.