![](https://help.apple.com/assets/6537FB06A074DBB5E802EA07/6537FB31280588A5490B6E1D/ko_KR/52d714626638d3391623c853be0c593b.png)
iOS 및 iPadOS의 런타임 프로세스 보안
iOS 및 iPadOS는 ‘샌드박스’, 선언된 권한 및 ASLR(Address Space Layout Randomization)을 사용하여 런타임 보안을 보장합니다.
샌드박스
모든 타사 앱은 ‘샌드박스’되어 있어 다른 앱이 저장한 파일에 접근하거나 기기에 변경 사항을 만들 수 없습니다. 샌드박스는 앱이 다른 앱에서 저장한 정보를 수집하거나 변경하는 것을 방지하도록 설계되었습니다. 각 앱은 파일에 대한 고유 홈 디렉토리를 가지며 앱이 설치될 때에 임의로 할당됩니다. 타사 앱이 다른 디렉토리의 정보에 접근해야 하는 경우 명백하게 iOS 및 iPadOS에서 제공하는 서비스를 통해서만 접근할 수 있습니다.
또한 시스템 파일 및 리소스는 사용자가 설치한 앱으로부터 보호됩니다. 타사 앱과 마찬가지로, iOS 및 iPadOS에 있는 대부분의 시스템 파일 및 리소스는 권한이 없는 ‘mobile’ 사용자로 실행됩니다. 전체 운영 체제 파티션은 읽기 전용으로 마운트되어 있습니다. 원격 로그인 서비스와 같은 불필요한 툴은 시스템 소프트웨어에 없기 때문에 API에서는 앱이 다른 앱 또는 iOS 및 iPadOS 자체를 수정하기 위해 권한을 확대하는 것을 승인하지 않습니다.
권한 사용
타사 앱에서 사용자 정보와 iCloud 및 확장성과 같은 기능에 접근할 경우 선언된 권한을 사용해 제어됩니다. 권한은 쌍으로 된 키 값으로 앱에 로그인하여 UNIX 사용자 ID와 같은 런타임 요소를 능가하는 승인을 허용합니다. 권한은 디지털로 서명되어 있기 때문에 변경이 불가능합니다. 권한은 또한 시스템 앱과 데몬에서 광범위하게 사용되어 특정 권한이 필요한 작업을 수행합니다. 그렇지 않은 경우 루트로 실행하기 위한 프로세스를 요청합니다. 이를 통해 손상된 시스템 앱 또는 데몬이 권한을 확대할 가능성을 크게 줄입니다.
추가적으로 앱은 시스템에서 제공한 API를 통해서만 백그라운드 프로세스를 실행할 수 있습니다. 이렇게 하면 앱 성능을 저하시키거나 배터리 사용 시간을 현저하게 줄이지 않으면서 계속 작동할 수 있게 됩니다.
ASLR(Address Space Layout Randomization)
ASLR(Address Space Layout Randomization)은 메모리 변형 버그 공격을 막습니다. 내장된 앱은 ASLR을 사용하여 실행 시에 모든 메모리 영역을 무작위로 할당합니다. ASLR은 실행 시 동작뿐 아니라, 실행 코드, 시스템 라이브러리 및 관련 프로그래밍 구성의 메모리 주소를 임의로 할당하여 수많은 공격의 가능성을 더욱 줄입니다. 예를 들어 RTL(Return-To-Libc) 공격은 스택 및 시스템 라이브러리의 메모리 주소를 조종해 기기를 속여 악성 코드를 실행하도록 할 수 있습니다. 이러한 요소들을 임의로 배치하면 특히 다수의 기기에 대한 공격은 더욱 힘들어지게 됩니다. Xcode 및 iOS나 iPadOS 개발 환경에서 자동으로 ASLR 지원을 켠 상태로 타사 프로그램을 컴파일합니다.
실행 안 함 기능
iOS 및 iPadOS에서는 메모리 페이지를 실행 불가능으로 표시하는 ARM의 실행 안 함(XN) 기능을 사용해 더욱 강력한 보호 기능을 제공합니다. 실행 및 쓰기가 모두 가능하게 표시된 메모리 페이지는 엄격히 제어된 조건의 앱에서만 사용할 수 있습니다. 커널이 Apple 전용 동적 코드 서명 권한의 존재 여부를 확인합니다. 게다가 하나의 mmap
호출만이 실행 및 쓰기가 가능한 페이지를 요청할 수 있어, 이 경우에도 무작위의 주소가 주어집니다. Safari는 이 기능을 JavaScript just-in-time(JIT) 컴파일러에 사용합니다.