Kerentanan Janus memungkinkan penyerang memodifikasi aplikasi tanpa memengaruhi tanda tangan mereka. Itu ditemukan oleh GuardSquare dan telah diperbaiki oleh Google.
Android diinstal pada sejumlah besar perangkat, dan itu menjadikannya target penyerang jahat. Kerentanan dalam sistem operasi seluler Google terus ditemukan setiap bulannya, namun kabar baiknya adalah Google biasanya rajin memperbaikinya dalam patch keamanan reguler yang kemudian ditawarkan kepada OEM, yang kemudian mengirimkannya perangkat.
Baru-baru ini, peneliti keamanan menemukan kerentanan yang menipu pengguna agar mengizinkan penyerang merekam layar perangkat mereka. Eksploitasi khusus tersebut telah diperbaiki di Android Oreo, namun para analis di Lapangan Penjaga baru-baru ini melaporkan kerentanan serius lainnya yang memengaruhi aplikasi Android yang ditandatangani oleh skema tanda tangan lama.
Lapangan PenjagaLaporan itu menyatakan bahwa Januskerentanan (CVE-2017-13156) di Android memungkinkan penyerang mengubah kode dalam aplikasi tanpa memengaruhi tanda tangan mereka. Laporan tersebut selanjutnya mengatakan bahwa akar kerentanannya adalah bahwa suatu file dapat berupa file APK yang valid dan file DEX yang valid pada saat yang bersamaan.
Janus memanfaatkan fakta bahwa byte tambahan tidak diperhatikan dalam file APK dan file DEX. Itu Lapangan Penjaga Laporan menjelaskan bahwa file APK adalah arsip ZIP yang dapat berisi byte sembarang di awal, sebelum, dan di antara entri ZIP-nya. Skema tanda tangan JAR hanya memperhitungkan entri ZIP, mengabaikan byte tambahan saat menghitung atau memverifikasi tanda tangan aplikasi.
Selanjutnya dijelaskan bahwa file DEX, di sisi lain, dapat berisi byte sembarang di bagian akhir - setelah bagian reguler dari string, kelas, definisi metode, dll. Oleh karena itu, sebuah file dapat menjadi file APK yang valid dan file DEX yang valid secara bersamaan.
Lapangan Penjaga juga menyebutkan bahwa elemen kunci dari kerentanan adalah fitur "tidak berbahaya" dari mesin virtual Dalvik/ART. Laporan tersebut menyatakan bahwa secara teori, runtime Android memuat file APK, mengekstrak file DEX-nya, dan kemudian menjalankan kodenya. Namun, dalam praktiknya, mesin virtual (VM) dapat memuat dan mengeksekusi file APK dan file DEX. Masalahnya adalah ketika VM mendapatkan file APK, ia masih melihat byte ajaib di header untuk menentukan jenis filenya: DEX atau APK. Saat menemukan header DEX, ia memuat file sebagai file DEX. Jika tidak menemukan header, ia memuat file sebagai file APK yang berisi entri zip dengan file DEX. Oleh karena itu, ia dapat salah menafsirkan file DEX/APK ganda.
Lapangan Penjaga mengatakan bahwa penyerang dapat memanfaatkan fitur dualitas VM ini untuk menambahkan file DEX berbahaya ke file APK normal tanpa memengaruhi tanda tangannya. Runtime Android akan menerima file APK sebagai pembaruan valid ke versi aplikasi sebelumnya yang sah, namun Dalvik VM akan memuat kode dari file DEX, yang telah dimasukkan dengan kode berbahaya.
Biasanya, setiap kali pengguna menginstal versi aplikasi yang diperbarui, tanda tangan aplikasi tersebut diverifikasi oleh runtime Android untuk memastikan bahwa aplikasi tersebut cocok dengan versi yang lebih lama. Jika verifikasinya positif, aplikasi yang diperbarui mendapatkan izin yang telah diberikan kepada aplikasi asli. Dengan cara ini, penyerang dapat menggunakan kerentanan Janus untuk melewati proses verifikasi tanda tangan dan menginstal kode yang belum terverifikasi pada perangkat pengguna yang tidak menaruh curiga.
Yang lebih buruk lagi adalah kode yang belum terverifikasi ini mungkin mendapatkan akses ke izin yang kuat. Hal ini menimbulkan beberapa kemungkinan yang parah. Lapangan Penjaga menyatakan:
“Seorang penyerang dapat mengganti aplikasi tepercaya dengan hak istimewa tinggi (aplikasi sistem, misalnya) dengan pembaruan yang dimodifikasi untuk menyalahgunakan izinnya. Tergantung pada aplikasi yang ditargetkan, hal ini memungkinkan peretas mengakses informasi sensitif yang tersimpan di perangkat atau bahkan mengambil alih perangkat sepenuhnya. Alternatifnya, penyerang dapat meneruskan tiruan aplikasi sensitif yang dimodifikasi sebagai pembaruan yang sah [yang] dapat terlihat dan berperilaku seperti aplikasi asli tetapi menyuntikkan perilaku berbahaya."
Perusahaan menambahkan bahwa hingga saat ini, mereka belum melihat adanya aplikasi yang mengeksploitasi Janus di alam liar. Kabar baik lainnya adalah kerentanan ini mengharuskan pengguna menginstal pembaruan berbahaya dari sumber di luar Google Play Store. Oleh karena itu, pengguna yang membatasi pemasangan aplikasi di Play Store akan terlindungi.
Kerentanan Janus memengaruhi perangkat yang menjalankan Android 5.0+. Aplikasi yang telah ditandatangani dengan skema tanda tangan APK v1 akan terpengaruh. APK yang ditandatangani dengan skema tanda tangan v2 dilindungi dari kerentanan. Hal ini mengharuskan APK berjalan pada perangkat yang mendukung skema tanda tangan terbaru (Android 7.0 dan yang lebih baru). Skema v2 dilindungi karena tidak seperti skema v1, skema ini mempertimbangkan semua byte dalam file APK.
“Aplikasi versi lama dan aplikasi baru yang berjalan di perangkat lama tetap rentan. Pengembang setidaknya harus selalu menerapkan skema tanda tangan v2,” Lapangan Penjaga negara bagian.
Lapangan Penjaga melaporkan masalah ini ke Google pada tanggal 31 Juli 2017, dan menerima pengakuan pada hari yang sama. Laporan perusahaan mengatakan bahwa Google merilis patch kepada mitranya pada bulan November, dan mempublikasikan bug tersebut (CVE-2017-13156) di Buletin Keamanan Android pada tanggal 4 Desember 2017. Kerentanannya telah telah diperbaiki pada patch keamanan Android Desember 2017. Secara terpisah, aplikasi F-Droid dari repositori resminya telah dipastikan aman. Terakhir, telah dipastikan bahwa kerentanan telah ditambal APKCermin.
Sumber: GuardSquare