맥OS 하이 시에라 (macOS High Sierra)의 Secure Kernel Extension Loading(SKEL) 제로데이 취약점
맥OS 하이 시에라에 도입된 Secure Kernel Extension Loading (SKEL) 에서 중대한 결함이 발견됐다. 해당 결함을 발견한 Patrick Wardle은 SKEL의 설계 자체에 결함이 있다고 주장했다. 애플의 폐쇄적 정책에 기인하여 SKEL은 (알려진) 루트킷 등의 커널 익스텐션 악성코드를 막도록 설계되었으며, OSKextExcludeList 에 블랙리스트처럼 저장되어 있다고 한다. 해당 블랙리스트가 업데이트 되지 않으면 당연히 위험할 수 밖에 없는 구조다.
SKEL의 규칙에 따르면 하이 시에라로 업데이트 했던 순간에 설치되어있었거나, 이미 허가받은 익스텐션에서 사용하고 있었던 것과 같은 팀 아이디를 가졌거나, 이미 허가받은 익스텐션을 대체하는 경우이거나, MDM 솔루션에 등록되어있는 경우에 한해 허용한다. Wardle은 작년에 그가 발견한 리틀 스니치(Little Snitch)의 힙 오버플로우 공격도 SKEL과 관계없이 여전히 사용할 수 있다고 한다. 루트 권한을 가진 공격자는 악성코드가 포함된 LittleSnitch.kext (버전 3.61 미만) 를 문제 없이 불러올 수 있으므로 힙 오버플로우 공격을 통해 커널에서 코드 실행을 할 수 있다.
설계에 따르면 SKEL의 블랙리스트(OSKextExcludeList)가 수정되면 공격자가 kext를 로드할 수 있을 것이다. SKEL은 블랙리스트(OSKextExcludeList)가 수정되는 것을 system integrity protection(SIP)를 통해 방어한다. 루트 권한을 가진 사용자라 하더라도 블랙리스트를 수정할 수 없다. 만약 이러한 행위를 운영체제가 알아 차리면 kext를 로드하지 않을 뿐 아니라 사용자에게 알림을 해 준다. 이렇게 블락된 프로그램은 시스템 환경설정 - 보안 & 프라이버시 에서 허용할 수 있다.

공격 시연 (사진출처 : https://objective-see.com/blog/blog_0x21.html)
Wardle은 본인의 블로그에 사용자와의 상호작용 없이 스크립트만으로 리틀스니치 kext를 로드하는 것을 시연했다. 그는 애플이 시스템의 통제를 사용자로부터 멀리하게 하는데에만 집중하고 있다며 SKEL의 설계결함은 보안을 명목으로 써드파티 개발자들을 힘들게 할 뿐 공격자들에게는 전혀 영향이 없는 업데이트라고 주장했다.
Resources:
High Sierra's 'Secure Kernel Extension Loading' is Broken by Patrick Wardle
Secure Kernel Extension Loading in macOS Easily Bypassed: Researcher by Ionut Arghire