[하루한줄] CVE-2022-22583: macOS System Integrity Protection (SIP) 우회

URL

Technical Analysis of CVE-2022-22583: Bypassing macOS System Integrity Protection (SIP)

Target

  • macOS
    • Monterey 12.2 이전 버전
    • Big Sur 11.6.3 이전 버전
    • Security Update 2022-001 Catalina 이전 버전

Explain

“rootless”로 알려진 macOS의 보안 메커니즘 중 하나인 System Integrity Protection (SIP)에 대한 우회 취약점이 발견되었습니다. 해당 취약점은 2021년 10월 28일 Microsoft에서 발견한 CVE-2021-30892에 대한 패치를 우회하는 취약점입니다.

CVE-2021-30892는 Apple 서명 패키지(.pkg)를 설치할 때, 쉘 스크립트를 com.apple.rootless.heritable 권한을 가진 system_installd를 통해 SIP를 우회하여 실행할 수 있는 취약점으로 임시 디렉터리에 스크립트를 추출한 후 해당 폴더에서 실행하는 방식으로 패치되었습니다.

이때, 임시 디렉터리에 추출 후 실행하는 과정 사이에는 상당한 텀이 있으며, Apple은 이를 인지하여 임시 디렉터리를 SIP로 제한하였습니다. 하지만 system_installd가 사용하는 /tmp는 심볼릭 링크이며, /tmp 폴더만 SIP 제한이 걸려있지만 실제 폴더는 SIP 제한이 걸려있지 않습니다. (ex /tmp -> private/tmp일 시 private/tmp는 SIP가 걸려있지 않음)

img

img

따라서 스크립트 추출과 실행 사이의 시간 동안 가상 이미지를 임시 디렉터리에 마운트 하여 다음과 같이 SIP 우회가 가능합니다.

  1. 가상 이미지 파일을 생성하여 /private/tmp에 마운트
  2. 설치 후 실행되는 스크립트를 가진 Apple 서명 패키지 설치
  3. 인스톨러가 스크립트 디렉터리를 압축할 때까지 기다린 후 추출된 경로를 수집
  4. 이미지 파일을 언마운트 하여 추출 전 /private/tmp의 내용을 가지도록 함
  5. 3에서 수집한 경로를 사용하여 스크립트 디렉터리를 생성한 후 실행할 악성 스크립트 저장

해당 취약점은 mac OS Monterey 12.2, Big Sur 11.6.3, Security Update 2022-001 Catalina에서 /Library/Apple/System/Library/InstallerSandboxes라는 새 디렉터리로 추출 경로를 수정한 후 SIP가 활성화되어있는 경우 마운트 시도를 제한하는 방식으로 패치되었습니다.