샌드박스 (SandBox)
- iOS에서의 샌드박스는 기본적으로 앱 마다 별도의 파일을 생성하여 공유를 막고, 외부로부터 들어온 접근에 대해 보호되는 영역을 하여 시스템이 부정적으로 조작되는 것을 막는 보안모델이다.
- kernel 레벨에서 강제되는 접근 제어기술이며, 앱이 손상될 경우 시스템과 사용자 데이터의 손상을 방지하도록 설계되었다.
SandBox가 있는 경우와 없는 경우
복잡한 시스템들은 항상 취약점을 가지게 되고, 소프트웨어의 복잡도는 시간이 지나면서 증가하게 된다. 우리가 얼마나 주의해서 보안에 유의한 코딩을 하고, 버그를 방지해도 공격자들은 딱 한 번만 우리의 방어를 뚫으면 된다.
App SandBox는 앱으로 오는 공격들을 방지할 순 없지만, 그 성공적인 한 번의 공격이 일으킬 수 있는 피해를 최소화 할 수 있다.
Non-sandBox 앱은 app을 실행하는 user에 대한 모든 권한을 가지고 있으며, user가 접근할 수 있는 모든 resource에 접근할 수 있다. 만약 그 app이 보안허점과 연결되어 있다면, 공격자는 잠재적으로 해당 구멍들을 이용하여 app의 제어권을 가지고 갈 수 있고 그로 인해 user가 할 수 있는 것은 모두할 수 있는 능력을 가지게 된다.
이러한 문제들을 완화하기 위해서, App Sandbox의 전략은 크게 두가지이다.
- App Sandbox를 통해 앱이 시스템과 상호 작용하는 방식을 설명할 수 있다. 그런다음 system은 app이 작업을 완료하는데 필요한 권한만 부여한다.
- App Sandbox는 user가 dialog를 열고 닫기, 드래그 앤 드롭 및 기타 친숙한 사용자 상호 작용을 통해 투명하게 앱에 추가 액세스 권한을 부여할 수 있도록 한다.
App Sandbox는 특별한 묘책이 아니다. App은 여전히 손상될 수 있고, 손상된 앱은 damage를 입히게 된다. 하지만 잠재적인 damage는 app이 자신의 작업을 완료하기 위해 최소한의 권한만 얻도록 하게되면 엄격하게 제한된다.
App SandBox는 몇 가지 간단한 원칙에 기반한다
App Sandbox는 중요한 리소스에 대한 액세스를 앱별로 제한함으로써 공격자가 앱의 보안 취약점을 성공적으로 이용할 경우 사용자 데이터의 도난, 손상 또는 삭제 또는 시스템 하드웨어 가로채기에 대한 마지막 방어 수단을 제공한다. 예를 들어 SandBox app은 권한을 사용하여 다음 리소스를 사용할 의도를 명시적으로 명시해야 합니다.
- Hardware (Camera, Microphone, USB, Printer)
- Network Connections (Inbound, Outbound)
- App Data (Calendar, Location, Contacts)
- User Files (Downloads, Pictures, Music, Movies, User Selected Files)
Project를 정의할 때 명시적으로 요청하지 않은 resource에 대한 access는 run time 때 system에 의해 거부된다. 만약 스케치 앱을 만들고 있다면, 마이크에대한 접근이 필요하지 않기 때문에 우리는 접근 요청을 하지 않을 거고 system은 app이 만등러내는 어떤 요청도 거절할 것을 알게 된다.
반면에 sandbox 앱은 우리가 요청한 특정 리소스들에 대한 권한을 가지고 있고, user들이 친숙한 방법을 통해 sandBox를 확장해나가게 하고 자동으로 추가적인 행동들을 할 수 있게 해준다.
- Invoking Services from the Services menu (서비스 메뉴에서 서비스 호출)
- Reading most world readable system files (대부분의 곳에서 읽을 수 있는 시스템 파일 읽기)
- Opening files chosen by the user (사용자에 의해 선택된 파일 열기)
'iOS > 설명' 카테고리의 다른 글
[iOS] 앱 실행 방법에 따른 AppDelegate 호출 메서드 (0) | 2023.01.07 |
---|---|
[iOS] CALayer.shouldRasterize (0) | 2023.01.01 |
[iOS] UIFont의 property들 (0) | 2022.12.31 |
[iOS] OOM (Out of Memory) crash case - 1 (0) | 2022.11.26 |
[iOS] CAShapeLayer lineDashPattern (점선) 만들기 (0) | 2022.11.26 |
댓글