
Integritas sistem operasi
Apple mendesain perangkat lunak sistem operasinya dengan mengutamakan keamanan. Desain ini mencakup dasar kepercayaan perangkat keras yang memungkinkan boot aman dan proses pembaruan perangkat lunak yang cepat dan aman. Sistem operasi Apple juga menggunakan kemampuan perangkat keras berbasis silikon dengan fungsi khususnya untuk membantu mencegah eksploitasi saat sistem operasi berjalan. Fitur runtime ini melindungi integritas kode tepercaya saat dieksekusi. Perangkat lunak sistem operasi Apple membantu memitigasi serangan dan teknik eksploitasi yang berasal dari app berbahaya, web, atau melalui saluran lainnya. Perlindungan ini tersedia di perangkat dengan SoC rancangan Apple yang didukung, termasuk iOS, iPadOS, macOS pada Mac dengan Apple silicon, tvOS, visionOS, dan watchOS.
Fitur | A10 | A11, S3 | A12-A14 S4-S10 | A15-A18 | M1 | M2-M4 | A19 M5 |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
1 |
2 |
|
| |
|
|
|
|
|
2 |
2 | |
Pemberlakuan Integritas Memori dengan Ekstensi Pelabelan Memori yang Ditingkatkan |
|
|
|
|
|
|
|
1: Pengawasan Tabel Halaman Aman (SPTM) didukung di A15 atau lebih baru serta M2 atau SOC yang lebih baru dan menggantikan Lapisan Perlindungan Halaman di platform yang didukung.
2: Lapisan Perlindungan Halaman (PPL) dan Pengawasan Tabel Halaman Aman (SPTM) memberlakukan eksekusi kode yang ditandatangani dan tepercaya di semua platform kecuali macOS (karena macOS didesain untuk menjalankan semua kode). Semua properti keamanan lainnya, termasuk perlindungan tabel halaman, ada di semua 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 bekerja hampir sama seperti 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 |
Penunjuk Deskriptor Blok | DA | Alamat penyimpanan + 0xC0BB |
Cache Metode Objective-C | IB | Alamat penyimpanan + Kelas + Pemilih |
Penunjuk Isa Objective-C | DA | Alamat penyimpanan + 0x6AE1 |
Penunjuk Super Objective-C | DA | Alamat penyimpanan + 0xB5AB |
Pemilih Berjenis ivar Objective-C | DB | Alamat penyimpanan + 0x57C2 |
Penunjuk Data Kelas Hanya Baca Objective-C | DA | Alamat penyimpanan + 0x61F8 |
Entri Tabel V C++ | IA | Alamat penyimpanan + Hash (nama metode yang rusak) |
Penunjuk Tabel V C++ | DA | Alamat penyimpanan + Hash (nama dasar V-Table yang diubah) |
Label Goto yang Dihitung | IA | Hash (nama fungsi) |
Status Ulir Kernel | GA | • |
Register Status Ulir Pengguna | IA | Alamat penyimpanan |
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, visionOS, dan watchOS dirancang untuk mencegah kode ruang pengguna agar tidak dimodifikasi setelah verifikasi tanda tangan kode selesai. Berdasarkan di KIP 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) di iOS, iPadOS, macOS, dan visionOS dirancang untuk digunakan bersama untuk membantu melindungi tabel halaman bagi pengguna dan proses kernel terhadap modifikasi. Ini termasuk ketika penyerang memiliki kemampuan menulis ke kernel dan dapat melewati perlindungan aliran 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 A15 atau lebih baru dan M2 atau SOC yang lebih baru, 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 mengandalkan primitif silikon yang merupakan evolusi dari Pembatasan Izin Cepat yang digunakan PPL, dan hanya tersedia di prosesor yang tercantum di tabel di atas.
Penegakan Integritas Memori
Penegakan Integritas Memori (MIE) adalah sistem pertahanan keamanan memori komprehensif untuk platform Apple yang tersedia di prosesor A19 dan M5 atau lebih baru. MIE dibangun di atas landasan kokoh yang disediakan oleh pengalokasi memori aman Apple, dipadukan dengan Ekstensi Pelabelan Memori yang Ditingkatkan (EMTE) dalam mode selaras, dan didukung oleh kebijakan Penegakan Kerahasiaan Label yang ekstensif. MIE terintegrasi langsung di Apple silicon dan menawarkan perlindungan keamanan memori yang selalu aktif dan tak tertandingi untuk permukaan serangan utama, termasuk kernel, sambil tetap mempertahankan efisiensi daya dan performa yang diharapkan pengguna. Untuk informasi lainnya, lihat Penegakan Integritas Memori: Visi lengkap untuk keamanan memori di perangkat Apple di blog Riset Keamanan Apple.
Ekstensi Pelabelan Memori
Arm menerbitkan spesifikasi Ekstensi Pelabelan Memori (MTE) pada tahun 2019 sebagai alat untuk perangkat keras guna membantu menemukan bug kerusakan memori. MTE adalah sistem pelabelan dan pemeriksaan label memori, di mana setiap alokasi memori ditandai dengan rahasia. Perangkat keras memastikan bahwa permintaan akses memori selanjutnya hanya akan diberikan jika permintaan tersebut menyertakan rahasia yang benar. Jika rahasia tidak cocok, app akan mengalami crash, dan kejadian tersebut akan dicatat. Ini memungkinkan pengembang untuk mengidentifikasi bug kerusakan memori secara langsung saat bug tersebut terjadi.
Ekstensi Pelabelan Memori yang Ditingkatkan
EMTE menutup celah yang mencegah MTE menjadi pertahanan aktif, termasuk hanya mendukung mode selaras yang lebih aman. Selain itu, mengakses memori tanpa label dari wilayah memori dengan label memerlukan pengetahuan tentang label wilayah tersebut, sehingga secara signifikan mempersulit penyerang untuk mengubah bug di luar batas pada memori dengan label dinamis menjadi cara untuk menghindari EMTE dengan memodifikasi langsung alokasi tanpa label.
Penegakan Kerahasiaan Label
Penegakan Kerahasiaan Label melindungi implementasi pengalokasi aman dari ancaman teknis dan menjaga kerahasiaan label EMTE—termasuk terhadap serangan saluran samping dan eksekusi spekulatif. Pengawasan Tabel Halaman Aman melindungi penyimpanan pendukung pengalokasi kernel dan penyimpanan label. Sistem juga memastikan bahwa saat kernel mengakses memori atas nama aplikasi, akses tersebut tunduk pada aturan pemeriksaan label yang sama seperti userspace. Penegakan Kerahasiaan Label juga dirancang untuk mengurangi kebocoran label akibat serangan yang terkait dengan waktu atau serangan spekulatif, dan bahkan mencakup perlindungan terhadap Spectre V1.