[하루한줄] CVE-2020-9971 : macOS/iOS XPC 서비스 관리 앱에서 발견된 권한 상승 취약점

URL

CVE-2020-9971 Abusing XPC Service mechanism to elevate privilege in macOS/iOS

Target

macOS < Big Sur
iOS < 13.5

Explain

launchd는 macOS에서 inetd, xinted를 대체하는 서비스 관리 데몬입니다.
이러한 launchd 애플리케이션에서 프로세스 간 통신 프로토콜을 제공하는 XPC 서비스를 관리할 때 권한 상승이 가능한 취약점의 세부 정보가 공개되었습니다.

launchdlaunchd process domain 을 통해 XPC 서비스를 지정된 프로세스로 제한할 수 있으며 프로세스 도메인은 소유자 프로세스만 수정이 가능합니다. 그러나 Big Sur 이전의 launchd에서 프로세스 도메인에 XPC를 추가할 때 호출자 pid와 프로세스 도메인의 소유자 pid를 확인하지 않아 프로세스가 다른 임의의 프로세스에 XPC 서비스를 추가할 수 있습니다.

해당 취약점을 악용하면 해커의 프로세스(애플리케이션)가 루트 권한으로 실행되는 프로세스의 도메인에 임의의 사용자 지정 XPC 서비스를 추가할 수 있고, 추가된 XPC 서비스가 루트 권한으로 실행됩니다.

iOS 또한 macOS와 동일한 launchd 로직을 사용하고 있으며 iOS 13.5 이전 버전에 같은 취약점이 존재합니다. 애플은 호출자 pid가 대상 프로세스 도메인의 소유자인지 확인하는 코드를 추가해 해당 취약점을 패치했습니다.