GN⁺: macOS의 Zero-Click Calendar 초대 취약점 체인
(mikko-kenttala.medium.com)- macOS Calendar에서 제로 클릭 취약점을 발견했음
- 공격자가 Calendar 샌드박스 환경 내에서 임의의 파일을 추가하거나 삭제할 수 있음
- 악성 코드 실행 및 보안 보호 회피와 결합하여 사용자의 민감한 iCloud Photos 데이터를 손상시킬 수 있음
- Apple은 2022년 10월부터 2023년 9월 사이에 모든 취약점을 수정했음
취약점 세부 사항
1단계: Calendar의 임의 파일 쓰기 및 삭제 취약점 (CVE-2022-46723)
- 공격자가 악성 캘린더 초대를 통해 파일 첨부를 포함할 수 있음
- 첨부 파일의 파일 이름이 제대로 검증되지 않음
- ATTACH 섹션에 임의 경로를 설정하여 디렉토리 트래버설 공격을 수행할 수 있음
- 예: “FILENAME=../../../PoC.txt”
- 파일이 ~/Library/Calendar/PoC.txt에 추가됨
- 파일이 이미 존재하면 “PoC.txt-2”로 저장됨
- 공격자가 보낸 이벤트/첨부 파일이 삭제되면 원래 파일(PoC.txt)이 제거됨
- 이 취약점은 파일 시스템 내에서 기존 파일을 제거하는 데 사용될 수 있음
- macOS Montrey 12.5에서 취약점이 존재함. macOS 13.0 beta4에서는 취약하지 않음
2단계: 임의 파일 쓰기 취약점을 이용한 원격 코드 실행 (RCE) 획득
- macOS Ventura 출시 직전에 발견됨
- macOS 버전 업그레이드 프로세스를 이용하여 Calendar의 Open File 기능을 통해 원격 코드 실행을 획득할 수 있음
- 여러 파일을 감염시켜 RCE 익스플로잇을 트리거함
주입된 파일 #1: 000Hacked-$RANDOM.calendar
- Siri가 제안한 캘린더 데이터처럼 보이는 캘린더 데이터 포함
- 반복 이벤트 및 알림 기능 포함
주입된 파일 #2: CalendarTruthFileMigrationInProgress 파일
- 기존 캘린더를 새 데이터베이스로 업그레이드 및 병합
주입된 파일 #3: CalPoCInit.dmg
- 캘린더 이벤트에 포함된 알림이 파일을 엶
- CalPoCInit.dmg는 외부 Samba 서버를 가리키는 참조 포함
주입된 파일 #4: stage1.url
- 캘린더 이벤트에 포함된 두 번째 알림이 파일을 엶
- Samba 마운트에서 애플리케이션을 가리키는 URL 포함
주입된 파일 #5: stage2.url
- 캘린더 이벤트에 포함된 세 번째 알림이 파일을 엶
- 사용자 상호작용 없이 악성 애플리케이션 실행
3단계: 민감한 Photos 데이터 접근
- Photos의 구성을 변경하여 iCloud에 저장된 사진에 접근 가능
- TCC 보호를 우회하여 민감한 사용자 데이터를 유출할 수 있음
Photos 구성 변경을 통한 iCloud 파일 접근
- 공격자가 Photos의 System Photo Library를 다른 경로로 설정하는 구성 파일 생성
- PhotosPoC.sh 실행 시 새로운 구성 파일이 가져와짐
- 원래 구성은 백업되고 새로운 구성은 /var/tmp/mypictures/에 저장됨
- 새로운 System Photo Library로 Photos 실행 및 iCloud 동기화 활성화
전체 체인
- 여러 단계를 거쳐 macOS의 모든 보안 장애물을 극복해야 함
- 샌드박스를 우회하고, SMB 트릭을 사용하여 Gatekeeper 완화 조치를 우회함
- TCC 보호를 우회하여 민감한 데이터에 접근 가능
타임라인
- 2022-08-08: Calendar 샌드박스에서 임의 파일 쓰기 및 삭제 보고
- 2022-10-24: macOS Monterey 12.6.1 및 Ventura 13에서 수정
- 2022-11-14: PoC 전송, Calendar 취약점을 이용한 임의 코드 실행 방법
- 2022-12-04: PoC 전송, iCloud 사진 접근 방법
- 2023-02-20: CVE-2022-46723 크레딧 및 CVE 추가
- 2023-03-27: macOS Ventura 13.3에서 Gatekeeper 우회 수정
- 2023-09-26: CVE-2023-40434 Photos 취약점 수정 및 크레딧
- 2023-10-09: Gatekeeper 우회 및 Photos 취약점 관련 버그 바운티 발표
- 2023-12-21: CVE-2023-40433 Gatekeeper 우회 크레딧
GN⁺의 정리
- 이 기사는 macOS Calendar의 제로 클릭 취약점을 다루고 있으며, 이를 통해 공격자가 사용자의 민감한 iCloud Photos 데이터에 접근할 수 있는 방법을 설명함
- 취약점 체인은 여러 단계를 거쳐 샌드박스를 우회하고, Gatekeeper 및 TCC 보호를 우회하여 원격 코드 실행 및 민감한 데이터 접근을 가능하게 함
- 이 기사는 보안 연구자 및 macOS 사용자에게 중요한 정보를 제공하며, Apple이 이러한 취약점을 수정했음을 강조함
- 유사한 기능을 가진 다른 프로젝트로는 Google Calendar와 같은 다른 캘린더 애플리케이션이 있음
Hacker News 의견
-
기술 대기업이 상금을 지급하지 않는 경우, 정당한 이유가 있을 가능성이 높음
- 상금 프로그램은 정당한 제출물에 상금을 지급하도록 설계됨
- 상금을 지급하지 않는 것은 프로그램의 목표에 반함
- 프로그램 운영 팀은 더 많은 상금을 지급하도록 유도됨
-
iCloud Photo Library를 사용하지 않지만, 사진 라이브러리 위치가 변경되면 새로운 위치가 보호되지 않는 것이 이상함
- 시스템 사진 라이브러리를 변경한 후 Photos 앱이 해당 디렉토리를 보호해야 함
- Sonoma 14.6.1 시스템에서 테스트한 결과, 새로운 사진 라이브러리가 ~ /Pictures에 생성되면 접근이 거부됨
- 그러나 /tmp에 생성되면 접근이 허용됨
- Apple이 파일 시스템 어디로든 사진 라이브러리를 이동할 수 있는 기능을 지원하려면 적절한 보호를 적용해야 함
-
격리 플래그를 조작하는 또 다른 방법이 있음
- 너무 많은 시스템이 이러한 플래그를 수정할 수 있는 능력을 가짐
-
첫 번째 단계 자체가 심각한 취약점임
- 공격자는 ATTACH 섹션에 임의의 경로를 설정하여 디렉토리 트래버설 공격을 수행할 수 있음
-
공격자는 악성 캘린더 초대를 통해 피해자의 iCloud Photos를 훔칠 수 있음
- macOS 사용자가 누구에게나 무작위 초대를 보낼 수 있는지 궁금함
-
공격자가 지정한 파일이 이미 존재하면 "PoC.txt-2"로 저장됨
- 나중에 이벤트/첨부 파일이 삭제되면 원래 파일이 제거됨
- 이 취약점은 파일 시스템에서 기존 파일을 제거하는 데 사용될 수 있음
-
상금 상태가 마음에 들지 않음
- 보안 연구자들에게 Apple이나 다른 FAANG 회사에서 이렇게 오래 기다리는 것이 일반적인지 궁금함
-
메모리 안전이 아닌 보안 취약점이 발생할 때마다 스릴을 느낌
- Rust에 투자된 시간과 에너지가 경로 트래버설 버그로 낭비될 것이라는 생각이 즐거움
-
Lockdown Mode가 이를 방지하는지 궁금함
-
꽤 오래된 익스플로잇임
- 파일 이름에 경로가 포함된 것을 약 10년 전에 읽은 기억이 있음