Integritas sistem operasi
Apple merancang sistem operasinya dengan keamanan di dalamnya. Rancangan ini disertai dengan dasar kepercayaan perangkat keras—untuk memungkinkan boot aman—serta proses pembaruan perangkat lunak aman yang cepat dan aman. Sistem operasi Apple juga menggunakan kemampuan perangkat keras berbasis silicon dengan fungsi khususnya untuk membantu mencegah eksploitasi saat sistem berjalan. Fitur runtime ini melindungi integritas kode tepercaya saat sedang dieksekusi. Dengan kata lain, perangkat lunak sistem operasi Apple membantu memitigasi serangan dan teknik eksploitasi yang berasal dari app berbahaya, web, atau melalui saluran lainnya. Perlindungan yang tercantum di sini tersedia di perangkat dengan SoC rancangan Apple yang didukung, termasuk iOS, iPadOS, tvOS, watchOS, dan kini macOS di Mac dengan Apple silicon.
Fitur | A10 | A11, S3 | A12, A13, A14 S4–S9 | A15, A16, A17 | M1, M2, M3 |
Lihat Catatan 1 di bawah. | |||||
Lihat Catatan 2 di bawah. |
Catatan 1: Lapisan Perlindungan Halaman (PPL) mengharuskan platform untuk hanya mengeksekusi kode yang ditandatangani dan tepercaya; ini adalah model keamanan yang tidak berlaku bagi macOS.
Catatan 2: Pengawasan Tabel Halaman Aman (SPTM) didukung di A15, A16, serta A17 dan menggantikan Lapisan Perlindungan Halaman di platform yang didukung.
Perlindungan Integritas Kernel
Setelah kernel sistem operasi menyelesaikan inisialisasi, Perlindungan Integritas Kernel (KIP) diaktifkan untuk membantu mencegah modifikasi kernel dan kode driver. Pengontrol memori menyediakan bidang memori fisik terlindungi yang digunakan iBoot untuk memutar kernel dan ekstensi kernel. Setelah proses mulai selesai, pengontrol memori akan menolak penulisan pada bidang memori fisik terlindungi. Unit Manajemen Memori (MMU) Prosesor Aplikasi dikonfigurasi untuk membantu mencegah pemetaan kode istimewa dari memori fisik di luar bidang memori terlindungi dan untuk membantu mencegah pemetaan yang dapat ditulisi terhadap memori fisik di dalam bidang memori kernel.
Untuk mencegah konfigurasi ulang, perangkat keras yang digunakan untuk mengaktifkan KIP akan dikunci setelah proses boot selesai.
Pembatasan Izin Cepat
Dimulai dari SoC A11 Bionic dan S3 Apple, primitif perangkat keras baru diperkenalkan. Primitif ini, Pembatasan Izin Cepat, menyertakan register CPU untuk membatasi izin dengan cepat per ulir. Dengan Pembatasan Izin Cepat (juga dikenal sebagai register APRR), sistem operasi yang didukung dapat menghapus izin eksekusi dengan cepat dari memori tanpa dibebankan dengan panggilan sistem dan proses walk atau flush tabel halaman. Register ini menyediakan satu level mitigasi tambahan untuk serangan dari web, khususnya untuk kode yang disusun saat runtime (disusun secara langsung)—karena memori tidak dapat dieksekusi dengan efektif saat sedang dibaca dan ditulisi.
Perlindungan Integritas Koprosesor Sistem
Firmware koprosesor menangani sebagian besar tugas sistem penting—misalnya, Secure Enclave, prosesor sensor gambar, dan koprosesor motion. Maka dari itu, keamanannya adalah bagian utama dari keamanan keseluruhan sistem. Untuk mencegah modifikasi firmware koprosesor, Apple menggunakan mekanisme yang disebut Perlindungan Integritas Koprosesor Sistem (SCIP).
SCIP berfungsi seperti Perlindungan Integritas Kernel (KIP): Pada saat boot, iBoot memuat firmware setiap koprosesor ke bidang memori terlindungi, salah satunya yang disimpan dan dipisahkan dari bidang KIP. iBoot mengonfigurasi setiap unit memori koprosesor untuk membantu mencegah:
Pemetaan yang dapat dieksekusi di luar bagian bidang memori terlindunginya
Pemetaan yang dapat ditulisi di dalam bagian bidang memori terlindunginya
Pada saat boot, untuk mengonfigurasi SCIP Secure Enclave, sistem Operasi Secure Enclave digunakan. Setelah proses boot selesai, perangkat keras yang digunakan untuk mengaktifkan SCIP dikunci. Ini dirancang untuk mencegah konfigurasi ulang.
Kode Pengesahan Penunjuk
Kode Pengesahan Penunjuk (PAC) digunakan sebagai perlindungan terhadap eksploitasi bug kerusakan memori. Perangkat lunak sistem dan app internal menggunakan PAC untuk membantu mencegah modifikasi penunjuk fungsi dan alamat balik (penunjuk kode). PAC menggunakan lima nilai rahasia 128 bit untuk menandatangani instruksi dan data kernel, serta setiap proses ruang pengguna memiliki kunci B-nya sendiri. Item diberi salt dan ditandatangani sebagaimana yang ditunjukkan di bawah.
Item | Kunci | Salt |
---|---|---|
Alamat Balik Fungsi | IB | Alamat penyimpanan |
Penunjuk Fungsi | IA | 0 |
Fungsi Pengaktifan Blok | IA | Alamat penyimpanan |
Cache Metode Objective-C | IB | Alamat penyimpanan + Kelas + Pemilih |
Entri Tabel V C++ | IA | Alamat penyimpanan + Hash (nama metode yang rusak) |
Label Goto yang Dihitung | IA | Hash (nama fungsi) |
Status Ulir Kernel | GA | • |
Register Status Ulir Pengguna | IA | Alamat penyimpanan |
Penunjuk Tabel V C++ | DA | 0 |
Nilai tanda tangan disimpan di bit penambalan yang tidak digunakan di bagian atas penunjuk 64 bit. Tanda tangan diverifikasi sebelum digunakan, dan penambalan dipulihkan untuk membantu memastikan bahwa alamat penunjuk berfungsi. Kegagalan verifikasi akan mengakibatkan pembatalan. Verifikasi ini meningkatkan kesulitan banyak serangan, seperti serangan pemrograman berorientasi balik (ROP), yang mencoba untuk menipu perangkat agar dengan berbahaya menjalankan kode yang ada dengan memanipulasi alamat balik fungsi yang tersimpan di tumpukan.
Lapisan Perlindungan Halaman
Lapisan Perlindungan Halaman (PPL) di iOS, iPadOS, dan watchOS dirancang untuk mencegah kode ruang pengguna agar tidak dimodifikasi setelah verifikasi tanda tangan kode selesai. Berdasarkan di Perlindungan Integritas Kernel dan Pembatasan Izin Cepat, PPL mengelola penimpaan izin tabel halaman untuk memastikan bahwa hanya PPL yang dapat mengubah halaman terlindungi yang berisi kode pengguna dan tabel halaman. Sistem menyediakan pengurangan permukaan serangan dalam jumlah besar dengan mendukung penguatan integritas kode di seluruh sistem, meskipun dengan kernel yang telah disusupi. Perlindungan ini tidak ditawarkan di macOS karena PPL hanya berlaku di sistem tempat semua kode yang dieksekusi harus ditandatangani.
Pengawasan Tabel Halaman Aman dan Pengawasan Eksekusi Tepercaya
Pengawasan Tabel Halaman Aman (SPTM) dan Pengawasan Eksekusi Tepercaya (TXM) dirancang untuk digunakan bersama untuk membantu melindungi tabel halaman bagi pengguna dan proses kernel terhadap modifikasi, bahkan saat penyerang memiliki kemampuan untuk menulisi kernel dan dapat melewati perlindungan alur kontrol. SPTM melakukan ini dengan menggunakan level hak yang lebih tinggi dibandingkan kernel, dan menggunakan TXM dengan hak yang lebih rendah untuk memberlakukan kebijakan yang mengatur eksekusi kode. Sistem ini dirancang sedemikian rupa agar peretasan TXM tidak secara otomatis dianggap sebagai pelewatan SPTM karena pemisahan hak ini dan pengaturan kepercayaan di antara keduanya. Di SOC A15, A16, dan A17, SPTM (yang digabungkan dengan TXM) menggantikan PPL, yang menyediakan permukaan serangan lebih kecil yang tidak mengandalkan kepercayaan kernel, bahkan saat boot yang lebih awal. SPTM juga mengandalkan primitif silikon baru, yang merupakan evolusi dari Pembatasan Izin Cepat yang digunakan PPL.