Jutaan perangkat Android berisiko tinggi terhadap kerentanan kritis yang baru diungkapkan yang memungkinkan penyerang untuk secara diam-diam menimpa aplikasi sah yang terpasang di smartphone dengan versi berbahaya mereka.
Dijuluki Janus, kerentanan memungkinkan penyerang untuk memodifikasi kode aplikasi Android tanpa mempengaruhi sertifikat verifikasi tanda tangan mereka, yang pada akhirnya memungkinkan mereka mendistribusikan pembaruan berbahaya untuk aplikasi yang sah, yang terlihat dan berfungsi sama dengan aplikasi asli.
Kerentanan (CVE-2017-13156) ditemukan dan dilaporkan ke Google oleh periset keamanan dari GuardSquare musim panas ini dan telah diperbaiki oleh Google.
Namun yang mengkhawatirkan adalah mayoritas pengguna Android tidak akan menerima perbaikan ini untuk beberapa bulan ke depan, sampai produsen perangkat mereka (OEM) merilis pembaruan khusus, yang tampaknya menyebabkan sejumlah besar pengguna smartphone rentan terhadap peretasan.
Kerentanan tersebut memengaruhi aplikasi yang menggunakan skema tanda tangan APK v1 yang terpasang pada perangkat yang menjalankan Android versi 5 (Lollipop) dan 6 (Marshmallow).
Bagaimana Kerentanan Android Janus Bekerja?
Kerentanan berada di jalan Android menangani instalasi APK untuk beberapa aplikasi, sehingga memungkinkan untuk menambahkan byte kode tambahan ke file APK tanpa mempengaruhi tanda tangan aplikasi.
Sebelum melanjutkan, kamu perlu mengetahui beberapa dasar tentang file APK.
File APK yang valid adalah jenis file arsip, seperti Zip, yang mencakup kode aplikasi, sumber daya, aset, tanda tangan, sertifikat, dan file manifest.
Versi sebelumnya dari sistem operasi Android 5.0 (Lollipop) dan 6.0 (Marshmallow) juga mendukung proses mesin virtual yang membantu mengeksekusi arsip APK yang berisi versi kode dan file aplikasi terkompilasi, yang dikompres dengan format file DEX (Dalvik EXecutable).
Saat memasang aplikasi Android atau pembaruannya, perangkat akan memeriksa informasi header APK untuk menentukan apakah arsip berisi kode dalam file DEX yang dikompresi.
Jika header mengatakan arsip APK berisi file DEX, proses mesin virtual mendekompilasi kode yang sesuai dan menjalankannya; Jika tidak, kode tersebut akan menjalankan kode sebagai file APK biasa.
Ternyata arsip APK bisa berisi file DEX serta kode aplikasi biasa secara bersamaan, tanpa mempengaruhi validitas dan tanda tangan.
Periset menemukan bahwa kemampuan untuk menambahkan byte kode tambahan karena kurangnya pengecekan integritas file dapat memungkinkan penyerang untuk menambahkan kode berbahaya yang dikompilasi dalam format DEX ke dalam arsip APK yang berisi kode yang sah dengan tanda tangan yang valid, yang akhirnya menipu proses instalasi aplikasi untuk mengeksekusi kedua kode tersebut ke perangkat yang ditargetkan tanpa terdeteksi.
Dengan kata lain, peretasan tidak memerlukan penyerang untuk memodifikasi kode aplikasi yang sah (yang membuat tanda tangan tidak valid) – sebagai gantinya, kerentanan memungkinkan pembuat malware hanya menambahkan beberapa kode berbahaya tambahan ke aplikasi asli.
Skenario Serangan
Setelah membuat versi ilegal dari aplikasi yang sah, peretas dapat mendistribusikannya menggunakan berbagai vektor serangan, termasuk email spam, toko aplikasi pihak ketiga yang mengirimkan aplikasi dan pembaruan palsu, social engineering, dan bahkan serangan man-in-the-middle.
Menurut para peneliti, mungkin “relatif mudah mengelabui beberapa pengguna karena aplikasi masih bisa terlihat persis seperti aplikasi asli dan memiliki tanda tangan yang tepat.”
Saya menemukan serangan man-in-the-middle lebih menarik, karena hal itu memungkinkan peretas untuk mendorong instalasi berbahaya yang dirancang untuk menerima pembaruannya melalui koneksi HTTP yang tidak terenkripsi.
“Ketika pengguna mendownload update aplikasi, runtime Android membandingkan tandatangannya dengan tanda tangan dari versi aslinya. Jika tanda tangan cocok, runtime Android akan menginstal pembaruan,” GuardSquare menjelaskan.
“Aplikasi yang diperbarui mewarisi hak akses dari aplikasi asli. Oleh karena itu, penyerang dapat menggunakan kerentanan Janus untuk menyesatkan proses pembaruan dan mendapatkan kode yang tidak terverifikasi dengan izin kuat yang terpasang pada perangkat penggun.”
“Bagi para ahli, alat reverse engineering yang umum tidak menunjukkan kode injeksinya. Pengguna harus selalu waspada saat mendownload aplikasi dan update,” tambah perusahaan keamanan tersebut.
Karena kerentanan ini tidak mempengaruhi Android 7 (Nougat) dan yang terbaru, yang mendukung skema tanda tangan APK versi 2, pengguna yang menjalankan versi Android yang lebih lawas sangat dianjurkan untuk meningkatkan versi OS perangkat mereka (jika tersedia).
Ini sangat disayangkan, namun jika pabrikan perangkat tidak menawarkan patch keamanan atau versi Android terbaru, sebaiknya tidak menginstal aplikasi dan pembaruan dari luar Google Play Store untuk meminimalkan risiko peretasan.
Periset juga menyarankan agar pengembang Android selalu menerapkan skema tanda tangan v2 untuk memastikan aplikasi mereka tidak dapat dirusak.