Data Sensitif melalui Siaran WiFi di OS Android [CVE-2018-9489]

Data Sensitif melalui Siaran WiFi di OS Android [CVE-2018-9489]

Pajanan Data Sensitif melalui Siaran WiFi di OS Android [CVE-2018-9489]


Ringkasan

Sistem yang disiarkan oleh OS Android memaparkan informasi tentang perangkat pengguna ke semua aplikasi yang berjalan pada perangkat. Ini termasuk nama jaringan WiFi, BSSID, alamat IP lokal, informasi server DNS dan alamat MAC .Beberapa informasi ini (alamat MAC) tidak lagi tersedia melalui API pada Android 6 dan lebih tinggi, dan izin ekstra biasanya diperlukan untuk mengakses sisa informasi ini. Namun, dengan mendengarkan siaran ini, aplikasi apa pun di perangkat dapat menangkap informasi ini sehingga melewati pemeriksaan izin dan mitigasi yang ada.
Karena alamat MAC tidak berubah dan terikat pada perangkat keras, ini dapat digunakan untuk mengidentifikasi dan melacak perangkat Android secara unikbahkan ketika pengacakan alamat MAC digunakan. Nama jaringan dan BSSID dapat digunakan untuk geolokasi pengguna melalui pencarian terhadap basis data BSSID seperti WiGLE atau SkyHook . Informasi jaringan lainnya dapat digunakan oleh aplikasi jahat untuk lebih mengeksplorasi dan menyerang jaringan WiFi lokal.
Semua versi Android yang berjalan di semua perangkat diyakini terpengaruh termasuk garpu (seperti Amazon's FireOS untuk Kindle). Vendor ( Google ) memperbaiki masalah ini di Android P / 9 tetapi tidak berencana untuk memperbaiki versi yang lebih lama. Pengguna disarankan untuk meningkatkan ke Android P / 9 atau lebih baru. CVE-2018-9489 telah ditetapkan oleh vendor untuk melacak masalah ini. Penelitian lebih lanjut juga disarankan untuk menentukan apakah ini dieksploitasi di alam liar.

Latar Belakang

Android adalah sistem operasi open source yang dikembangkan oleh Google untuk ponsel dan tablet. Diperkirakan lebih dari dua miliar perangkat ada di seluruh dunia yang menjalankan Android. Aplikasi di Android biasanya dipisahkan oleh OS dari satu sama lain dan OS itu sendiri. Namun, interaksi antara proses dan / atau OS masih dimungkinkan melalui beberapa mekanisme.
Secara khusus, Android menyediakan penggunaan " Intents " sebagai salah satu cara untuk komunikasi antar-proses. Siaran menggunakan "Intent" memungkinkan aplikasi atau OS untuk mengirim pesan ke seluruh sistem yang dapat didengarkan oleh aplikasi lain. Sementara fungsi ada untuk membatasi siapa yang diizinkan untuk membaca pesan seperti itu, pengembang aplikasi sering mengabaikan untuk menerapkan pembatasan ini dengan benar atau menyembunyikan data sensitif. Ini mengarah pada kerentanan umum dalam aplikasi Android di mana aplikasi berbahaya yang berjalan di perangkat yang sama dapat memata-matai dan menangkap pesan yang disiarkan oleh aplikasi lain.
Mekanisme keamanan lain yang hadir di Android adalah izin . Ini adalah perlindungan yang dirancang untuk melindungi privasi pengguna. Aplikasi harus secara eksplisit meminta akses ke informasi atau fitur tertentu melalui tag " penggunaan-izin " khusus dalam manifes aplikasi (" AndroidManifest.xml ").Tergantung pada jenis izin ("normal", "berbahaya", dll ") OS dapat menampilkan informasi izin kepada pengguna selama instalasi, atau dapat meminta lagi selama waktu berjalan. Beberapa izin hanya dapat digunakan oleh aplikasi sistem dan tidak dapat digunakan oleh pengembang reguler.
Tangkapan layar izin aplikasi di Google Play dan saat run-time:
pic3pic4pic6

Rincian Kerentanan

Android OS menyiarkan informasi tentang koneksi WiFi dan antarmuka jaringan WiFi secara rutin menggunakan dua maksud: WifiManager NETWORK_STATE_CHANGED_ACTION dan WifiP2pManager, WIFI_P2P_THIS_DEVICE_CHANGED_ACTION . Informasi ini mencakup alamat MACperangkat, BSSID dan nama jaringan titik akses WiFi, dan berbagai informasi jaringan seperti rentang IP lokal , IP gerbang , dan alamat server DNS . Informasi ini tersedia untuk semua aplikasi yang berjalan di perangkat pengguna.
Meskipun aplikasi juga dapat mengakses informasi ini melalui WifiManager , ini biasanya membutuhkan izin " ACCESS_WIFI_STATE " dalam manifes aplikasi.Geolokasi melalui WiFi biasanya memerlukan izin " ACCESS_FINE_LOCATION " atau " ACCESS_COARSE_LOCATION ". Selain itu, pada Android versi 6.0 dan lebih baru , alamat MAC perangkat yang sebenarnya tidak lagi tersedia melalui API dan akan selalu mengembalikan alamat "02: 00: 00: 00: 00: 00". Namun, aplikasi yang mendengarkan siaran sistem tidak memerlukan izin ini sehingga memungkinkan informasi ini ditangkap tanpa sepengetahuan pengguna dan alamat MAC sebenarnya ditangkap bahkan di Android 6 atau lebih tinggi.
Cuplikan layar aplikasi yang mencoba mendapatkan alamat MAC di Android 7.0:
pic7
Kami melakukan pengujian menggunakan uji coba perangkat seluler mulai dari berbagai jenis perangkat keras dan versi Android. Semua perangkat dan versi Android yang diuji mengkonfirmasikan perilaku ini, meskipun beberapa perangkat tidak menampilkan alamat MAC yang sebenarnya dalam maksud “ NETWORK_STATE_CHANGED_ACTION ” tetapi mereka masih melakukannya dalam maksud “ WIFI_P2P_THIS_DEVICE_CHANGED_ACTION ”. Kami juga menguji setidaknya satu garpu (Amazon's FireOS for the Kindle) dan perangkat tersebut menampilkan perilaku yang sama.
Karena alamat MAC tidak berubah dan terikat pada perangkat keras, ini dapat digunakan untuk mengidentifikasi dan melacak perangkat Android secara unik bahkan ketika pengacakan alamat MAC digunakan. Nama jaringan dan / atau BSSID dapat digunakan untuk geolokasi pengguna melalui pencarian terhadap database seperti WiGLE atau SkyHook . Informasi jaringan lainnya dapat digunakan oleh aplikasi jahat untuk lebih mengeksplorasi dan menyerang jaringan WiFi lokal.

Langkah-langkah untuk Replikasi oleh Pengguna Biasa

Untuk pengguna perangkat Android, Anda dapat mereplikasi masalah ini sebagai berikut:
  1. Instal aplikasi "Siaran Broadcast Internal" yang dikembangkan oleh Vilius Kraujutis dari Google Play.
  2. Buka aplikasi dan ketuk "Mulai" untuk memantau siaran.
  3. Amati siaran sistem, khususnya "android.net.wifi.STATE_CHANGE" dan "android.net.wifi.p2p.THIS_DEVICE_CHANGED".
Contoh screenshot:
pic1pic2

Langkah-langkah untuk Replikasi oleh Pengembang melalui Kode

Untuk mereplikasi hal ini dalam kode, buat penerima Broadcast dan daftarkan untuk menerima tindakan ini ("android.net.wifi.WindManager.NETWORK_STATE_CHANGED_ACTION" dan "android.net.wifi.WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION").Kode contoh muncul di bawah:
Kelas publik MainActivity memperluas Kegiatan { @Mengesampingkan public void onCreate (Bundle state) { Filter IntentFilter = new IntentFilter ();
filter.addAction ( android.net.wifi.WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction ( android.net.wifi.WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION); registerReceiver (penerima, filter); }
BroadcastReceiver receiver = BroadcastReceiver baru () { @Mengesampingkan public void onReceive (Konteks konteks, maksud Intent) { Log.d (intent.toString ()); …. } };

Respon dan Mitigasi Vendor

Vendor memperbaiki masalah ini di Android P / 9 . Karena ini akan menjadi perubahan API yang melanggar, vendor tidak berencana untuk memperbaiki versi Android sebelumnya. Pengguna disarankan untuk meningkatkan ke Android P / 9atau lebih baru.

Referensi

ID Android # 77286245 
CVE ID: CVE-2018-9489 
Google Bug # 77236217 
GitHub: Siaran Broadcast Internal

Kredit

Kami ingin mengucapkan terima kasih kepada Vilius Kraujutis untuk mengembangkan aplikasi Pemantau Broadcast Internal dan membuat kode sumber tersedia di GitHub.
Penasihat ini ditulis oleh Yakov Shafranovich.

0 Response to "Data Sensitif melalui Siaran WiFi di OS Android [CVE-2018-9489]"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel