모바일 OWASP 2016 보안 위험과 앱 개발 대응

모바일 OWASP 2016이 다루는 데이터 저장, 통신, 인증, 암호화, 권한 부여와 코드 보호 위험을 개발 생명주기 관점에서 정리한다.

2026-08-14 · 최초 발행 2025-05-29

모바일 앱에서 보안 위험을 보는 기준

OWASP(Open Web Application Security Project)는 웹과 모바일 애플리케이션의 보안 개선을 위한 비영리 단체다. 2016년 모바일 애플리케이션 보안 위험은 모바일 앱 개발과 보안 검토에서 우선 확인할 취약점을 제시한다.

모바일 앱은 iOS와 Android의 플랫폼 특성, 장치 안의 데이터, 네트워크 통신, 배포된 바이너리까지 함께 다뤄야 한다. 설계 단계부터 플랫폼 보안 기능과 개발 지침을 반영해야 하는 이유다.

플랫폼 보안 기능을 잘못 쓰는 경우

M1은 모바일 플랫폼이 제공하는 보안 기능이나 API를 올바르게 적용하지 않아 생긴다. 플랫폼 권장사항을 따르지 않거나 보안 컨트롤을 오용하면 의도하지 않은 데이터 노출과 권한 오남용으로 이어질 수 있다.

Android에서는 Intent 필터링과 앱 권한 최소화가 필요하며, iOS에서는 Keychain 서비스를 적절히 활용해야 한다. 두 플랫폼 모두 각자의 보안 모범 사례를 개발 기준에 포함해야 한다.

장치에 남는 민감 데이터

M2는 민감 정보를 장치에 안전하지 않게 보관하는 문제다. 평문 저장, 보안 처리 없는 외부 저장소 사용, 캐시·로그·백업 데이터 보호 미비가 대표적인 위험이다.

민감 데이터는 암호화해 저장하고, 로컬에는 꼭 필요한 정보만 남긴다. iOS Keychain과 Android Keystore 시스템을 활용하며, 앱 종료 시 중요 데이터를 메모리에서 제거하는 방식도 고려한다.

통신 경로와 인증서 검증

M3는 클라이언트와 서버 사이의 전송 과정에서 발생한다. 암호화되지 않은 채널, 인증서 검증 부재, 중간자 공격(MITM) 취약점이 여기에 속한다.

모든 통신에는 TLS/SSL을 적용하고 인증서 피닝(Certificate Pinning)을 구현한다. 민감 데이터를 보낼 때는 추가 암호화도 적용한다.

ServerAppServer["서버"]App["모바일 앱"]ServerAppServer["서버"]App["모바일 앱"]인증서 검증 (피닝)TLS 핸드셰이크인증서 제공암호화된 데이터 전송암호화된 응답

인증 상태를 보호하는 방식

M4는 사용자 인증 메커니즘의 취약점에서 비롯된다. 약한 비밀번호 정책, 미흡한 세션 관리, 다중 인증 부재, 자동 로그인 기능의 오남용이 위험 요인이다.

강력한 비밀번호 정책을 적용하고 생체 인증 등 다중 인증을 구현한다. 세션 타임아웃을 적절히 설정하며, OAuth와 OpenID Connect 같은 표준 인증 프로토콜을 활용한다.

암호화 구현과 키 관리

M5는 암호화 자체가 부적절하거나 충분하지 않을 때 발생한다. 취약한 알고리즘 사용, 부실한 키 관리, 자체 개발 암호화 알고리즘, 구현 오류를 점검해야 한다.

AES와 RSA 같은 표준화된 암호화 알고리즘을 사용하고, 적절한 키 길이와 관리 정책을 수립한다. 안전한 난수 생성기를 사용하며 암호화 키를 주기적으로 갱신한다.

권한 판단은 서버에서 이뤄져야 한다

M6는 권한 부여가 부적절한 경우의 취약점이다. 클라이언트 측에서만 권한을 검증하거나 서버 검증을 우회할 수 있으면 수평적·수직적 권한 상승이 가능해진다.

모든 권한 검증은 서버 측에서 수행하고, API를 호출할 때마다 권한을 확인한다. 최소 권한 원칙을 적용하며 정규 표현식으로 입력값을 검증한다.

권한 있음권한 없음사용자 요청클라이언트 검증서버 검증리소스 접근 허용접근 거부취약한 구현클라이언트 검증만 수행권한 우회 가능

코드 품질과 입력 처리

M7은 보안을 고려하지 않은 코드 작성에서 생긴다. 버퍼 오버플로우, 포맷 문자열 취약점, 메모리 누수, 안전하지 않은 입력 처리가 주요 문제다.

안전한 프로그래밍 관행을 적용하고 정적 코드 분석 도구를 활용한다. 코드 리뷰를 강화하며, 입력값 검증과 이스케이핑을 수행한다.

배포된 앱의 변조를 막는 통제

M8은 앱 코드가 무단으로 수정되는 위험이다. 리패키징 공격, 후킹을 통한 조작, 동적 코드 수정이 해당한다.

앱 서명을 검증하고 런타임 무결성 검사를 수행한다. 탬퍼링 감지 메커니즘과 난독화 기법도 코드 변조 대응에 사용한다.

역공학으로 노출되는 로직과 키

M9는 앱을 분석해 내부 로직, 알고리즘, 암호키 등을 추출하는 위험이다. 소스 코드 노출, 내장된 비밀키 추출, 비즈니스 로직 분석과 우회가 문제로 이어질 수 있다.

코드를 난독화하고 자체 디버깅 감지와 루팅·탈옥 감지를 적용한다. 중요 로직은 서버 측에서 처리하며, API 키는 동적 키 생성과 키 분산 저장으로 보호한다.

모바일 보호코드 난독화디버깅 감지루팅/탈옥 감지API 보호동적 생성 분산 저장제어 흐름 난독화문자열 암호화

릴리즈에 남아 있는 불필요한 기능

M10은 개발 과정에서 추가된 불필요한 기능이나 백도어로 인한 위험이다. 디버그 코드, 테스트용 계정 정보, 노출된 관리자 기능, 주석 처리된 코드의 민감 정보가 대상이 된다.

릴리즈 전 코드 정리 절차를 마련하고 테스트 코드와 프로덕션 코드를 분리한다. 배포 전 보안 검토를 수행하며, 자동화된 빌드 파이프라인으로 일관성을 유지한다.

설계부터 유지보수까지 이어지는 보안 활동

모바일 OWASP 위험 요소는 특정 단계에서만 처리할 문제가 아니다. 설계 단계에서는 위협 모델링과 보안 아키텍처를 마련하고, 개발 단계에서는 안전한 코딩 표준과 코드 리뷰를 적용한다.

테스트 단계에서는 취약점 스캐닝과 침투 테스트를 수행한다. 배포 단계에서는 보안 설정을 확인하고 불필요한 기능을 제거하며, 유지보수 단계에서는 보안 업데이트와 모니터링을 이어간다.

설계개발테스트배포유지보수보안 요구사항위협 모델링안전한 코딩코드 리뷰취약점 스캔침투 테스트불필요 기능 제거보안 모니터링

취약점이 드러나는 상황

금융 앱에서 사용자 거래 정보를 SD 카드에 평문으로 저장하면 악성 앱이 해당 데이터에 접근할 수 있다. 민감 데이터를 암호화해 내부 저장소에 보관하고 앱 샌드박스를 활용하는 방식이 대응책이다.

메시징 앱이 자체 개발한 취약한 암호화 알고리즘을 사용하면 메시지가 해독될 가능성이 있다. 표준 암호화 라이브러리(AES-256)를 도입하고 종단간 암호화를 구현하는 방식으로 대응한다.

게임 앱은 인앱 결제 우회를 목적으로 리패키징될 수 있다. 이 경우 수익 손실과 부정 사용이 발생하며, 서버 측 검증 강화, 코드 무결성 검사, 난독화 적용이 필요하다.

배포 전후에 이어야 할 보안 검토

모바일 OWASP 2016은 모바일 앱에서 다뤄야 할 보안 위험을 한 항목으로만 보지 않게 한다. 데이터 저장과 통신, 인증과 권한, 암호화와 코드 보호는 개발 생명주기 전체에서 연결돼 있다.

플랫폼별 특성에 맞는 보안 대책을 수립하고, 정기적인 보안 테스트와 취약점 평가를 수행해야 한다. 최신 보안 트렌드와 위협을 지속적으로 학습하며 개발자와 보안 전문가가 협업하는 과정도 필요하다.

한 번 배포된 앱의 보안 취약점은 모든 사용자에게 영향을 미칠 수 있다. 설계 단계부터 보안을 반영한 개발 방법론이 필요한 이유다.

모바일 앱 보안OWASPAndroid 보안iOS 보안애플리케이션 보안