Google is committed to advancing racial equity for Black communities. See how.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Linux yang Ditingkatkan Keamanan di Android

Sebagai bagian dari model keamanan Android, Android menggunakan Security-Enhanced Linux (SELinux) untuk menerapkan kontrol akses wajib (MAC) pada semua proses, bahkan proses yang berjalan dengan hak akses root / superuser (kemampuan Linux). Banyak perusahaan dan organisasi telah berkontribusi pada implementasi SELinux Android. Dengan SELinux, Android dapat melindungi dan membatasi layanan sistem dengan lebih baik, mengontrol akses ke data aplikasi dan log sistem, mengurangi efek perangkat lunak berbahaya, dan melindungi pengguna dari potensi kekurangan kode pada perangkat seluler.

SELinux beroperasi dengan prinsip penolakan default: Apa pun yang tidak diizinkan secara eksplisit akan ditolak. SELinux dapat beroperasi dalam dua mode global:

  • Mode permisif , di mana penolakan izin dicatat tetapi tidak diterapkan.
  • Modus, di mana izin penolakan keduanya dicatat dan ditegakkan Menegakkan.

Android menyertakan SELinux dalam mode penerapan dan kebijakan keamanan terkait yang berfungsi secara default di seluruh AOSP. Dalam mode penerapan, tindakan yang tidak diizinkan dicegah dan semua percobaan pelanggaran dicatat oleh kernel ke dmesg dan logcat . Saat mengembangkan, Anda harus menggunakan kesalahan ini untuk menyempurnakan perangkat lunak dan kebijakan SELinux Anda sebelum memberlakukannya. Untuk detail selengkapnya, lihat Mengimplementasikan SELinux .

SELinux juga mendukung mode permisif per domain di mana domain (proses) tertentu dapat dibuat permisif sambil menempatkan sistem lainnya dalam mode penegakan global. Domain hanyalah label yang mengidentifikasi proses atau serangkaian proses dalam kebijakan keamanan, di mana semua proses yang diberi label dengan domain yang sama diperlakukan secara identik oleh kebijakan keamanan. Mode permisif per domain memungkinkan aplikasi inkremental SELinux ke bagian sistem dan pengembangan kebijakan yang terus meningkat untuk layanan baru (sambil mempertahankan penerapan sistem lainnya).

Latar Belakang

Model keamanan Android sebagian didasarkan pada konsep kotak pasir aplikasi . Setiap aplikasi berjalan di kotak pasirnya sendiri. Sebelum Android 4.3, kotak pasir ini ditentukan dengan pembuatan UID Linux unik untuk setiap aplikasi pada saat penginstalan. Android 4.3 dan yang lebih baru menggunakan SELinux untuk lebih menentukan batas-batas kotak pasir aplikasi Android.

Di Android 5.0 dan yang lebih baru, SELinux sepenuhnya diberlakukan, dikembangkan dari rilis permisif Android 4.3 dan penerapan sebagian Android 4.4. Dengan perubahan ini, Android beralih dari penerapan pada sekumpulan domain penting yang terbatas ( installd , netd , vold , dan zygote ) ke semuanya (lebih dari 60 domain). Secara khusus:

  • Semuanya dalam mode penerapan di Android 5.x dan yang lebih tinggi.
  • Tidak ada proses selain init harus dijalankan di domain init .
  • Setiap penolakan umum (untuk block_device , socket_device , default_service ) menunjukkan bahwa perangkat memerlukan domain khusus.

Android 6.0 memperkuat sistem dengan mengurangi izin kebijakan kami untuk menyertakan isolasi yang lebih baik antara pengguna, pemfilteran IOCTL, pengurangan ancaman layanan yang terpapar, pengetatan lebih lanjut dari domain SELinux, dan akses /proc sangat terbatas.

Android 7.0 memperbarui konfigurasi SELinux untuk lebih mengunci kotak pasir aplikasi dan mengurangi permukaan serangan. Rilis ini juga memecah tumpukan mediaserver monolitik menjadi proses yang lebih kecil untuk mengurangi cakupan izinnya. Untuk detail selengkapnya, lihat Melindungi Android dengan lebih banyak pertahanan kernel Linux dan Mengeraskan tumpukan media .

Android 8.0 mengupdate SELinux agar berfungsi dengan Treble , yang memisahkan kode vendor level bawah dari framework sistem Android. Rilis ini memperbarui kebijakan SELinux untuk memungkinkan produsen perangkat dan vendor SOC memperbarui bagian kebijakan mereka, membuat gambar mereka ( vendor.img , boot.img , dll.), Lalu memperbarui gambar tersebut secara independen dari platform atau sebaliknya.

Meskipun dimungkinkan untuk menjalankan versi platform (kerangka kerja) yang lebih tinggi / lebih baru pada perangkat, kasus sebaliknya tidak didukung; gambar vendor ( vendor.img/odm.img ) tidak dapat memiliki versi yang lebih baru dari platform ( system.img ). Jadi, versi platform yang lebih baru mungkin memperkenalkan masalah kompatibilitas SELinux karena kebijakan platform SELinux berada pada versi yang lebih baru daripada bagian kebijakan SELinux vendor. Model Android 8.0 menyediakan metode untuk mempertahankan kompatibilitas guna mencegah OTA simultan yang tidak perlu.

Sumber daya tambahan

Untuk membantu menyusun kebijakan SELinux yang berguna, lihat sumber daya berikut: