plist 파일

Tags
Insecure Local Storage
plist
요약
앱에 필요한 설정 데이터 모아놓은 파일 중요정보가 담겨있으면 안됨.

Plist 파일

  • 앱에 필요한 앱 설정 데이터를 모아놓은 파일 (Property List)
  • ‘표준 데이터 타입’을 저장하는 데 사용. (integer, string, 등)
  • 개발자들이 실수로 plist 파일에 민감한 정보를 저장하기도.
    • 자격정보(credential)와 같은 평문으로 저장해서는 안 되는 내용
    • 애플리케이션의 작동 방식을 바꿀 수 있는 정보
      • 비활성화 시킨 결제 기능 활성화 등
  • 공격자는 쉽게 이 정보를 확인 가능하므로 주의 필요.

형태 2가지

  • 바이너리 : Plist의 포맷은 기본적으로 binary이나,
  • XML : plutil 툴로 xml 형식으로 바꾸거나 xcode로 열어 읽기 쉽게 볼 수 있음.

Plist 파일에 값 쓰기

  • NSUserDefaults API (대부분)
  • NSPreferences API (드물게)
 

끔찍한 상황

예시 1)

  • API 함수로 민감정보를 평문으로 plist에 기록하는 것도 문제지만,
  • 자격증명으로 사용하는 끔찍한 순간부터 보자.
notion image
Credential.plist에서 key로 값 불러와 입력 값과 비교하는 모습
notion image

예시 2)

중요정보를 사용하기 쉽다는 이유로 plist에 저장하면 안된다.
notion image
notion image
 

NSUserDefaults

  • preferences를 커스터마이징 하는 데 사용되는 함수 (plist파일)
  • 개발자들이 민감정보를 저장하는데 사용하는 실수를 하기도 함.
notion image
notion image