본문 바로가기
보안/iOS보안

iOS Local Data Storage 저장소 취약점

by lucidmaj7 2022. 12. 11.
728x90
반응형

plist

  • 애플리케이션 데이터 및 설정 정보를 저장하는데 사용하는 xml파일
  • 저장된 정보는 암호화 되지 않아 중요한 정보를 저장하면 안됨
  • Info.plist에는 버전정보, 실행 가능한 바이너리 이름, 지원되는 iOS 버전 및 디바이스 모델 등의 정보가 저장됨.

UserDefault

  • UserDefault 취약점에서는 NSUserDefaults 클래스를 사용하여 저장
  • 사용자 기본 설정 및 속석을 저장하는 가장 일반적인 방법 중 하나
  • 애플리캐이션을 종료하고 재시작해도 정보를 계속 유지
  • 로그인 상태를 저장에 사용 될 때도 있음(계정정보, 접근 토큰 등)
  • NSUserDefaults로 저장한 데이터는 암호화 되지 않은 상태로 plist파일에 저장.

Keychain

  • iOS키체인은 암호화 키와 세션토큰과 같은 짧고 민감한 데이터를 안전한게 저장 할 수 있는 암호화된 데이터베이스
  • 키체인은 API를 통해 접속할 수 있고 sqlite로 구현됨
  • macOS에서는 원하는 만큼 키체인을 만들수 있지만, iOS에서는 모든앱에서 하나의 키체인만 사용할 수 있음.
  • kSecAttrAccessGroup 속성의 접근 그룹 기능을 통해 동일한 개발자가 서명한 앱 간 항목에 대한 접근 공유 가능
  • 키체인에 대한 접근은 securityd 데몬에 의해 관리됨.
  • /private/var/Keychains/keychain-2.db에 키체인 데이터가 저장됨.
  • 키체인 항목을 확인하기 위해 keychain_dumper도구를 사용해 복호화 가능함.

Core Data

  • 애플리케이션의 모델 객체(MVC)를 관리 하기 위한 프레임워크
  • Sqlite를 영구저장소로 사용할 수 있지만, 프레임워크 자체는 데이터베이스가 아님
  • Sqlite는 관계형 데이터베이스로 모바일 디바이스와 같은 시스템에 적합한 경량 데이터 엔진을 구현
  • Core Data는 모델을 만들고, 서로 다른 유형의 개체간의 관계를 관리하고, 데이터를 로컬로 저장하고, 쿼리를 원할 때마다 로컬 캐시에서 가져오는 기능을 함.
  • 데이터베이스 테이블 명 앞에 z 문자가 붙는 것만 다름
  • 저장된 데이터는 암호화 되지 않아 중요한 정보를 저장하면 안됨.
  • 중요한 정보를 저장하려면 암호화된 데이터를 저장 할 수 있는 라이브러리를 사용해야함.
728x90
반응형

'보안 > iOS보안' 카테고리의 다른 글

iOS 탈옥 탐지 대응 방안  (1) 2022.12.18
iOS 탈옥 탐지 기법 몇 가지  (0) 2022.12.14
iOS 애플리케이션 디렉터리 구조  (1) 2022.12.10
iOS 탈옥 Cydia 추천 트윅  (0) 2022.12.06
iOS 앱 생명 주기  (0) 2022.12.05

댓글