Keamanan proses runtime di iOS dan iPadOS
iOS dan iPadOS membantu memastikan keamanan runtime dengan menggunakan “sandbox”, hak yang ditetapkan, serta Pengacakan Tata Letak Ruang Alamat (ASLR).
Sandboxing
Semua app pihak ketiga “berjalan dalam sandbox”, sehingga dilarang untuk mengakses file yang disimpan oleh app lainnya atau untuk melakukan perubahan ke perangkat. Sandbox dirancang untuk mencegah app untuk mengumpulkan atau memodifikasi informasi yang disimpan oleh app lainnya. Setiap app memiliki direktori utama unik untuk filenya, yang ditetapkan secara acak saat app diinstal. Jika app pihak ketiga memerlukan informasi yang bukan miliknya, app akan mengaksesnya hanya dengan menggunakan layanan yang disediakan secara eksplisit oleh iOS dan iPadOS.
File sistem dan sumber daya juga dilindungi dari app pengguna. Sebagian besar file sistem dan sumber daya iOS dan iPadOS dijalankan sebagai pengguna "bergerak" bukan istimewa, sebagaimana halnya dengan app pihak ketiga. Keseluruhan partisi sistem operasi dipasang sebagai hanya baca. Alat yang tidak diperlukan, seperti layanan masuk jarak jauh, tidak disertakan pada perangkat lunak sistem, dan API tidak mengizinkan app meningkatkan hak mereka untuk memodifikasi app lainnya atau iOS dan iPadOS itu sendiri.
Penggunaan hak
Akses oleh app pihak ketiga terhadap informasi pengguna, dan ke fitur seperti iCloud dan ekstensibilitas, dikontrol menggunakan hak yang ditetapkan. Hak adalah pasangan nilai utama yang masuk ke app dan mengizinkan pengesahan di luar faktor runtime seperti ID pengguna UNIX. Karena hak ditandatangani secara digital, hak tidak dapat diubah. Hak digunakan secara ekstensif oleh app sistem dan daemon untuk melakukan operasi istimewa tertentu yang sebaliknya mengharuskan agar proses dijalankan sebagai root. Ini sangat mengurangi potensi peningkatan hak oleh app sistem atau daemon yang sudah disusupi.
Selain itu, app hanya dapat menjalankan pemrosesan latar belakang melalui API yang disediakan sistem. Ini memungkinkan app untuk terus berfungsi tanpa mengurangi kinerja atau memengaruhi masa pakai baterai secara drastis.
Pengacakan Tata Letak Ruang Alamat
Pengacakan Tata Letak Ruang Alamat (ASLR) membantu melindungi dari eksploitasi bug kerusakan memori. App internal menggunakan ASLR untuk membantu mengacak semua wilayah memori saat diluncurkan. Selain berfungsi saat peluncuran, ASLR secara acak menyusun alamat memori dari kode yang dapat dieksekusi, perpustakaan sistem, dan konstruksi pemrograman terkait, sehingga kian mengurangi potensi dari banyak eksploitasi. Misalnya, serangan return-to-libc mencoba untuk menipu perangkat agar menjalankan kode berbahaya dengan memanipulasi alamat memori dari tumpukan dan perpustakaan sistem. Dengan membuat penempatan yang acak, serangan ini menjadi lebih sulit untuk dilakukan, khususnya di beberapa perangkat. Xcode dan lingkungan pengembangan iOS dan iPadOS, mengumpulkan program pihak ketiga secara otomatis dengan dukungan ASLR yang menyala.
Fitur Execute Never
Perlindungan lebih lanjut disediakan oleh iOS dan iPadOS menggunakan fitur Execute Never (XN) ARM, yang menandai halaman memori sebagai tidak dapat dieksekusi. Halaman memori yang ditandai sebagai dapat ditulisi dan dapat dieksekusi hanya dapat digunakan oleh app dengan kondisi yang dikontrol secara ketat: Kernel memeriksa keberadaan hak penandatanganan kode dinamis khusus Apple. Selain itu, hanya satu panggilan mmap
yang dapat dilakukan untuk meminta halaman yang dapat dieksekusi dan ditulisi, yang diberi alamat acak. Safari menggunakan fungsi ini untuk kompilator Just-in-Time (JIT) JavaScript-nya.