GN⁺: 다수의 새로운 macOS 샌드박스 탈출 취약점
(jhftss.github.io)macOS 샌드박스 탈출의 새로운 시대: 간과된 공격 표면과 10개 이상의 새로운 취약점 발견
- macOS 시스템에서 대부분의 프로세스는 제한된 샌드박스 환경에서 실행됨. 공격자가 원격 코드 실행(RCE)을 얻더라도 그 능력은 제한적임. 다음 단계는 샌드박스를 우회하여 더 넓은 파일 접근 권한을 얻는 것임.
- 샌드박스 탈출 취약점을 발견하기 위해 기존 문제를 검토한 결과, 중요한 간과된 공격 표면과 새로운 공격 기법을 발견함. 이를 통해 여러 새로운 샌드박스 탈출 취약점을 발견함: CVE-2023-27944, CVE-2023-32414, CVE-2023-32404, CVE-2023-41077, CVE-2023-42961, CVE-2024-27864, CVE-2023-42977 등.
macOS 샌드박스에 대하여
앱 샌드박스
- Mac AppStore의 요구에 따라 대부분의 애플리케이션은 앱 샌드박스 제한과 함께 실행됨. 샌드박스 애플리케이션은 특정 권한을 가져야 하며, 샌드박스에 들어가면 컨테이너화되어 파일 작업이 제한됨.
- 샌드박스 애플리케이션이 생성한 파일은 기본적으로 격리되며, 샌드박스 앱은 이 속성을 제거할 수 없음.
- 샌드박스 없는 애플리케이션은 모든 사용자 데이터와 시스템 리소스에 무제한 접근 가능함. 반면, 샌드박스 제한이 있는 애플리케이션은 제한된 접근만 가능함.
-
포크된 자식 프로세스는 부모 프로세스의 샌드박스 제한을 상속하지만,
LaunchService.framework
를 통해 시작된 프로세스는 제한을 상속하지 않음.
서비스 샌드박스
- 대부분의 Apple 데몬 서비스는 서비스 샌드박스 컨텍스트에서 실행됨. 이들은 시스템 위치에 정의된 샌드박스 프로필에 의해 제한됨.
- 서비스 샌드박스는 보통 컨테이너화되지 않으며, 파일은 기본적으로 격리되지 않음.
공격 표면
기존의 일반적인 방법
LaunchService.framework을 통한 공격
- 시스템 LaunchService 프레임워크를 통해 비샌드박스 애플리케이션을 공격하는 방법이 있음. 예를 들어, CVE-2021-30864는 시스템 비샌드박스 애플리케이션 Terminal.app의 $HOME 환경 변수를 조작할 수 있음.
- 새로운 비샌드박스 애플리케이션을 드롭하고 실행할 수 있지만, 새로 드롭된 애플리케이션은 격리되어 실행이 방지됨.
사용 가능한 Mach 서비스 공격
- 앱 샌드박스 프로필에 나열된 사용 가능한 Mach 서비스를 공격하는 방법이 있음. 시스템의 모든 Mach 서비스 정보는
/System/Library/xpc/launchd.plist
파일에 저장됨.
새로운 간과된 방법
- PID 도메인에 존재하는 XPC 서비스는 간과된 서비스임. 이들은 요청에 따라 애플리케이션에 의해 시작되고 요청 애플리케이션이 종료되면 종료됨.
- PID 도메인의 XPC 서비스는 샌드박스 애플리케이션에서 호출할 수 있으며, 추가적인 권한 검사나 샌드박스 검사가 없음.
새로운 취약점 및 익스플로잇
Beta-No-CVE-1
- 이 취약점은 macOS Sonoma 베타 버전에만 영향을 미침.
- 취약점은 XPC 서비스
/System/Library/PrivateFrameworks/StorageKit.framework/XPCServices/storagekitfsrunner.xpc
에 존재함. - 이 서비스는 샌드박스 제한 없이 실행 가능하며, 임의의 시스템 명령을 실행할 수 있음.
Beta-No-CVE-2
- 이 취약점도 베타 전용 소프트웨어에만 영향을 미침.
- 취약점은 XPC 서비스
/System/Library/PrivateFrameworks/AudioAnalyticsInternal.framework/XPCServices/AudioAnalyticsHelperService.xpc
에 존재함. - 임의의 경로를 압축할 수 있으며, 생성된 zip 파일은 격리되지 않음.
CVE-2023-27944
- 취약점은 XPC 서비스
/System/Library/PrivateFrameworks/TrialServer.framework/XPCServices/TrialArchivingService.xpc
에 존재함. - 이 서비스는 서비스 샌드박스에 들어가지만, 드롭된 파일은 격리되지 않음.
CVE-2023-32414
- 취약점은 XPC 서비스
/System/Library/PrivateFrameworks/DesktopServicesPriv.framework/XPCServices/ArchiveService.xpc
에 존재함. - 이 서비스는 서비스 샌드박스에 들어가지만, 드롭된 파일은 격리되지 않음.
CVE-2023-32404
- 취약점은 XPC 서비스
/System/Library/PrivateFrameworks/WorkflowKit.framework/XPCServices/ShortcutsFileAccessHelper.xpc
에 존재함. - 이 서비스는 샌드박스 제한 없이 실행 가능하며, 전체 디스크 접근을 위한 특별한 TCC 권한을 가짐.
CVE-2023-41077
- 취약점은 XPC 서비스
/System/Library/Frameworks/ImageCaptureCore.framework/XPCServices/mscamerad-xpc.xpc
에 존재함. - 이 서비스는 샌드박스 제한 없이 실행 가능하며, 사진 및 이동식 볼륨에 직접 접근할 수 있는 특별한 TCC 권한을 가짐.
Hacker News 의견
-
XPC 서비스를 개별적으로 패치하는 것은 이상하며, 이는 샌드박스 자체의 설계 문제로 보임. 많은 XPC 서비스가 샌드박스 앱에서 접근 가능한 이유에 의문을 가짐
- MacOS는 블랙리스트가 아닌 기능 기반의 Darwin 컨테이너를 가져야 함
- SBPL(샌드박스 프로파일 언어)이 흥미로움. 관련 정보는 GitHub에서 확인 가능함
- MacOS에 SBPL을 처리하는 Scheme 인터프리터가 있는지 궁금함
- "sandbox-exec"가 이를 처리하는 것으로 보임
-
보안 프레임워크가 새로운 문제를 야기하며, 보안이 더 강화되었다고 느끼지 않음
- 네덜란드 세법처럼 패치의 연속이며, 이미 의식을 가진 것처럼 보임
-
XPC 관련 결함이 계속 발견될 가능성이 높으며, Apple이 서비스 강화 접근 방식을 재설계하지 않는 한 지속적인 CVE가 발생할 것으로 예상됨
-
샌드박스를 사랑하면서도 싫어함
- 샌드박스는 훌륭한 2차 방어선이지만, 대기업은 샌드박스를 탈출하지 못할 때 RCE 수정을 거부하며 주 방어선으로 사용함
-
MacOS는 세밀한 권한을 위해 설계되지 않았으며, 기존 Mac OS와 NeXTSTEP 기술 위에 추가할 수 없음
- 보안 연구자가 아닌 앱 개발자로서 여러 우회를 발견했지만, Apple의 보안 취약점 보고 시스템이 비효율적이라 포기함
- MacOS는 보안 연극의 희생양이 되었으며, 사용자와 개발자에게 해를 끼치고 있음
-
iOS에서도 취약점이 존재하며, 약 20억 대의 활성 기기가 있음
-
PID 도메인의 XPC 서비스는 샌드박스 제한을 우회하는 영리한 방법이며, Apple의 패치는 임시방편처럼 보임
- 샌드박스 상속 방식을 전면적으로 재설계할 필요가 있음
-
샌드박스를 탈출하면 샌드박스가 없는 상태로 돌아가는 것인지, 더 높은 권한 상태로 가는 것인지 궁금함