Penjelasan Eksploitasi StrandHogg 2.0

StrandHogg 2.0 adalah kerentanan Android baru yang berbahaya. Berikut pengaruhnya terhadap pengguna dan cara pengembang melindungi aplikasi mereka dari serangan tersebut.

Sekarang jam 10 malam. Tahukah Anda Dimana Kegiatan Anda? Ada kerentanan baru yang dapat dieksploitasi pada jutaan perangkat Android, dan ini juga cukup buruk. Singkatnya, cacat desain ini memungkinkan penyerang untuk menampilkan Aktivitas (halaman) mereka sendiri di atas aplikasi lain, sehingga berpotensi membingungkan pengguna untuk memberikan data pribadi mereka. Kerentanan tersebut dijuluki StrandHogg 2.0 dan baru-baru ini diungkapkan oleh Promosi, sebuah perusahaan keamanan Norwegia.

Kerentanan StrandHogg 2.0 secara teoritis mempengaruhi semua perangkat Android yang menjalankan versi Android lama seperti Honeycomb (3.0) dan hingga Android 9 Pie (9.0). Berdasarkan statistik distribusi versi Android terbaru, itu artinya sekitar 91,8% dari semua perangkat Android rentan terhadap StrandHogg 2.0. Kerentanan telah ditetapkan

CVE-2020-0096 dan diberi a tingkat keparahan “kritis.” Itu tidak memerlukan izin khusus untuk bekerja dan dapat berfungsi hampir seluruhnya tanpa interaksi pengguna. Yang harus dilakukan pengguna hanyalah membuka aplikasi dengan kode berbahaya yang tersembunyi di dalamnya, dan aplikasi tersebut rentan terhadap eksploitasi.

Promon berbaik hati mengirimkan bukti konsep aplikasi dan kode sumbernya kepada kami sehingga kami dapat melakukan yang terbaik menjelaskan cara kerja eksploitasi, mengapa hal ini penting bagi pengguna, dan bagaimana pengembang dapat melindungi aplikasi mereka menentangnya.


Bagaimana itu bekerja

Katakanlah Anda menggunakan Gmail dan mengeklik tautan web. Jika Anda membuka layar aplikasi terbaru, Anda mungkin memperhatikan bahwa laman web tampak "di dalam" Gmail. Pratinjau menampilkan situs web, tetapi ikon dan nama aplikasi masih dari Gmail. Ini adalah sesuatu yang terjadi ketika suatu aplikasi/Aktivitas meluncurkan aplikasi/Aktivitas lain dalam tugas yang sama. Sekarang bayangkan Anda tidak sengaja membuka tautan itu. Bagi Anda, sepertinya ini hanyalah bagian dari aplikasi Gmail. Ini adalah perilaku yang dieksploitasi oleh StrandHogg 2.0.

Kita harus mengabaikan beberapa detail di sini, tapi inilah kira-kira cara kerja eksploitasi ini. Untuk hal berikut, asumsikan penyerang ingin mendapatkan login Gmail pengguna.

  1. Pengguna mengunduh aplikasi berbahaya (tentu saja, tanpa menyadarinya) dan membukanya.
  2. Di latar belakang, aplikasi membuka Gmail, menempatkan Aktivitas login yang mirip di atasnya, lalu meluncurkan Aktivitas lain.
  3. Pengguna membuka Gmail dan melihat apa yang tampak seperti layar login Gmail namun sebenarnya adalah Aktivitas phishing penyerang.

Aktivitas terakhir yang diluncurkan pada langkah 2 dapat berupa apa saja yang menghindari kecurigaan. Aplikasi dapat memalsukan kerusakan dan kembali ke layar utama, atau dapat membuka Aktivitas utamanya seolah-olah tidak terjadi apa-apa. Satu-satunya hal mencurigakan yang mungkin dilihat pengguna adalah sekumpulan animasi pembuka saat semua Aktivitas diluncurkan. Bagian terburuknya: Gmail bahkan tidak terlihat seperti dibuka.

Sumber: Promon

Tentu saja, penyerang dapat melakukan lebih dari sekadar menampilkan layar login palsu. Sebaliknya, aplikasi berbahaya dapat menampilkan permintaan izin, menipu pengguna agar memberikan izin yang tidak diinginkan. Meskipun meminta izin khusus seperti Aksesibilitas mungkin membuat pengguna curiga, hal seperti Akses Penyimpanan mungkin menimbulkan banyak kerusakan.


Bagian Teknis

Bagian selanjutnya adalah ikhtisar tingkat tinggi tentang cara kerja StrandHogg 2.0. Promon tidak akan merilis detail lengkapnya selama beberapa bulan ke depan, jadi kami tidak dapat membagikan secara pasti bagaimana eksploitasi ini diterapkan. Namun ada beberapa detail teknis yang bisa kita bicarakan.

Singkatnya, StrandHogg 2.0 membajak Android Context.startActivities() Metode API, menggunakan tiga Intent.

  • Intent pertama adalah yang diluncurkan, dalam contoh kita, Gmail. Itu ditandai dengan Intent.FLAG_ACTIVITY_NEW_TASK.
  • Niat kedua adalah niat jahat. Dalam contoh kita, ini untuk Aktivitas login yang mirip. Intent ini tidak memiliki tanda.
  • Niat ketiga adalah gangguan. Hal ini memastikan pengguna tidak curiga terhadap Gmail yang hanya dibuka secara acak, bukan aplikasi yang mereka ketuk (yaitu aplikasi yang meluncurkan serangan). Itu ditandai dengan Intent.FLAG_ACTIVITY_NEW_TASK.

Semua Intent ini kemudian diteruskan dalam array ke startActivities() metode.

Kurangnya tanda Intent yang kedua adalah kuncinya di sini. Dengan melakukan hal ini, pada dasarnya kami baru saja mereplikasi contoh Gmail di atas. Secara teknis, tugasnya adalah milik Gmail, tetapi Aktivitas paling atas adalah milik penyerang. Saat pengguna mengeklik ikon layar beranda Gmail, Aktivitas penyerang akan ditampilkan, bukan Gmail.


Bukti dari konsep

Dengan informasi yang dikirimkan Promon kepada kami, kami dapat mereplikasi bukti konsep mereka. Berikut rekaman layar dari Samsung Galaxy Note8 yang menjalankan Android 9 Pie yang menunjukkan aksinya.


Teknik dan Permasalahan Mitigasi

Sekarang, hanya mereplikasi kode di atas tidak akan berfungsi. Ini bukan contoh yang lengkap, dan ada beberapa hal lain yang harus dilakukan penyerang agar berhasil, yang tidak dapat kami bagikan. Namun serangan ini tidak terlalu sulit untuk Anda tebak, dan itulah yang membuat serangan ini sangat berbahaya. StrandHogg 2.0 adalah eksploitasi yang relatif mudah untuk diterapkan, dan sulit untuk dimitigasi.

Mitigasi tidak bisa hanya melibatkan memasukkan semua aplikasi yang menggunakannya ke dalam daftar hitam startActivities(), karena ada banyak kegunaan yang sah untuk itu. Juga sangat sulit untuk mengotomatiskan algoritma pendeteksiannya. Pengembang jahat dapat menggunakan segala macam trik untuk membuat penerapan StrandHogg 2.0 secara efektif tidak terlihat oleh layanan seperti Google Play Protect. StrandHogg 1.0 mengharuskan penyerang menambahkan atribut di AndroidManifest.xml aplikasi berbahaya, yang relatif mudah dideteksi. StrandHogg 2.0, di sisi lain, berfungsi sepenuhnya di Java/Kotlin.

Dengan mempertimbangkan kebingungan, refleksi, dan bahkan gaya pengkodean yang berbeda, tampaknya tidak praktis untuk mendeteksi aplikasi yang menggunakan eksploitasi ini secara otomatis. Terlebih lagi, jika pengguna menjadi sasaran serangan StrandHogg 2.0, mereka mungkin tidak mengetahuinya. Jika Anda membuka Gmail dan melihat layar loginnya, Anda mungkin mengira sesi Anda telah kedaluwarsa dan memasukkan detail login Anda tanpa berpikir dua kali.

Saat kami menghubungi Google untuk meminta tanggapan, juru bicara memberikan pernyataan berikut:

“Kami menghargai kerja para peneliti, dan telah merilis perbaikan untuk masalah yang mereka identifikasi. Selain itu, Google Play Protect mendeteksi dan memblokir aplikasi berbahaya, termasuk aplikasi yang menggunakan teknik ini."

Kedengarannya bagus, dan mudah-mudahan ini memiliki setidaknya beberapa efek terhadap serangan StrandHogg 2.0. Namun perlu diperhatikan bahwa Google Play Protect tidak mendeteksi aplikasi bukti konsep kami sebagai aplikasi berbahaya, bahkan setelah melakukan pemindaian manual.

Promon mengatakan bahwa mereka "belum melihat adanya malware nyata yang memanfaatkan kerentanan StrandHogg 2.0," namun tidak ada jaminan bahwa ini adalah pertama kalinya eksploitasi tersebut ditemukan. Oleh karena itu, Promon merekomendasikan agar pengembang terus melindungi aplikasi mereka dengan mengatur Aktivitas peluncur mereka launchMode bendera ke salah satunya singleTask atau singleInstance. Salah satu dari tanda ini akan mencegah injeksi tugas, yang merupakan hal yang diandalkan oleh StrandHogg 2.0. Namun, membuat Aktivitas Anda menggunakan salah satu tanda ini dapat menyebabkan masalah pada alur aplikasi tertentu, sehingga hal ini tidak selalu diinginkan.

Promon juga mempromosikan produknya sendiri "Perlindungan Dalam Aplikasi oleh Promon SHIELD" yang terdengar seperti perpustakaan yang dapat diterapkan oleh pengembang aplikasi untuk memantau tugas-tugas dalam proses aplikasi Anda untuk memeriksa ketidakteraturan sisipan. Karena tidak ada strategi mitigasi pengembang atau pengguna yang benar-benar efektif, sangat penting bagi produsen untuk menerapkan patch untuk memperbaiki masalah ini secepatnya.

Untungnya, Promon mengikuti pedoman pengungkapan yang bertanggung jawab sebelum mempublikasikan eksploitasi ini (dan ini masih belum sepenuhnya dipublikasikan—Promon menunggu 90 hari sebelum mengungkapkan sepenuhnya bagaimana StrandHogg 2.0 bekerja). Google telah melakukan backport patch untuk eksploitasi ini ke Android 8.0 Oreo, Android 8.1 Oreo, dan Android 9 Pie dengan Level Patch Keamanan Android (SPL) Mei 2020. Pengguna yang menggunakan Android 10 dan yang lebih baru tidak rentan, meskipun kami tidak sepenuhnya yakin mengapa hal tersebut bisa terjadi. Ini mungkin ada hubungannya dengan pembatasan baru Android 10 mengenai peluncuran Aktivitas dan bagaimana Google mengintegrasikannya ke dalam tumpukan tugas. Promon mengatakan bahwa "di Android 10, serangan tersebut sama sekali tidak efektif, dan aktivitas dipecah menjadi beberapa tugas berbeda dan menjadi tumpukan tugas terpisah sesuai dengan adb shell dumpsys activity activities."

Jika pabrikan perangkat Anda masih menyediakan pembaruan keamanan (Anda dapat membaca lebih lanjut bagaimana proses patch keamanan bekerja di sini), Anda harus mengganggu mereka untuk mendapatkan pembaruan sesegera mungkin. Jika tidak, Anda hanya perlu berhati-hati dalam memilih aplikasi mana yang Anda unduh dan jalankan (walaupun Anda tetap harus melakukannya).

Untuk detail lebih lanjut dan kasus penggunaan StrandHogg 2.0, lihat pengumuman resmi di situs Promon. Untuk pengembang ROM khusus, Anda dapat menemukan komitmen AOSP yang relevan untuk mencegah serangan StrandHogg 2.0 Di Sini Dan Di Sini.


Garis Waktu Pengungkapan

Berikut adalah garis waktu pengungkapan yang dibagikan Promon dalam dokumen StandHogg 2.0-nya:

  • 4 Desember 2019 – Melaporkan masalah ke Google
  • 4 Desember 2019 – Berbagi «aplikasi berbahaya» PoC dan video dengan Google
  • 4 Desember 2019 – Google mengonfirmasi menerima laporan tersebut
  • 9 Desember 2019 – Google menetapkan tingkat keparahan temuan sebagai “Kritis”
  • 9 Desember 2019 – Google mengonfirmasi bahwa mereka dapat mereproduksi masalah tersebut
  • 14 Februari 2020 – Kami memberi tahu Google bahwa pengungkapan 90 hari semakin dekat pada awal Maret, dan meminta status di pihak mereka
  • 14 Februari 2020 – Google menjawab bahwa bulan April adalah waktu paling cepat untuk melakukan perbaikan
  • 14 Februari 2020 – Kami memberi tahu Google bahwa kami sedang melakukan mitigasi
  • 14 Februari 2020 – Google merespons. Mereka sedang melakukan upaya remediasi, dan menanyakan apakah kami dapat menyampaikan mitigasi apa yang kami rekomendasikan
  • 17 Februari 2020 – Kami memberi tahu Google bahwa kami dapat menunda pengungkapan hingga April. Kami meminta nomor CVE
  • 17 Februari 2020 – Kami berbagi strategi mitigasi kami, serta bagaimana kami membayangkan mitigasi platform
  • 23 Maret 2020 – Google merespons dengan ID CVE (CVE-2020-0096)
  • 23 Maret 2020 – Google menjawab bahwa ketersediaan umum perbaikan untuk Android akan tersedia pada bulan Mei
  • 23 Maret 2020 – Google bertanya apakah kami akan mempertimbangkan untuk menunda pengungkapan hingga bulan Mei
  • 27 Maret 2020 – Kami menjawab bahwa kami akan menunda pengungkapan hingga bulan Mei
  • 22 April 2020 – Google memberi tahu kami bahwa Buletin Keamanan Mei dijadwalkan berisi patch untuk kerentanan