Magisk mungkin tidak lagi dapat menyembunyikan pembukaan kunci bootloader dari aplikasi

Pengembang Magisk telah menemukan bahwa Google mungkin telah mulai menggunakan pemeriksaan perangkat keras untuk menentukan apakah suatu perangkat telah dibuka kunci bootloadernya.

Pengembang yang Diakui XDA topjohnwuProyek "Magisk" pada dasarnya menjadi sinonim dengan "root" di komunitas Android. Salah satu alasan utama mengapa ini begitu populer adalah karena dapat menyembunyikan fakta bahwa pengguna telah memodifikasi perangkatnya. Namun, Google mungkin menindak kemampuan Magisk untuk menyembunyikan status buka kunci bootloader dari aplikasi.

Untuk melakukan root pada ponsel Anda, Anda biasanya perlu membuka kunci bootloader, yang memungkinkan Anda mem-flash image boot yang dimodifikasi. Hal ini diperlukan karena Magisk memodifikasi image boot untuk memalsukan status bootloader dan/atau pemeriksaan status Boot Terverifikasi. API Pengesahan SafetyNet Google, yang merupakan bagian dari Layanan Google Play, digunakan untuk memberi tahu aplikasi jika aplikasi tersebut berjalan pada perangkat yang dirusak; jika SafetyNet API mendeteksi bahwa bootloader telah dibuka kuncinya, maka status kegagalan akan dikembalikan untuk pemeriksaan "Integritas Dasar". Perangkat yang gagal dalam pemeriksaan ini kemudian dapat dikunci dari aplikasi yang menggunakan API SafetyNet untuk menentukan integritas perangkat; aplikasi tersebut biasanya mencakup aplikasi perbankan, aplikasi pembayaran (seperti Google Pay), dan banyak game online (seperti Pokémon Go). Namun, karena SafetyNet API sejauh ini hanya menggunakan pemeriksaan perangkat lunak untuk menentukan apakah perangkat telah dirusak, Magisk dapat dengan mudah melakukan spoofing. bootloader dan/atau status Boot Terverifikasi karena diinstal pada tingkat yang lebih rendah dan dengan hak istimewa yang lebih tinggi daripada Layanan Google Play dan ruang pengguna lainnya aplikasi. Seperti yang dijelaskan topjohnwu, MagiskHide "[menciptakan] 'lingkungan aman' yang terisolasi untuk proses pendeteksian, dan melalui API Google untuk membuat

sah Hasil SafetyNet yang tidak mencerminkan status sebenarnya dari perangkat."

Namun baru-baru ini, pengguna menyadari bahwa perangkat mereka yang tidak terkunci bootloader gagal dalam pemeriksaan Integritas Dasar SafetyNet meskipun mereka menggunakan Magisk untuk menambal image boot. Menurut topjohnwu, hal ini karena Google mungkin telah menerapkan pengesahan kunci tingkat perangkat keras untuk memverifikasi bahwa image boot tidak dirusak. Secara khusus, ini berarti Layanan Google Play "[mengirimkan] sertifikat keystore yang tidak dimodifikasi ke server SafetyNet, memverifikasi keabsahannya, dan memeriksa data ekstensi sertifikat untuk mengetahui apakah perangkat Anda [telah] mengaktifkan boot terverifikasi (status bootloader)." Ini berarti mungkin tidak lagi mungkin untuk menyembunyikan fakta bahwa bootloader telah dibuka kuncinya, yang akan mengakibatkan aplikasi seperti Google Pay dan Pokémon Go gagal beroperasi biasanya.

Seperti yang dicatat topjohnwu, perubahan pada cara SafetyNet memeriksa status buka kunci bootloader ini terjadi melalui pembaruan sisi server pada API SafetyNet yang terdapat dalam Layanan Google Play. Namun, tidak semua pengguna gagal dalam pemeriksaan SafetyNet yang diperbarui ini, sehingga pengesahan kunci tingkat perangkat keras yang baru mungkin belum diterapkan secara luas.

Kami telah melihat topjohnwu berulang kali mengatasi rintangan teknis. Google sering meluncurkan pemeriksaan baru di SafetyNet yang kemudian ditemukan dan dilewati oleh topjohnwu di Magisk. Setiap versi baru Android membawa perubahan pada struktur partisi atau image booting, sehingga mengharuskan topjohnwu mempelajari perubahan tersebut dan kemudian menerapkan metode patching baru. Namun, bahkan topjohnwu mungkin kesulitan menemukan jalan pintas kali ini.

Itu karena solusi kali ini akan melibatkan peretasan firmware perangkat Trusted Execution Environment (TEE) untuk mengambil kunci pribadi. Namun, hal ini sangat sulit dilakukan karena memerlukan penemuan kerentanan pada firmware yang dirancang sangat aman. Faktanya, banyak perusahaan menawarkan pembayaran ratusan ribu dolar jika kerentanan tersebut ditemukan. Google, misalnya, membayar $250.000 untuk kerentanan eksekusi kode jarak jauh di Lingkungan Eksekusi Tepercaya Pixel, dan hingga $1.000.000 untuk kerentanan di Titan M chip keamanan. Bahkan jika kunci pribadi entah bagaimana bisa dibocorkan, kecil kemungkinannya bahwa kunci tersebut akan banyak berguna sejak saat itu Google dapat mencabut kunci tersebut dari jarak jauh jadi tidak dapat digunakan untuk memverifikasi integritas perangkat.

Setelah pengesahan kunci tingkat perangkat keras diterapkan secara luas untuk SafetyNet, sebagian besar perangkat dengan bootloader tidak terkunci yang menjalankan Android 8.0 Oreo atau lebih tinggi akan gagal lolos pemeriksaan Integritas Dasar SafetyNet. Hal ini karena semua perangkat yang diluncurkan dengan Android 8.0 Oreo atau lebih tinggi harus memiliki keystore perangkat keras yang diimplementasikan dalam TEE. Perangkat tertentu saat ini bahkan memiliki modul keamanan perangkat keras (HSM) khusus yang membuat eksploitasi menjadi lebih sulit dengan memindahkan TEE dari prosesor utama; Titan M di Pixel 4 dan Chip keamanan baru Samsung di Galaxy S20 adalah contohnya.

Topjohnwu juga menjelaskan bahwa solusi potensial lainnya tidak mungkin atau sangat menantang. Menggunakan Kerangka Xpose untuk memodifikasi API Pengesahan SafetyNet di Layanan Google Play kemungkinan tidak akan berfungsi karena "pemeriksaan SafetyNet yang tepat akan memverifikasi hasil pada server jarak jauh, bukan pada [the] perangkat yang dapat dimanipulasi oleh kerangka injeksi kode." Selain itu, Layanan Google Play sangat dikaburkan, membuat pembuatan Modul Xgged seperti itu sangat menantang pada awalnya. tempat. Memalsukan hasil tes SafetyNet juga tidak dapat dilakukan karena respons SafetyNet "berasal dari server Google dan ditandatangani dengan kunci pribadi Google".

Google telah memiliki kemampuan untuk memperketat pemeriksaan SafetyNet menggunakan pengesahan kunci yang didukung perangkat keras selama beberapa tahun sekarang. Fakta bahwa mereka menahan diri untuk melakukannya selama 3 tahun telah memungkinkan pengguna untuk menikmati Modul root dan Magisk tanpa mengorbankan kemampuan untuk menggunakan aplikasi perbankan. Namun, tampaknya kemampuan Magisk untuk menyembunyikan status buka kunci bootloader secara efektif akan segera berakhir. Ini merupakan perubahan yang telah kami harapkan selama bertahun-tahun, namun kami sedih melihat perubahan tersebut akhirnya dapat terwujud. Kami berharap Google memperbarui SafetyNet Attestation API untuk mengembalikan apakah pemeriksaan status menggunakan berbasis perangkat keras pengesahan karena ini akan memungkinkan pengembang aplikasi untuk memutuskan apakah mereka ingin memblokir semua pengguna yang telah membuka kuncinya pemuat boot.


Terima kasih kepada Daniel Micay (@Daniel Micay) atas masukannya mengenai hal ini!