Fortnite Mobile di aplikasi penginstal Android dapat dieksploitasi pada rilis pertamanya. Ini dapat disalahgunakan untuk menginstal aplikasi apa pun secara diam-diam di ponsel Samsung Galaxy.
Peluncuran Fortnite Mobile di Android tidak terlalu bagus, apalagi sejak saat itu banyak perangkat yang didukung Sungguh berjuang untuk memainkan game dengan frame rate yang dapat diterima. Game ini diluncurkan sebagai Samsung Galaxy eksklusif hanya 3 hari. Penginstal Fortnite pertama kali tersedia di Aplikasi Samsung Galaxy sebelum Epic Games mengizinkan pemain non-Samsung untuk mengunduh dan menginstal game lengkap dari Penginstal Fortnite yang diperoleh di situs web Epic. Tak lama setelah Penginstal Fortnite tersedia, Epic Games diam-diam mendorong pembaruan ke Penginstal. Sekarang kita tahu alasannya: Mereka menambal a Manusia dalam Disk eksploitasi yang memungkinkan aplikasi jahat untuk melakukannya instal secara diam-diam aplikasi apa pun yang mereka inginkan pada ponsel pintar Samsung Galaxy. Karena terdapat kebingungan mengenai cara kerja kelemahan ini, kami akan mencoba menyelesaikannya. Pertama, kita perlu menjelaskan dasar-dasar instalasi aplikasi di Android.
Alur Instalasi Aplikasi di Smartphone Android
Instalasi senyap dari sumber pihak pertama
Untuk menginstal APK secara diam-diam di Android tanpa meminta izin pengguna, Anda harus memiliki aplikasi tingkat sistem dengan INSTAL_PAKET izin diberikan. Contoh aplikasi dengan izin ini termasuk Google Play Store di sebagian besar perangkat Android. Penyimpanan aplikasi pihak pertama pada perangkat dari Samsung, Huawei, dan pembuat perangkat lainnya mungkin juga diberikan izin INSTALL_PACKAGES. Jika Anda ingin memasang aplikasi apa pun dari Google Play Store, aplikasi tersebut akan menangani pengunduhan dan memasang secara otomatis aplikasi untuk Anda tanpa intervensi lebih lanjut setelah Anda menekan "Instal." (Bahkan Google Play Store secara otomatis memberikan izin runtime tertentu seperti yang untuk hamparan, sedangkan aplikasi yang diinstal dari luar Play Store perlu meminta pengguna untuk memberikan izin ini.)
Jika Anda penasaran apakah suatu aplikasi di perangkat Anda memiliki izin INSTALL_PACKAGES, Anda dapat mengetahuinya melalui perintah ADB.
adb shell
dumpsys packagepackage.name.here | grep "INSTALL_PACKAGES"
Misalnya, nama paket Google Play Store adalah "com.android.vending
". Aplikasi lain dengan izin ini adalah Shell dengan nama paket com.android.shell
. Bagi anda yang menggunakan Substratum tanpa root melalui plug-in Andromeda di Android Oreo, skrip Andromeda yang dijalankan dari PC Anda membuat proses shell tetap berjalan sehingga Substratum dapat menggunakannya untuk menginstal paket (hamparan tema) dan kemudian menggunakan Perintah OverlayManager untuk mengaktifkan overlay.
Memuat aplikasi sampingan dari sumber pihak ketiga
Jika Anda mencoba mengunduh dan memasang aplikasi dari luar toko aplikasi pihak pertama, Anda harus mengaktifkan sumber pemasangan tidak dikenal terlebih dahulu. Hal ini memungkinkan Layanan Manajer Paket dalam kerangka Android (yang memiliki izin INSTALL_PACKAGES) ketahuilah bahwa Anda mengakui risiko pemuatan sampingan aplikasi dari sumber pihak ketiga. Pada perangkat pra-Android Oreo, ada satu tombol di pengaturan Keamanan untuk mengizinkan instalasi dari sumber yang tidak dikenal. Di Android Oreo dan versi yang lebih baru, aplikasi yang meminta pemasangan APK harus mendeklarasikan REQUEST_INSTALL_PACKAGES izin dan pengguna harus memasukkan aplikasi tersebut ke dalam daftar putih sehingga dapat meminta pemasangan aplikasi melalui Layanan Manajer Paket. Karena REQUEST_INSTALL_PACKAGES adalah izin "appop", maka ini menjadikannya salah satu izin yang dapat dikontrol dari dalam manajer izin Pengaturan atau melalui cmd appops
perintah cangkang.
Setelah instalasi dari sumber tidak dikenal diaktifkan baik secara global atau khusus untuk aplikasi yang meminta, maka pengguna dapat melakukan side-load aplikasi. Namun, Manajer Paket tidak mengizinkan aplikasi dipasang secara diam-diam. Sebaliknya, ini akan menanyakan kepada pengguna apakah mereka ingin menginstal aplikasi dan mencantumkan izin sensitif apa pun yang diminta untuk diberikan saat instalasi. Jika pengguna menyetujuinya, aplikasi akan diinstal dengan izin non-runtime yang diminta. OEM juga dapat menyesuaikan Manajer Paket: Misalnya, Manajer Paket dalam versi Cina EMUI 5 Huawei memiliki fitur untuk memindai APK untuk memutuskan apakah itu aman dan mengontrol izin apa yang ada diberikan sebelum instalasi. Saya telah mengamati hal ini pada Honor Note 8 yang menjalankan EMUI 5 yang diimpor dari Tiongkok, meskipun saya yakin perangkat Huawei dan Honor Tiongkok lainnya juga memiliki fitur ini di Manajer Paket mereka.
Bagaimanapun, itulah ringkasan perbedaan antara menginstal aplikasi dari sumber pihak pertama yang disetujui dan sumber pihak ketiga. Jika Anda mencoba memasang aplikasi dari Play Store atau toko aplikasi setara dengan INSTALL_PACKAGES izin, itu akan secara diam-diam menangani semua instalasi sendiri tanpa campur tangan pengguna lebih lanjut setelah Anda memulai unduhan. Namun jika Anda mengunduh APK dari XDA Labs, APKMirror, atau sumber pihak ketiga lainnya, penginstal paket standar akan menangani penginstalan dan meminta pengguna untuk menginstal paket tersebut. Jadi dari mana Penginstal Fortnite masuk dan mengapa semua ini relevan?
Cacat dalam Proses Instalasi Fortnite
Sebelumnya hari ini, Google mengungkapkan kerentanan mereka menemukannya dengan versi pertama Penginstal Fortnite. Kerentanan ini ditunjukkan pada Exynos Samsung Galaxy S8+ (dream2lte) tetapi juga memengaruhi semua perangkat Samsung Experience lainnya termasuk Samsung Galaxy Note 9 dan Samsung Galaxy Tab S4. Kerentanan memungkinkan aplikasi berbahaya yang sudah terinstal untuk memanfaatkan cara Penginstal Fortnite mencoba menginstal Fortnite untuk pertama kalinya pada perangkat Samsung Galaxy. Dengan menggunakan API pribadi di Samsung Galaxy Apps, Penginstal Fortnite mengabaikan kebutuhan untuk meminta pengguna melalui penginstal paket standar untuk menginstal Fortnite. Itu karena Galaxy Apps memiliki izin yang diperlukan untuk menangani instalasi secara diam-diam. Tidak akan ada yang salah dengan proses instalasi diam-diam ini jika aplikasi yang diinstal secara diam-diam adalah Fortnite asli. Namun karena di mana Penginstal Fortnite menyimpan file APK yang diunduh untuk game Fortnite, file tersebut mudah dieksploitasi.
Menurut laporan di Issue Tracker, Penginstal Fortnite akan mengunduh APK Fortnite Mobile ke /sdcard/Android/data/com.epicgames.portal/files/downloads/
. Ini dianggap sebagai "penyimpanan eksternal" di Android karena /sdcard adalah tautan simbolisnya /data/media/CURRENT_USER, dan /sdcard adalah nama yang digunakan pada masa awal Android ketika data aplikasi disimpan di kartu SD fisik. Saat ini, data aplikasi biasanya disimpan di direktori khusus aplikasi di /data/data/, dan setiap aplikasi hanya memiliki akses ke file di direktori /data/data miliknya sendiri. Jadi, jika Penginstal Fortnite menyimpan APK Fortnite yang diunduh ke direktori /data/data/ miliknya sendiri, tidak mungkin aplikasi apa pun tanpa izin baca (mis. tanpa akses root) untuk mengetahui apa yang terjadi di direktori ini.
Namun, sejak Penginstal Fortnite menyimpan APK yang diunduh di penyimpanan eksternal, itu dapat dipantau dan ditimpa oleh aplikasi apa pun dengan izin baca penyimpanan eksternal. Biasanya, aplikasi menulis ke /data/media, "kartu SD virtual", ketika aplikasi menyimpan file yang perlu diakses oleh pengguna melalui MTP atau aplikasi lain. Agar aplikasi dapat membaca atau menulis ke /data/media, aplikasi tersebut harus memiliki READ_EXTERNAL_STORAGE dan masing-masing izin WRITE_EXTERNAL_STORAGE (keduanya berada di bawah grup izin yang sama dan karenanya diberikan bersama-sama). Sebelum Android 4.4 KitKat, sebagian besar aplikasi meminta izin ini saat instalasi karena jika tidak, maka izin tersebut tidak akan diminta dapat membaca atau menulis ke file di direktori penyimpanan eksternal yang ditunjuk paketnya /data/media/.../Android/. Dengan diperkenalkannya FUSE untuk meniru izin direktori gaya FAT-on-sdcard di Android 4.4 KitKat, aplikasi tidak lagi memerlukan izin apa pun untuk mengakses file di direktori yang ditentukan di penyimpanan eksternal. Mengakses file di direktori lain masih memerlukan izin penyimpanan eksternal, yang dapat dilakukan aplikasi jahat untuk membajak proses instalasi Fortnite.
Seperti yang ditunjukkan dalam video di bawah, aplikasi jahat dengan izin READ_EXTERNAL_STORAGE memantau direktori unduhan Penginstal Fortnite di penyimpanan eksternal. Ketika mendeteksi bahwa pengunduhan telah selesai dan sidik jari telah diverifikasi, ia akan menggantikannya mengunduh paket Fortnite dengan paket jahatnya sendiri berkat WRITE_EXTERNAL_STORAGE izin. Namun, karena cara Samsung Galaxy Apps memverifikasi APK Fortnite sebelum instalasi (...itu hanya memeriksa apakah nama paketnya adalah "com.epicgames.fortnite"), mungkin ada Galaxy Aplikasi menginstal paket berbahaya secara diam-diam di latar belakang tanpa intervensi atau pemberitahuan pengguna—selama nama paket jahatnya adalah "com.epicgames.fortnite." Lebih buruk lagi, jika paket berbahaya ini menargetkan SDK level 22 atau lebih rendah (Android 5.1 Lollipop dan versi lebih lama), paket tersebut akan secara otomatis diberikan semua izin yang ditentukan dalam manifesnya karena izin runtime hanya wajib untuk aplikasi yang menargetkan SDK level 23 dan lebih tinggi (Android 6.0 Marshmallow dan Nanti).
Namun apa yang akan terjadi pada perangkat non-Samsung? Ya, karena Samsung Galaxy Apps tidak diinstal pada perangkat non-Samsung, APK berbahaya tersebut tidak akan dipasang secara diam-diam di latar belakang. Penginstal Fortnite adalah aplikasi pihak ketiga dan karenanya harus terlebih dahulu meminta pengguna untuk mengaktifkannya instalasi dari sumber yang tidak diketahui dan kemudian mengirimkan permintaan ke penginstal paket untuk menginstal yang palsu APK Fortnite. Hal ini tergantung pada pengguna yang mengetuk "Instal" ketika ditanya apakah mereka ingin menginstal aplikasi atau tidak. Ini merupakan masalah terlepas dari kenyataan bahwa ponsel non-Samsung tidak terancam oleh aplikasi berbahaya yang diinstal secara diam-diam di latar belakang. Rata-rata pengguna akan lebih bijaksana jika APK berbahaya dibuat dengan nama "Fortnite" dan ikon aplikasi Fortnite disajikan kepada mereka untuk dipasang.
Namun, ada perbedaan yang jelas antara mengeksploitasi kelemahan ini pada smartphone Samsung Galaxy dan smartphone non-Samsung. Yang pertama adalah serangan Man-in-the-Disk yang juga memanfaatkan API sistem tersembunyi untuk menginstal aplikasi apa pun secara diam-diam di dalamnya. latar belakang, dengan izin apa pun, dan tanpa perlu mengelabui pengguna agar mengira mereka memasang Fortnite palsu APK. Yang terakhir adalah a serangan Man-in-the-Disk standar yang juga dapat terjadi pada aplikasi lain yang menyimpan APK atau data penting lainnya di direktori penyimpanan eksternal, seperti yang ditunjukkan baru-baru ini Pos pemeriksaan pos. Kebetulan, berkat API Galaxy Apps yang tersembunyi, serangan Man-in-the-Disk ini lebih berbahaya pada perangkat Samsung Galaxy.
Memperbaiki Cacatnya
Sebagai penghargaan bagi Epic Games, mereka merespons dengan sangat cepat laporan di Google Issue Tracker dan meluncurkan pembaruan ke versi 2.1.0 secepat mungkin. Cara mengatasinya sederhana—cukup simpan APK Fortnite yang diunduh ke direktori penyimpanan internal Penginstal Fortnite di /data/data daripada direktori penyimpanan eksternal di /data/media. Insinyur Epic Games meminta agar kelemahan tersebut diungkapkan setelah 90 hari, meskipun Google menolak dan mengumumkan masalah tersebut kepada publik 7 hari setelah perbaikan diluncurkan. CEO Epic Games Tim Sweeney adalah bukan senang dengan waktu penyelesaian yang cepat dari laporan keamanan awal hingga pengungkapannya. Dia menawarkan pernyataan berikut kepada Android Pusat.
Epic dengan tulus menghargai upaya Google untuk melakukan audit keamanan mendalam terhadap Fortnite segera setelah kami rilis di Android, dan bagikan hasilnya dengan Epic agar kami dapat segera mengeluarkan pembaruan untuk memperbaiki kekurangan tersebut telah menemukan.
Namun, Google tidak bertanggung jawab untuk mengungkapkan secara terbuka rincian teknis dari kelemahan tersebut begitu cepat, sementara banyak instalasi yang belum diperbarui dan masih rentan.
Seorang insinyur keamanan Epic, atas desakan saya, meminta Google menunda pengungkapan publik selama 90 hari untuk memberikan waktu agar pembaruan dapat diinstal secara lebih luas. Google menolak. Anda dapat membaca semuanya di https://issuetracker.google.com/issues/112630336
Upaya analisis keamanan Google dihargai dan menguntungkan platform Android, namun perusahaan sekuat Google harus lebih banyak berlatih waktu pengungkapan yang lebih bertanggung jawab daripada ini, dan tidak membahayakan pengguna dalam upaya kontra-PR terhadap distribusi Fortnite Epic di luar Google Play.
Saya tidak dapat menjelaskan berapa banyak perangkat Samsung Galaxy yang masih memiliki Penginstal Fortnite lama. Mungkin Epic Games harus memberi tahu para pengguna ini untuk memperbarui instalasi mereka dengan mengirimkan pesan di Fortnite Mobile. Fitur Perpesanan Dalam Aplikasi baru yang bagus dari Firebase bisa melakukan triknya. Meskipun demikian, itu mungkin bukan masalah besar karena, jika pengguna dengan penginstal lama sudah mengunduh penginstal yang sah Fortnite, maka serangan MITD apa pun tidak akan berfungsi karena APK berbahaya tidak dapat diinstal di atas Fortnite yang ada instalasi. Bagaimanapun, penemuan kelemahan ini begitu awal setelah Fortnite dirilis di Android—ketika masih banyak kontroversi mengenai Epic Games. keputusan untuk membuang Google Play—tentu saja membantu argumen bahwa keputusan Epic Games ceroboh. Apakah itu niat Google di balik publikasi masalah ini begitu cepat, kita tidak akan pernah tahu.