Banyak kerentanan baru untuk lolos dari sandbox macOS
(jhftss.github.io)- Dalam riset escape sandbox macOS, layanan XPC domain PID yang relatif jarang diperhatikan muncul sebagai permukaan serangan, berujung pada ditemukannya lebih dari 10 kerentanan baru
- Target utamanya bukan layanan Mach di domain System/User, melainkan layanan XPC tipe Application yang didaftarkan di domain PID saat aplikasi atau framework dimuat
- Contoh kerentanan mencakup CVE-2023-27944, CVE-2023-32414, CVE-2023-32404, CVE-2023-41077, CVE-2023-42961, CVE-2024-27864, CVE-2023-42977, dan lainnya; sebagian terkait dengan bypass TCC, hak akses terkait SIP, hingga dampak pada iOS
- Titik kegagalan yang berulang adalah layanan non-terisolasi yang, saat memproses file, direktori, arsip, atau DMG, tidak menangani atribut ekstensi quarantine, string path, dan verifikasi hak akses klien dengan aman
- Respons Apple mencakup penghapusan layanan XPC yang rentan, normalisasi input, pemindahan verifikasi ke sisi server, serta kewajiban private entitlement, tetapi masih ada 5 laporan yang menunggu patch
Model sandbox macOS dan tujuan escape
- Di macOS, banyak proses, termasuk layanan milik Apple dan aplikasi pihak ketiga, berjalan dalam lingkungan sandbox yang dibatasi
- Sekalipun penyerang memperoleh eksekusi kode jarak jauh (RCE) pada proses sandbox, kemampuan eksekusi dan hak akses file tetap terbatas, sehingga langkah berikutnya adalah escape sandbox untuk mendapatkan hak akses yang lebih luas
-
App Sandbox
- Sesuai persyaratan Mac App Store, banyak aplikasi berjalan dengan pembatasan App Sandbox
- Aplikasi sandbox harus memiliki entitlement
com.apple.security.app-sandbox - Pembatasan diterapkan pada tahap inisialisasi dyld, sebelum fungsi
mainaplikasi - Setelah masuk ke App Sandbox, aplikasi dikontainerisasi, dan operasi file dibatasi ke path kontainer data
- File yang dibuat oleh aplikasi sandbox secara default diberi atribut ekstensi
com.apple.quarantine - Profil sandbox memiliki aturan yang mencegah penghapusan atribut ekstensi ini
- Hak akses terperinci App Sandbox didefinisikan di
/System/Library/Sandbox/Profiles/application.sb - Jaringan, hardware, filesystem, dan layanan Mach yang dapat diakses dibatasi
- Proses anak hasil
forkmewarisi pembatasan App Sandbox milik induknya - Proses yang dijalankan melalui
LaunchService.frameworktidak mewarisi pembatasan; misalnya, aplikasi non-sandbox dapat dijalankan langsung dengan perintah sistemopen
-
Service Sandbox
- Banyak layanan daemon Apple berjalan dalam konteks Service Sandbox
- Profil sandbox layanan terutama berada di
/System/Library/Sandbox/Profiles/*.sbdan/usr/share/sandbox/*.sb - Pembatasan Service Sandbox diterapkan secara manual dengan memanggil API
sandbox_init_XXXdari fungsimainlayanan - Layanan yang masuk ke Service Sandbox umumnya tidak dikontainerisasi
- Perbedaan pentingnya adalah file yang dibuat di Service Sandbox secara default tidak diberi quarantine
- Jika API terkait quarantine tidak dipanggil secara manual, file yang dibuat tidak akan diberi quarantine
Jalur escape sandbox macOS yang sudah ada
-
Serangan LaunchService.framework
- Salah satu metode umum yang sudah ada adalah menyerang aplikasi non-sandbox melalui LaunchService.framework
- CVE-2021-30864 adalah contoh manipulasi variabel lingkungan
$HOMEterhadap Terminal.app, aplikasi sistem non-sandbox - Saat Terminal dijalankan, payload berbahaya di bawah
$HOME/.profileyang dapat dikendalikan dieksekusi tanpa pembatasan sandbox - Skenario lain adalah menjatuhkan aplikasi non-sandbox baru lalu menjalankannya
- Namun, aplikasi yang baru dijatuhkan oleh aplikasi sandbox akan diberi quarantine sehingga eksekusinya diblokir
- Jika file atau folder dapat dijatuhkan tanpa quarantine, App Sandbox dapat dilewati sepenuhnya
- CVE-2023-32364 adalah contoh yang memanfaatkan fakta bahwa devfs tidak mendukung atribut ekstensi untuk menjatuhkan folder tanpa quarantine
-
Serangan terhadap layanan Mach yang dapat diakses
- Metode umum kedua adalah menyerang layanan Mach yang tercantum dalam profil App Sandbox
- Informasi layanan Mach sistem disimpan di
/System/Library/xpc/launchd.plist - Dengan API
bootstrap_look_up, dapat diperiksa apakah layanan Mach tertentu dapat diakses dari aplikasi sandbox - Layanan Mach semacam ini berada di domain System atau domain User
- Titik awal riset ini adalah fakta bahwa layanan XPC yang dapat diakses dari App Sandbox tidak hanya ada di dua domain tersebut
Permukaan serangan baru: layanan XPC domain PID
- Layanan XPC yang terabaikan berada di domain PID
- Berbeda dari layanan XPC domain System/User yang selama ini lebih sering diperhatikan, tipe layanan ini adalah Application
- Layanan XPC tipe Application dijalankan saat diminta aplikasi, dan ikut berakhir ketika aplikasi peminta ditutup
- Layanan XPC di domain System/User hanya dapat diakses dari aplikasi sandbox jika didefinisikan di
application.sb - Semua layanan XPC yang dibutuhkan aplikasi dan framework terlihat di domain PID aplikasi tersebut
- Banyak layanan XPC di domain PID tidak mengantisipasi pemanggilan dari aplikasi sandbox, sehingga bisa saja tidak memiliki pemeriksaan entitlement atau pemeriksaan sandbox terhadap klien XPC yang masuk
-
Kasus SystemShoveService.xpc
SystemShoveService.xpcadalah bundel XPC di dalam framework privat sistemShoveService.framework- Tipe layanan di Info.plist adalah Application, dan bundle identifier-nya adalah
com.apple.installandsetup.shoveservice.system - Jika
/System/Library/PrivateFrameworks/ShoveService.frameworkdimuat dari aplikasi sandbox, layanan XPC terkait otomatis didaftarkan di domain PID SystemShoveService.xpctidak memeriksa klien XPC yang meminta, sehingga dapat disalahgunakan untuk escape App Sandbox- Layanan ini memiliki entitlement terkait SIP yang kuat bernama
com.apple.rootless.install, sehingga juga dapat terkait dengan bypass proteksi SIP - Kerentanan tersebut ditetapkan sebagai CVE-2022-26712, dan detailnya dirangkum dalam tulisan sebelumnya
-
Metode eksplorasi
- Semua layanan XPC dengan Service Type Application adalah target potensial untuk escape App Sandbox
- Layanan XPC dapat ditemukan dengan menginventarisasinya di framework sistem dan framework privat
/System/Library/Frameworks/System/Library/PrivateFrameworks
- Jika ada layanan XPC domain PID yang tidak memeriksa klien XPC yang masuk, serangan dapat dicoba dengan cara berikut
- Menjatuhkan folder aplikasi tanpa quarantine untuk memperoleh escape sandbox penuh
- Menjatuhkan file ZIP atau DMG yang berisi aplikasi non-sandbox tanpa quarantine
2 kerentanan khusus beta
-
Beta-No-CVE-1: Eksekusi perintah arbitrer di StorageKit
- Apple mencatat kerentanan ini di additional recognitions, tetapi tidak memberikan CVE
- Menurut Apple, CVE hanya diberikan untuk kerentanan perangkat lunak yang dirilis ke produksi, dan tidak diberikan untuk kerentanan perangkat lunak khusus beta
- Yang terdampak hanya versi Beta macOS Sonoma
- Jalur layanan XPC yang rentan adalah
/System/Library/PrivateFrameworks/StorageKit.framework/XPCServices/storagekitfsrunner.xpc - Layanan ini dapat berjalan tanpa batasan sandbox, dan pada metode delegate mengizinkan semua klien XPC
- Satu-satunya metode
runTask:arguments:withReply:dariSKRemoteTaskRunnerProtocoldirancang untuk menjalankan perintah arbitrer dengan jalur executable dan argumen yang ditentukan - Karena jalur executable dan argumen dapat dikendalikan oleh klien XPC sandbox, eksekusi perintah sistem arbitrer tanpa batasan sandbox menjadi mungkin
- Apple menghapus sepenuhnya layanan XPC yang rentan dari sistem operasi sebelum rilis resmi macOS Sonoma 14.0
-
Beta-No-CVE-2: Penyalahgunaan pembuatan ZIP di AudioAnalyticsHelperService
- Kerentanan ini juga tidak diberi CVE karena alasan khusus beta yang sama
- Jalur layanan XPC yang rentan adalah
/System/Library/PrivateFrameworks/AudioAnalyticsInternal.framework/XPCServices/AudioAnalyticsHelperService.xpc - Layanan dapat berjalan tanpa batasan sandbox dan mengizinkan semua klien XPC
- Metode
createZipAtPath:hourThreshold:withReply:mengompresi jalur arbitrer yang ditentukan klien XPC - Jika tidak ada folder
compresseddi jalur yang ditentukan, layanan membuatnya, mencari file.json, memindahkannya ke folder tersebut, lalu membuat file ZIP - Penyerang dapat mengganti folder
compresseddengan symlink untuk memindahkan file arbitrer ke lokasi arbitrer - Isi file sumber tidak diperiksa, dan jalur file tujuan harus memiliki sufiks
.json - Karena layanan tidak di-sandbox, file ZIP yang baru dibuat tidak dikenai quarantine
- Sebelum rilis macOS Sonoma 14.0, Apple menambal dengan memeriksa entitlement
com.apple.audioanalytics.helper.servicepada klien XPC yang masuk - Pada macOS terbaru, private
AudioAnalyticsInternal.frameworkdan layanan XPC terkait telah dihapus sepenuhnya
CVE-2023-27944: TrialArchivingService
- Layanan yang rentan adalah
/System/Library/PrivateFrameworks/TrialServer.framework/XPCServices/TrialArchivingService.xpc - Layanan ini masuk ke Service Sandbox dengan profil
/System/Library/Sandbox/Profiles/com.apple.trial.TrialArchivingService.sb - Karena merupakan Service Sandbox, file yang dijatuhkan tidak dikenai quarantine
- Layanan mengizinkan semua klien XPC yang masuk
- Metode
extractArchiveFromHandle:withArchiveName:toDirectory:destDirExtension:postExtractionCompression:completion:mengekstrak file arsip yang dikirim aplikasi sandbox ke lokasi yang ditentukan - Karena atribut extended quarantine tidak diteruskan ke konten yang diekstrak, hal ini dapat berujung pada penjatuhan file tanpa quarantine
-
Kondisi eksploitasi dan bypass
- Jika metode ini disalahgunakan, file Mach-O di dalam arsip kehilangan izin eksekusi setelah diekstrak sehingga tidak dapat langsung dijalankan
- Seperti teknik pada CVE-2021-30990, penggunaan symlink dapat menjadi cara bypass
- Namun metode XPC ini hanya mengekstrak direktori dan file biasa, serta tidak mengizinkan ekstraksi symlink dari arsip
- Salah satu metode bypass adalah mengekstrak aplikasi payload ke jalur container aplikasi sandbox
- Karena aplikasi sandbox memiliki izin baca-tulis pada jalur tersebut, ia dapat langsung membuat symlink atau memberikan izin eksekusi dengan
chmod - Metode lain adalah mengarsipkan aplikasi payload dua kali
- Mengekstrak ZIP luar dengan metode XPC yang rentan
- Mengekstrak ZIP dalam dengan perintah sistem
open
-
Patch
- Pada macOS Ventura 13.3, Apple menambal dengan memeriksa entitlement
com.apple.TrialArchivingService.internalpada klien XPC yang masuk - Jika tidak memiliki entitlement tersebut, koneksi XPC ditolak
- Pada macOS Ventura 13.3, Apple menambal dengan memeriksa entitlement
CVE-2023-32414: ArchiveService
- Layanan yang rentan adalah
/System/Library/PrivateFrameworks/DesktopServicesPriv.framework/XPCServices/ArchiveService.xpc - Layanan ini masuk ke Service Sandbox, tetapi file yang dijatuhkan tidak dikenai quarantine
- Layanan mengizinkan semua klien XPC
- Metode
unarchiveItemWithURLWrapper:…mengekstrak item yang dikirim aplikasi sandbox ke lokasi yang ditentukan - Karena atribut extended quarantine tidak diteruskan ke konten yang diekstrak, aplikasi sandbox dapat menjatuhkan file arbitrer tanpa quarantine
- Klien XPC sudah diimplementasikan dalam kelas Objective-C
DSArchiveServicedariDesktopServicesPriv.framework -
Patch
- Pada macOS Ventura 13.4, Apple menambal dengan memeriksa entitlement
com.apple.private.ArchiveService.XPCpada klien XPC yang masuk - Jika tidak memiliki entitlement tersebut, koneksi XPC ditolak
- Pada macOS Ventura 13.4, Apple menambal dengan memeriksa entitlement
CVE-2023-32404: ShortcutsFileAccessHelper
- Layanan yang rentan adalah
/System/Library/PrivateFrameworks/WorkflowKit.framework/XPCServices/ShortcutsFileAccessHelper.xpc - Layanan ini dapat berjalan tanpa batasan sandbox sehingga dapat disalahgunakan untuk keluar dari App Sandbox
- Code signing-nya juga menyertakan entitlement TCC khusus untuk Full Disk Access
- Karena itu, kerentanan ini juga dapat disalahgunakan untuk sepenuhnya mem-bypass perlindungan TCC
- Layanan mengizinkan semua klien XPC
- Satu-satunya metode
extendAccessToURL:completion:dariWFFileAccessHelperProtocoldirancang untuk memberikan izin baca-tulis atas URL arbitrer kepada klien XPC- Secara internal, metode ini memanggil API
sandbox_extension_issue_fileuntuk menerbitkan token akses file - URL arbitrer ditentukan oleh klien XPC sandbox
- Secara internal, metode ini memanggil API
-
Patch
- Pada macOS Ventura 13.4, Apple menambal dengan memeriksa entitlement
com.apple.shortcuts.file-access-helperpada klien XPC yang masuk - Jika tidak memiliki entitlement tersebut, koneksi XPC ditolak
- Pada macOS Ventura 13.4, Apple menambal dengan memeriksa entitlement
CVE-2023-41077: mscamerad-xpc dan bypass patch berulang
- Layanan yang rentan adalah
/System/Library/Frameworks/ImageCaptureCore.framework/XPCServices/mscamerad-xpc.xpc - Layanan ini dapat berjalan tanpa pembatasan sandbox, sehingga dapat dieksploitasi untuk keluar dari App Sandbox
- Code signing-nya memiliki entitlement TCC khusus yang memungkinkan akses ke Photos dan Removable Volumes tanpa prompt pengguna
- Karena itu, perlindungan TCC tersebut juga dapat dibypass
-
Alur kerentanan
- Nama layanan default adalah
com.apple.mscamerad-xpc - Layanan menerima semua klien XPC
openDevice:withReply:padaICXPCDeviceManagerProtocolmembuka dan mengonfigurasiMSCameraDevicebaru- Saat inisialisasi perangkat baru, layanan XPC anonim lain dibuka untuk menyediakan routine layanan bagi perangkat kamera
- Layanan XPC anonim tersebut juga menerima semua klien XPC
- Metode
requestReadDataFromObjectHandle:options:withReply:padaICCameraDeviceProtocolmembaca isi item file yang diminta dan mengembalikannya ke klien XPC - Jalur file yang diminta dapat dikendalikan oleh klien XPC, sehingga aplikasi sandbox dapat membaca file arbitrer di luar container
- Karena entitlement TCC yang kuat pada layanan, Photos pengguna juga dapat dibaca tanpa prompt pengguna
- Nama layanan default adalah
-
Konfigurasi perangkat kamera palsu
MSCameraDevicedapat diemulasi dengan membuat dan memasang file DMG- Jika jalur file di dalam volume DMG cocok dengan regex tertentu, item file akan diindeks sebagai
ICCameraFile - Contoh nama folder:
123abcde,DCIM,dcIm - Contoh nama file:
abcd1234.mp3,1234E5678.HEIC - Aplikasi sandbox dapat memicu masalah ini dengan menaruh file DMG lalu membukanya agar ter-mount
- Klien XPC sudah diimplementasikan di framework
ImageCaptureCore
-
Patch dan bypass
- Apple menambahkan pemeriksaan baru pada
acceptConnection:di macOS Sonoma 14 - Klien diizinkan jika memiliki private entitlement
com.apple.private.imagecapturecore.authorization_bypass - Atau klien diizinkan jika merupakan platform binary
- Syarat platform binary dapat dibypass karena dynamic library bisa diinjeksi ke binary bertanda tangan Apple
- Memilih binary bertanda tangan Apple tanpa entitlement,
/bin/ls - Menginjeksi dylib berisi kode exploit lama melalui variabel lingkungan
DYLD_INSERT_LIBRARIES - Setelah itu berkomunikasi dengan layanan XPC seperti sebelumnya
- Memilih binary bertanda tangan Apple tanpa entitlement,
- Apple menetapkan CVE-2024-23253 untuk laporan bypass ini
- Pada macOS 14.4, syarat kedua diperkuat: klien XPC tidak hanya harus berupa platform binary, tetapi juga harus ditandatangani dengan flag
CS_REQUIRE_LVatauCS_FORCED_LV - Patch ini juga dapat dibypass
- Menginjeksi dylib ke
/bin/ls - Menyetel flag yang diperlukan secara manual saat runtime dengan API
csops - Setelah itu lolos pemeriksaan layanan XPC
- Menginjeksi dylib ke
- Apple menetapkan CVE-2024-40831 untuk bypass kedua ini
- Pada macOS Sequoia 15, patch kembali diubah sehingga hanya klien XPC yang memiliki private entitlement
com.apple.private.imagecapturecore.authorization_bypassyang diizinkan
- Apple menambahkan pemeriksaan baru pada
CVE-2023-42961: intents_helper
- Kerentanan ini juga dapat dieksploitasi di iOS
- Layanan yang rentan adalah
/System/Library/Frameworks/Intents.framework/XPCServices/intents_helper.xpc - Layanan dapat berjalan tanpa pembatasan sandbox dan menerima semua klien XPC
- Karena path traversal pada fungsi
filePathForImageWithFileName, akses ke jalur arbitrer menjadi mungkin - Parameter
fileNameadalah string arbitrer yang dapat dikendalikan oleh klien XPC -
Metode terdampak
- Fungsi rentan dapat dijangkau dari dua metode XPC
retrieveImageWithIdentifier:completion:dapat dieksploitasi untuk membaca file arbitrer dengan ekstensi.png- Data yang dibaca disimpan dalam variabel anggota instance
INImagedan dikembalikan ke klien XPC purgeImageWithIdentifier:completion:dapat dieksploitasi untuk menghapus jalur file arbitrer
-
Patch
- Apple menambal masalah ini di macOS Sonoma 14.0 dengan menormalisasi string input dari klien XPC
- Karakter khusus yang digunakan untuk path traversal dipotong
CVE-2024-27864: diskimagescontroller
- Entri CVE ini masih menunggu publikasi pada saat artikel ditulis
- Layanan yang rentan adalah
/System/Library/PrivateFrameworks/DiskImages2.framework/XPCServices/diskimagescontroller.xpc - Layanan ini memiliki entitlement
com.apple.diskimages.creator-ucpada code signing-nya, sehingga dapat melakukan operasi yang kuat - Entitlement tersebut memiliki dua fungsi utama
- Berkomunikasi dengan
/usr/libexec/diskimagesiod, yang memiliki FDA entitlement dan melakukan operasi attach sebenarnya - Terhubung ke layanan IOKit
AppleDiskImagesControlleruntuk membuat perangkat bagi file DMG dan menangani quarantine
- Berkomunikasi dengan
-
Penyebab kerentanan
- Layanan menerima semua klien XPC
- Metode
attachWithParams:reply:padaDIControllerProtocolmenjadi titik serangan - Secara internal ia memanggil
checkAttachEntitlementWithError, tetapi berbeda dari namanya, fungsi ini selalu mengembalikan TRUE - Di
DiskImages2.framework, klien XPC sudah diimplementasikan sebagai kelas Objective-CDIAttachParams - Kode klien framework memeriksa apakah URL input berada dalam status quarantine
- Jika URL input berada dalam status quarantine, parameter quarantine disetel sebelum attach, dan parameter ini memberi tahu layanan XPC untuk menerapkan quarantine pada perangkat target
- Dengan membuat klien XPC sendiri, penyerang dapat melewati penyetelan parameter quarantine dan memanggil
attachWithParams:reply:secara langsung - Akibatnya, file DMG yang di-quarantine dapat di-attach tanpa menerapkan quarantine pada perangkat yang sesuai
-
Patch
- Apple memindahkan logika validasi dari sisi klien ke sisi server di macOS Sonoma 14.4
- Jika jalur file input berada dalam status quarantine, server menerapkan quarantine secara langsung pada perangkat yang sesuai
CVE-2023-42977: PerfPowerServicesSignpostReader
- Layanan yang rentan adalah
/System/Library/PrivateFrameworks/PowerlogCore.framework/XPCServices/PerfPowerServicesSignpostReader.xpc - Layanan ini dapat berjalan tanpa pembatasan sandbox dan mengizinkan semua klien XPC
XPCSignpostReaderProtocolmemiliki 6 metode, tetapi Apple hanya mengimplementasikansubmitSignpostDataWithConfig:withReply:, sementara 5 lainnya berupa implementasi kosong- Logika inti metode ini adalah mengumpulkan data log dan mengarsipkannya sebagai file gzip
- Jalur
powerlogdapat dibajak ke jalur arbitrer melalui stringtagUUIDyang dikendalikan klien XPC -
Penghapusan jalur arbitrer
- Di dalam fungsi,
archiveDirectoryAt:deleteOriginal:dipanggil untuk menghapus jalurpowerlog - Jika string path traversal dimasukkan ke
TagUUID, primitive penghapusan jalur arbitrer dapat diperoleh
- Di dalam fungsi,
-
Pembuatan direktori arbitrer dan pelolosan sandbox penuh
- Fungsi
createSignpostFile:membuat direktori di jalurpowerlog - Dengan ini, direktori arbitrer tanpa atribut diperluas quarantine dapat dibuat
- Primitive pembuatan direktori arbitrer tanpa quarantine dapat berujung pada pelolosan sandbox penuh
- Artikel ini menggunakan teknik dari CVE-2023-32364
- Membuat folder
.apptanpa quarantine - Membuat symlink
/bin/bashdi bawahContents/MacOS - Mengatur
BASH_ENVdiLSEnvironment - Menjalankannya dengan
open ./poc.app
- Membuat folder
- Fungsi
-
Patch
- Apple menambalnya di macOS Sonoma 14.0 agar string UUID dari klien XPC dinormalisasi
- Jika string input bukan UUID yang valid, fungsi akan keluar
Pola berulang
- Permukaan serangan utama bukan layanan XPC di domain System atau User, melainkan layanan XPC domain PID di dalam framework sistem dan private
- Layanan XPC dengan Service Type Application dapat didaftarkan ke domain PID aplikasi sandbox hanya dengan memuat framework
- Banyak layanan yang rentan tidak mengantisipasi pemanggilan dari klien sandbox, sehingga melewatkan pemeriksaan berikut
- Pemeriksaan entitlement klien XPC
- Pemeriksaan apakah klien berada dalam sandbox
- Normalisasi jalur input
- Verifikasi status quarantine di sisi server
- Kondisi yang berulang kali dieksploitasi adalah sebagai berikut
- Drop file/folder tanpa quarantine dapat berujung pada pelolosan sandbox penuh
- Jika atribut diperluas quarantine hilang saat ekstraksi arsip, hal itu dapat berujung pada bypass Gatekeeper dan pelolosan sandbox
- File yang dibuat oleh Service Sandbox secara default tidak diberi quarantine
- Masih ada 5 laporan yang menunggu patch
Komentar tambahan tentang App Sandbox dan Service Sandbox
- Untuk satu laporan, Apple menilai ini sebagai expected behavior karena aplikasi yang baru dijalankan tidak berada dalam konteks proses saat ini dan tidak dapat berbagi entitlement atau izin proses saat ini
- Di App Sandbox, file yang didrop secara default diberi quarantine
- Di Service Sandbox, file yang didrop secara default tidak diberi quarantine
- Disimpulkan bahwa fakta bahwa proses yang baru dijalankan tidak berada dalam konteks eksekusi layanan saat ini dan tidak berbagi entitlement atau privilege layanan tersebut bukanlah flaw
- Sebaliknya, fakta bahwa penyerang dapat memperoleh RCE dalam konteks layanan yang dibatasi sandbox, lalu mendrop dan menjalankan aplikasi baru non-sandbox untuk keluar dari pembatasan sandbox layanan target, dapat dianggap sebagai flaw
- Sebagai contoh disebutkan IMTranscoderAgent, yang menjadi target exploit 0-click milik NSO Group
com.apple.WebDriver.HTTPService.xpcmuncul sebagai contoh yang memanggil APIWBSEnableSandboxStyleFileQuarantinesecara manual- Keluar dari App Sandbox ke Service Sandbox di macOS pada dasarnya disimpulkan sama dengan menuju Non Sandbox
1 komentar
Komentar Hacker News
Respons dengan menambal layanan XPC satu per satu di sini terasa agak aneh
Ini terlihat seperti masalah desain pada sandbox itu sendiri, dan saya bertanya-tanya mengapa begitu banyak layanan XPC yang tampaknya untuk penggunaan internal aplikasi bisa diakses dari aplikasi sandbox
Di sisi Windows juga ada banyak mekanisme serupa seperti sandbox WinRT, sandbox aplikasi Win32, secure kernel, perlindungan driver, dan sebagainya, tetapi jika ingin menjalankan satu berkas executable di berbagai konfigurasi, akan muncul celah kompatibilitas mundur
Sistem operasi mobile jauh lebih mudah karena tidak memiliki kompatibilitas mundur dan bisa membatasi model eksekusi dengan ketat
MacOS seharusnya punya sesuatu seperti container Darwin berbasis capability, bukan pendekatan yang terlihat seperti tumpukan besar daftar blokir
https://news.ycombinator.com/item?id=37655477
Tidak ada model keamanan yang bekerja dengan baik di desktop
Seperti komentar lain, iOS bisa menyediakan model keamanan yang masuk akal karena tidak punya sisa-sisa lama
Sebaliknya, ketika Telegram meminta berbagi seluruh kontak dan foto, orang-orang benar-benar mengizinkannya
Kerja yang bagus
Namun saya ragu apakah arsitektur seperti ini adalah arah yang benar. Setiap kali membuat framework keamanan untuk mencegah suatu serangan, rasanya jenis masalah yang sama sekali baru muncul, dan pada akhirnya tidak terasa lebih aman
Strukturnya seperti hukum pajak Belanda, dengan tambalan untuk mencegah penyalahgunaan yang terus menumpuk, dan mungkin sudah memperoleh kesadaran sendiri
Pendekatan yang benar biasanya gagal di pasar karena kompatibilitas mundur atau karena developer menolak mengadopsi fiturnya. Sandbox WinRT adalah contohnya
Keamanan ponsel lebih mudah karena tidak perlu memikirkan kompatibilitas mundur, dan sejauh ini berkat gatekeeping app store, developer yang ingin ikut serta tidak punya pilihan selain mengikuti aturan
Semua sistem operasi yang berjalan saat ini harus dibuat ulang dari awal agar aman sampai abad berikutnya, dan dalam prosesnya banyak kode harus dibuang. Itulah biaya yang harus dibayar
Bisa diduga ada kekuatan besar yang ingin menyisipkan lebih banyak kerentanan ke komputasi konsumen
Contoh terkenal masing-masing adalah sebagai berikut
https://en.wikipedia.org/wiki/Dutch_Sandwich
https://en.wikipedia.org/wiki/Intel_Management_Engine#Assert...
MacOS, yaitu NeXTstep, sejak awal dibuat sebagai sistem operasi yang terbuka dan sangat dapat diperluas
Ada tak terhitung banyaknya cara untuk menambahkan ekstensi atau hook pihak ketiga, dan software bisa diakses dari berbagai runtime, sehingga pada masa itu fakta bahwa semua ini bekerja bersama dengan mulus sudah merupakan pencapaian teknis yang mengesankan
Java, Mac klasik, X11, dan basis kode NeXTstep berjalan bersama tanpa masalah berkat berbagai titik masuk ekstensi di kernel
Selain itu, platform ini juga memiliki API yang memungkinkan aplikasi saling berkomunikasi tanpa masalah
Namun Apple sedikit demi sedikit mundur dari filosofi itu dan terus menutup sistemnya. Ini perjalanan yang cukup menarik
SBPL (sandbox profile language) menarik. Detailnya ada di sini: https://github.com/0xbf00/simbple
Saya penasaran apakah ada interpreter Scheme di suatu tempat di dalam macOS yang memproses ini
P.S.: Sepertinya yang melakukan pekerjaan ini adalah
sandbox-exec. Referensi: https://reverse.put.as/wp-content/uploads/2011/09/Apple-Sand...Temuan yang mengesankan. Seperti yang juga diisyaratkan dalam tulisan itu, tampaknya sangat besar kemungkinan cacat serupa masih tersisa di alam liar
Jika Apple tidak mendesain ulang pendekatannya untuk memperkuat layanan semacam ini, sepertinya CVE terkait XPC akan terus bermunculan
Saya suka sekaligus benci sandbox
Ini lapisan pertahanan kedua yang sangat baik, tetapi organisasi besar cenderung menolak memperbaiki kerentanan eksekusi kode jarak jauh jika kerentanan itu tidak bisa keluar dari sandbox dan melakukan sesuatu yang berarti. Akibatnya sandbox dipakai seperti garis pertahanan utama, dan itu menyedihkan
Setahu saya Apple, Microsoft, dan Google semuanya punya bug bounty, dan meskipun sandbox escape mendapat imbalan lebih besar, kerentanan yang tertahan oleh sandbox pun tetap diberi imbalan
Semua orang tahu betul bahwa penyerang mengumpulkan kerentanan eksekusi kode jarak jauh yang saat ini tidak bisa dipakai, lalu menggabungkannya ketika sandbox escape ditemukan
Sedikit keluar dari topik, tetapi kalau ada pakar sandbox yang tahu strategi untuk melewati batas maximum "pattern serialization length", isu ini sudah cukup lama bikin pusing: https://github.com/NixOS/nix/issues/4119
Sayangnya,
sandbox-exechampir tidak terdokumentasi, dan ada kabar bahwa itu akan dihentikan, jadi menyelesaikannya cukup bikin sakit kepalaDi macOS, bypass muncul tanpa henti. Sebab sistem operasi ini sejak awal memang tidak pernah dirancang untuk izin yang terperinci seperti ini
Itu tidak bisa begitu saja ditambahkan belakangan di atas teknologi Mac OS lawas dan NeXTSTEP
Saya bukan peneliti keamanan, hanya pengembang aplikasi lama, tetapi saya sendiri menemukan beberapa bypass. Bisa dibilang saya tahu di mana mayat-mayatnya dikubur
Namun pada akhirnya saya menyerah mencarinya. Sistem pelaporan kerentanan keamanan Apple benar-benar berantakan, dan mereka tampak hanya tertarik membungkam orang selama mungkin. Buang-buang waktu
Secara keseluruhan, macOS terasa menjadi korban teater keamanan. Pengguna dan pengembang sah sama-sama dirugikan oleh software yang dilemahkan dan permintaan izin yang tak ada habisnya, sementara penyerang sungguhan bisa dengan mudah melewatinya kapan pun mereka mau. Mirip parodi Windows Vista lama dari Apple
Bahwa perusahaan ingin waktu sebanyak mungkin untuk memperbaiki bug juga merupakan bagian dari permainan. Apakah kita benar-benar ingin perusahaan lain memublikasikan kerentanan yang ditemukan secepat mungkin? Karena kita tidak bisa mengendalikan seberapa cepat pengguna akan melakukan upgrade, menunda publikasi selalu lebih baik bagi pengguna akhir, dan itu harus diprioritaskan dibanding keinginan peneliti untuk mendapat publisitas
Arsitektur sandbox Apple biasanya terlihat cukup dirancang dengan baik. Dalam kasus ini, tampaknya ada masalah di suatu tempat pada arsitektur atau komunikasinya
Keberadaan bypass juga karena kita menuntut terlalu banyak fungsi dari sistem operasi desktop. Sistem operasi desktop bisa dibilang jauh lebih canggih dan kompleks daripada platform server. Alasan yang sama juga membuat browser web memiliki banyak CVE. Karena kita menginginkan keamanan sekaligus fitur, titik tengah tempat keduanya bertabrakan pasti akan muncul
Penguatan software dan hardware macOS secara bertahap selama 20 tahun terakhir adalah buktinya
Bagi sebagian besar pengguna akhir, prosesnya cukup bertahap sampai hampir tidak terasa, tetapi para pengembang macOS sangat menyadari isu-isu terkait keamanan yang harus mereka tangani, baik pada pembaruan besar maupun kecil. Contohnya sebagai berikut
https://eclecticlight.co/2024/08/…
https://eclecticlight.co/2024/08/…
https://eclecticlight.co/2024/08/…
https://eclecticlight.co/2024/09/…
Ada sistem berbasis capability, tetapi tidak ada yang benar-benar digunakan secara luas
Saya juga tidak yakin apa solusinya. Namun upaya menambahkan keamanan tetap tampak lebih baik daripada tidak melakukan apa-apa sehingga satu kerentanan aplikasi langsung berujung pada pengambilalihan seluruh akun pengguna
XPC service yang terlewat di domain pid adalah cara cerdik untuk melewati pembatasan sandbox macOS
Trik injeksi
dylduntuk menghindari pemeriksaan izin juga mulusPatch Apple di sini terasa seperti solusi sementara, dan mungkin mereka perlu benar-benar membenahi cara kerja pewarisan sandbox