Memperluas kernel dengan aman di macOS
Dimulai dari macOS 11, jika diaktifkan, ekstensi kernel (kext) pihak ketiga tidak dapat dimuat ke kernel sesuai permintaan. Sebaliknya, ekstensi digabungkan ke Kumpulan Kernel Pembantu (AuxKC) yang dimuat selama proses boot. Untuk Mac dengan Apple silicon, pengukuran AuxKC ditandatangani ke LocalPolicy (untuk perangkat keras sebelumnya, AuxKC berada di volume data). Membuat ulang AuxKC memerlukan persetujuan pengguna dan pemulaian ulang macOS untuk memuat perubahan ke kernel, dan boot aman perlu dikonfigurasikan ke Keamanan Dikurangi.
Penting: Kext tidak lagi dianjurkan untuk macOS. Kext membahayakan integritas dan keterandalan sistem operasi, dan Apple menganjurkan pengguna untuk memilih solusi yang tidak memerlukan perluasan kernel.
Ekstensi kernel di Mac dengan Apple silicon
Kext harus diaktifkan secara eksplisit untuk Mac dengan Apple silicon dengan menahan tombol daya saat mulai untuk masuk ke mode One True Recovery (1TR), lalu menurunkan ke Keamanan Dikurangi dan mencentang kotak untuk mengaktifkan ekstensi kernel. Tindakan ini juga memerlukan kata sandi administrator untuk mengesahkan penurunan. Gabungan 1TR dan persyaratan kata sandi mempersulit penyerang yang hanya memanfaatkan perangkat lunak yang memulai dari dalam macOS untuk memasukkan kext ke macOS, yang nantinya dapat mereka eksploitasi untuk memperoleh hak kernel.
Setelah pengguna mengesahkan kext untuk dimuat, alur Pemuatan Ekstensi Kernel yang Disetujui Pengguna digunakan untuk mengesahkan penginstalan kext. Pengesahan yang digunakan untuk alur di atas juga digunakan untuk menangkap hash SHA384 dari daftar kext yang disahkan pengguna (UAKL) di LocalPolicy. Daemon manajemen kernel (kmd
) lalu bertanggung jawab untuk memvalidasi hanya kext tersebut yang ditemukan di UAKL untuk penyertaan ke AuxKC.
Jika Perlindungan Integritas Sistem (SIP) diaktifkan, tanda tangan setiap kext diverifikasi sebelum disertakan di AuxKC.
Jika SIP dinonaktifkan, tanda tangan kext tidak akan diberlakukan.
Pendekatan ini memungkinkan alur Keamanan Permisif untuk pengembang atau pelanggan yang bukan bagian dari Apple Developer Program untuk menguji kext sebelum ditandatangani.
Setelah AuxKC dibuat, pengukurannya dikirimkan ke Secure Enclave untuk ditandatangani dan disertakan di struktur data Image4 yang dapat dievaluasi oleh iBoot saat mulai. Sebagai bagian dari konstruksi AuxKC, tanda terima kext juga dibuat. Tanda terima ini berisi daftar kext yang benar-benar disertakan di AuxKC, karena kumpulan dapat berupa subset UAKL jika kext yang dilarang ditemui. Hash SHA384 dari struktur data Image4 AuxKC dan tanda terima kext disertakan di LocalPolicy. Hash Image4 AuxKC digunakan untuk verifikasi tambahan oleh iBoot saat mulai untuk membantu memastikan bahwa file Image4 AuxKC yang ditandatangani oleh Secure Enclave versi lama tidak dapat dimulai dengan LocalPolicy yang lebih baru. Tanda terima kext digunakan oleh subsistem seperti Apple Pay untuk menentukan apakah terdapat kext yang saat ini dimuat yang dapat mengganggu kepercayaan macOS. Jika ada, kemampuan Apple Pay dapat dinonaktifkan.
Ekstensi sistem
macOS 10.15 memungkinkan pengembang untuk memperluas kemampuan macOS dengan menginstal dan mengelola ekstensi sistem yang dijalankan di ruang pengguna alih-alih di level kernel. Dengan menjalankan di ruang pengguna, ekstensi sistem meningkatkan stabilitas dan keamanan macOS. Meskipun kext telah dilengkapi dengan akses penuh terhadap seluruh sistem operasi, ekstensi yang dijalankan di ruang pengguna hanya diberi hak yang diperlukan untuk menjalankan fungsi yang ditetapkannya.
Pengembang dapat menggunakan kerangka yang meliputi DriverKit, EndpointSecurity, dan NetworkExtension untuk menulisi driver USB dan antarmuka manusia, alat keamanan titik ujung (seperti pencegahan data hilang atau agen titik ujung lain), dan alat VPN serta jaringan, semuanya tanpa perlu menulisi kext. Agen keamanan pihak ketiga hanya boleh digunakan jika memanfaatkan API ini atau memiliki langkah-langkah yang lengkap untuk bertransisi ke dan dari ekstensi kernel.
Pemuatan Ekstensi Kernel yang Disetujui Pengguna
Untuk meningkatkan keamanan, persetujuan pengguna diperlukan untuk memuat ekstensi kernel yang diinstal dengan atau setelah menginstal macOS 10.13. Proses ini disebut sebagai Pemuatan Ekstensi Kernel yang Disetujui Pengguna. Pengesahan administrator diperlukan untuk menyetujui ekstensi kernel. Ekstensi kernel tidak memerlukan pengesahan jika:
Diinstal di Mac saat menjalankan macOS 10.12 atau lebih lama
Mengganti ekstensi yang disetujui sebelumnya
Diizinkan untuk memuat tanpa persetujuan pengguna dengan menggunakan alat baris perintah
spctl
yang tersedia saat Mac di-boot dari recoveryOSDiizinkan untuk memuat menggunakan konfigurasi mobile device management (MDM)
Mulai dari macOS 10.13.2, pengguna dapat menggunakan MDM untuk menetapkan daftar ekstensi kernel yang memuat tanpa persetujuan pengguna. Pilihan ini memerlukan Mac yang menjalankan macOS 10.13.2 yang terdaftar di MDM—melalui Apple School Manager, Apple Business Manager, atau pendaftaran MDM yang dilakukan oleh pengguna.