1P by neo 22일전 | favorite | 댓글 1개

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의 패치는 임시방편처럼 보임

    • 샌드박스 상속 방식을 전면적으로 재설계할 필요가 있음
  • 샌드박스를 탈출하면 샌드박스가 없는 상태로 돌아가는 것인지, 더 높은 권한 상태로 가는 것인지 궁금함