iOS DVIA-v2 | 단말기 내 중요 정보 저장 (Plist)
단말기 내 중요 정보 저장 취약점
취약점 개요
모바일 진단 항목 중 하나인 단말기 내 중요정보 저장이다. 안드로이드를 비롯하여 iOS에 설치된 스마트폰이나 태블릿과 같은 기기에서 사용자의 중요한 정보가 저장되는 방식과 관련된 보안 취약점을 진단한다.
개발자들은 단말기에 저장될 데이터의 크기, 중요도, 기간 등을 고려해서 운영체제가 제공하고 있는 다양한 저장소에 데이터를 보관한다.
iOS 기기에는 다양한 유형의 중요한 정보가 저장될 수 있다. 이 정보에는 사용자의 개인 식별 정보, 금융 정보, 의료 정보, 회사 비즈니스 정보 등이 포함될 수 있다. 따라서 이러한 정보가 노출되거나 악용될 경우 사용자의 프라이버시나 안전이 위협 받을 수 있다.
모바일 취약점 진단 항목에서는 이러한 중요한 정보가 저장되는 방식에 따라 취약점을 식별한다.
이 항목은 데이터베이스나 파일 시스템, 암호화와 같은 보안 기술을 사용하여 중요한 정보를 안전하게 저장하는 방식을 살펴본다. 또한, 사용자 인증 및 권한 관리와 같은 보안 메커니즘도 확인한다.
Plist
Plist는 Property List Files로, 다양한 종류의 실행 파일을 나타내는 정보 속성 목록 파일이 포함되어 있습니다. 이는 Key-Value 쌍으로 이루어져 있으며 시스템에서 연결된 번들을 해석하는 방법을 지정합니다.
일부 Key-Value 쌍은 Bundle 자체를 특성화하지만, 다른 Key-Value 쌍은 번들이 나타내는 앱, 프레임워크 또는 기타 엔티티를 구성합니다. 일부 키는 필수 키인 반면, 다른 키는 실행 파일의 특정 기능에 한정되어 있습니다.
정보 속성 목록 파일의 이름은 항상 Info.plist입니다. 파일 이름은 대소문자를 구분하며 대문자 I로 시작해야 하고, Bundle 내 위치는 Bundle 유형과 플랫폼에 따라 다릅니다.
예를 들어 iOS 앱 Bundle은 번들의 루트 디렉터리에 파일을 저장하는 반면, macOS 앱 Bundle은 Info.plist 파일을 Contents 디렉터리에 저장합니다.
취약점 실습
- 실습 환경 : iOS 14.6, iPhone 8
- 좌측 상단 메뉴 > Local Data Storage > Plist
Username과 Password에 각각 데이터를 정보 저장하면 Plist에 저장된다.
/private/var/mobile/Containers/Data/Application/AAA8DAB1-874E-4B9D-96B7-52E3FB08AC5E/Document
WinSCP프로그램을 이용하여 해당 경로를 확인하게 되면 plist 확장자의 userinfo 파일이 저장되어있다.
해당 파일을 PC로 모두 옮겨 파일을 확인하면 입력한 값이 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 |