PSA: Berhati-hatilah saat menginstal apa pun dengan SELinux yang disetel ke permisif

Fitur Android yang tidak terdokumentasi memungkinkan aplikasi apa pun mendapatkan akses root pada lingkungan SELinux yang permisif. Baca terus untuk mengetahui lebih lanjut!

Dalam dunia modding Android, orang cenderung menganggap akses root sebagai landasan dalam segala hal. Hal ini memungkinkan pengguna untuk mengambil kendali penuh atas perangkat mereka dan menambahkan fitur yang tidak selalu tersedia dalam konfigurasi stok. Namun seperti yang mereka katakan — "dengan kekuatan besar datang pula tanggung jawab yang besar" — tidaklah bijaksana untuk mengabaikan model keamanan Android kecuali Anda tahu apa yang akan Anda hadapi. Untuk penggemar Android veteran di forum kami, Anda mungkin menyadari potensi adanya pintu belakang di perangkat Anda, dan Anda lebih mungkin menjalankan mod tepercaya yang mendukung root di atas versi Android terbaru dengan keamanan terbaru tambalan. Karena itu, Anda mungkin mengenal beberapa orang yang tidak terlalu peduli dengan perubahan root apa yang mereka instal selama tampaknya berhasil. Inilah sebabnya mengapa Anda masih dapat menemukan banyak sekali mod yang hanya berfungsi ketika SELinux disetel ke permisif, yang, pada gilirannya, membuat penggunanya sangat rentan terhadap ancaman keamanan.

Apa itu SELinux

SELinux, atau Linux dengan Keamanan yang Ditingkatkan, adalah modul keamanan kernel Linux yang dirancang khusus untuk akses dan pengelolaan kebijakan keamanan. Awalnya diperkenalkan di Android 4.3 Jelly Bean dan disetel ke mode Penegakan sebagai default sejak Android 4.4 KitKat, SELinux membantu menegakkan hak kontrol akses dan upaya untuk mencegah peningkatan hak istimewa serangan. Singkatnya, SELinux bertindak sebagai penghalang bagi kontrol tidak sah atas perangkat Anda, seperti aplikasi atau kerentanan yang bertujuan untuk mendapatkan akses root secara jahat. Menyetel SELinux ke "Enforcing" secara default adalah salah satu cara utama agar pengguna normal terlindungi dari serangan semacam itu.

Mengapa SELinux Permisif tidak disarankan

Sekali lagi, cara umum untuk mendapatkan akses root pada perangkat Android tidak selalu perlu mengubah status SELinux. Mengalihkan mode SELinux dari "Enforcing" ke "Permisif" dengan sengaja menonaktifkan salah satu fitur keamanan utama pada perangkat, itulah sebabnya pengguna harus secara eksplisit mengizinkan hal ini terjadi dengan menginstal kernel khusus khusus atau mengubah parameter image boot yang ada. Mod dengan kode buruk yang tidak memiliki kebijakan SELinux yang tepat biasanya memaksa pengguna akhir untuk beralih ke SELinux yang permisif dan pada dasarnya memperluas permukaan serangan. Itulah tepatnya yang dilakukan pengembang vvb2060 ditunjukkan ketika mereka menerbitkan bukti metode eskalasi hak istimewa konsep di mana satu-satunya persyaratan untuk mendapatkan kendali adalah SELinux yang permisif.

Masukkan Magica

Bagi pengguna untuk mendapatkan akses root penuh pada perangkat mereka yang menjalankan Android 10 (atau lebih tinggi) dengan SELinux yang disetel ke permisif sangatlah mudah. lakukan: Yang harus Anda lakukan adalah menekan install, dan "Magica" akan secara otomatis mendapatkan akses root dalam suatu layanan dan menginstal Magisk ke boot gambar. Ini adalah sesuatu yang cakupannya jauh lebih luas daripada sekadar mengutak-atik perangkat Anda. Menurut Pengembang Senior yang Diakui XDA dan pengelola Magisk topjohnwu, aplikasi apa pun, termasuk malware, dapat melakukan rooting secara permanen pada perangkat Anda tanpa persetujuan dan izin Anda dengan memanfaatkan PoC.

Jika Anda bertanya-tanya secara teknis apa yang dieksploitasi Magica, topjohnwu menjelaskan hal berikut di dalamnya postingan Reddit:

"Ketika SELinux bersifat permisif saat boot, zygote akan mengetahui hal ini dan menonaktifkan filter seccomp syscall. Ini pada dasarnya tidak membatasi panggilan sistem apa yang diperbolehkan dalam proses pihak ketiga.

Di Android 10+, ada fitur "tidak berdokumen" baru yang disebut "Aplikasi Zygote" yang memungkinkan aplikasi pihak ketiga untuk membuat Zygote sendiri untuk "Layanan Terisolasi" (juga hampir tidak berdokumen). Baik "App Zygote" dan "Isolated Services" adalah fitur khusus yang dirancang untuk Chrome/Webview*. Proses App Zygote dijalankan dengan izin khusus, dan dengan seccomp dinonaktifkan, ia dapat memanggil setuid 0 dan meningkatkan hak istimewanya serta mendapatkan akses root.

Ini masih terbatas dibandingkan dengan apa yang disediakan oleh solusi root normal (misalnya Magisk), namun banyak langkah keamanan di Android akan dikalahkan sepenuhnya ketika UID=0. Misalnya, cukup digunakan untuk menambal gambar boot, yang berarti dapat digunakan untuk menyuntikkan malware seperti Magisk yang dimodifikasi untuk membantunya mendapatkan izin root yang "sebenarnya".

Pembaruan: apa yang bisa dilakukan UID=0 sendiri? Dalam kerangka Android, hampir semua layanan memiliki lampu hijau buta ketika UID proses permintaan adalah 0. Ini berarti proses root ini mampu memanipulasi banyak hal menggunakan API khusus Android (misalnya ActivityManager)"

*Menurut pengembang aviraxp, kedua fitur ini secara umum dirancang "untuk berbagi sumber daya dan memori antara beberapa proses yang terisolasi."

Kesimpulan

Mengingat kerugian yang tidak dapat diperbaiki yang dapat ditimbulkan pada pengguna yang menjadi sasaran malware di lingkungan SELinux yang permisif, kami sangat menyarankan semua orang untuk tetap menerapkannya kecuali benar-benar diperlukan. Meskipun kami beruntung memiliki bukti konsep eksploitasi, kami tidak tahu berapa banyak pembuat malware yang sudah mengetahui jalur serangan ini. Lagi pula, korban akan tetap tidak menyadari kondisi perangkatnya yang disusupi jika mereka tidak melakukannya saksikan eksploitasi digunakan secara aktif, yang tidak sulit dicapai untuk aplikasi jahat yang memiliki root yang persisten mengakses.