iOS DVIA-v2 | 단말기 내 중요 정보 저장 (Realm)
단말기 내 중요 정보 저장 취약점
취약점 개요
모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다.
개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다.
iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다.
모바일 취약점 진단 항목에서는 이러한 중요한 정보가 저장되는 방식에 따라 취약점을 식별한다.
이 항목은 데이터베이스나 파일 시스템, 암호화와 같은 보안 기술을 사용하여 중요한 정보를 안전하게 저장하는 방식을 살펴본다. 또한, 사용자 인증 및 권한 관리와 같은 보안 메커니즘도 확인한다.
Realm
Realm는 지연 로딩 및 제로 카피 아키텍처를 통해 디바이스 리소스를 낭비하지 않고 데이터가 저장이 가능하며 객체 지향 데이터 모델을 통해 개발자는 ORM이나 DAO 없이 네이티브 객체로 직접 작업할 수 있다.
실시간 모바일-클라우드 데이터 동기화를 통해 여러 디바이스, 사용자, 백엔드에 걸쳐 데이터를 최신 상태로 유지하는 대화형 기능을 쉽게 구축할 수 있습니다.
이러한 장점을 통해 iOS에서 Realm을 사용할 경우, UserDefaults와 CoreData를 대체해 Persistent data를 저장하고 관리할 수 있다.
취약점 실습
- 실습 환경 : iOS 14.6, iPhone 8
- 좌측 상단 메뉴 > Local Data Storage > Realm
Username과 Password에 각각 데이터를 정보 저장하면 Realm Database에 저장된다.
/private/var/mobile/Containers/Data/Application/AAA8DAB1-874E-4B9D-96B7-52E3FB08AC5E/Document
WinSCP프로그램을 이용하여 해당 경로를 확인하게 되면 realm으로 명시된 파일이 생성된 것을 확인 할 수 있다.
해당 파일을 PC로 모두 옮겨 Realm Studio 프로그램을 설치하여 해당 프로그램으로 파일을 확인하면 입력한 값이 Username와 Password Key 값을 확인할 수 있지만 해당 앱을 데이터 저장쪽 로직이 미구현 혹은 정상 작동하지 않아 저장 되지 않는다.
대응 방안
-
자격증명, 개인정보, 인증정보 등 중요한 정보는 디바이스 내 저장하지 않아야 한다.
-
디바이스 내 중요정보를 저장해야 할 경우, 안전한 암호화 알고리즘을 통해 데이터를 암호화 해야 한다.
| 분류 | 미국(NIST) | 일본(CRYPTREC) | 유럽(ECRYPT) | 국내 |
|---|---|---|---|---|
| 대칭키 암호 알고리즘 | AES-128/192/256 | AES-128/192/256 Camellia-128/192/256 |
AES-128/192/256 Camellia-128/192/256 Serpent-128/192/256 |
SEED HIGHT ARIA-128/192/256 LEA-128/192/256 |
| 공개키 암호 알고리즘 | RSA | RSAS-OAEP | RSAS-OAEP | RSAES |
| 일방향 암호 알고리즘 | SHA-224/256/384/512 | SHA-256/384/512 | RSAS-OAEP | SHA-224/256/384/512 |