SandBox
공식 문서
App Sandbox
Restrict access to system resources and user data in macOS apps to contain damage if an app becomes compromised
기본적으로 앱 마다 별도의 파일을 생성해서, 서로 공유하지 않도록 한다, 앱이 손상된 경우 시스템과 사용자의 데이터 피해를 최소화하기 위해서다.
- 애플에서는 (App Store) 에서는 모든 앱들이 App SandBox를 적용해야한다. iOS가 보안이 좋다고 하는 이유? SandBox이 이유중 하나이다.
- 보안 수업때 Capture the flag 했던것 처럼, SandBox를 사용하지 않는다면? 만약 다른 앱이랑 같은 메모리 및 데이터를 공유하게 되면, 일부러 OverFlow를 만들어서 다른 앱 혹은 시스템의 허점을 이용해서 공격을 할 수 있게 된다.
- 그치만 우리가 앱을 사용할떄 카메라를 쓸수도 있고, 마이크를 쓸수도 있는데, 시스템 리소스를 사용하기 위해서는 그 의도를 명시해야한다고 한다.
- 그래서 우리가 만날 허용하니 마니 그런 권한 허용 알림창이 계속 뜨는것이다!
- 그러면 SandBox 내부는 어떻게 생겼을까?
Bundle Container
- 앱의 Bundle 을 보유하는 컨테이너라고 한다.
- 읽기 전용으로 저장이 되어 있으며, plist, 이미지,사운드 등등을 함께 저장한다.
- 쓰기 (수정) 필요한 경우는 Data Container로 복사해서 작업을 한다.
Data Container
- 크게 4개의 디렉토리로 나눠진다.
- Documents, Library, Temp, System Data로 나눠진다.
- 각각 디렉토리 및 하위 디렉토리의 용도는 아래와 같다.
참고 블로그 : [Hoojeong] [iOS] SandBox를 알아보자!