Menguji dan mendebug fitur

Kategori OWASP: MASVS-CODE: Kualitas Kode

Ringkasan

Merilis build produksi yang menyertakan fitur Pengujian atau Debug dapat berdampak negatif pada postur keamanan aplikasi. Fungsi ini digunakan untuk membantu developer menemukan dan mengidentifikasi bug dalam kasus penggunaan aplikasi yang dimaksud sebelum, atau setelah rilis versi baru, dan tidak boleh diakses secara publik.

Contoh fitur Pengujian/Debug adalah:

  • Menu tersembunyi
  • Opsi untuk mengaktifkan log debug
  • Opsi untuk mengubah alur aplikasi
  • Opsi untuk mengakali proses pembayaran atau berlangganan
  • Opsi untuk mengakali autentikasi
  • Pengujian untuk aktivitas khusus aplikasi

Semua yang disebutkan sebelumnya dapat dimanfaatkan oleh pengguna berbahaya untuk mengubah alur yang diinginkan aplikasi atau mengambil informasi sistem untuk menyesuaikan serangan lebih lanjut.

Risiko yang timbul dengan membiarkan fitur Pengujian atau Debug terekspos dapat bervariasi menurut tindakan yang terkait dengan kemampuan debug itu sendiri.

Area berisiko lain untuk aplikasi adalah atribut android:debuggable yang ditetapkan dalam elemen AndroidManifest.xml <application>. Seperti yang dilaporkan dalam artikel android:debuggable, men-deploy aplikasi produksi dengan kumpulan nilai yang disebutkan di atas, memungkinkan pengguna berbahaya mengakses resource administratif yang seharusnya tidak dapat diakses.

Dampak

Pengguna berbahaya yang berinteraksi dengan fitur Pengujian atau Debug dalam build produksi dapat menyebabkan hasil yang tidak diharapkan. Dampak dari tindakan apa pun berkaitan langsung dengan izin yang ditetapkan pada fitur. Makin tinggi izin, makin tinggi dampak yang dapat ditimbulkan oleh eksploitasi aktif. Fungsi tersebut dalam aplikasi dapat digunakan untuk mengakali sejumlah perlindungan, mengabaikan penghalang konten berbayar, mengambil informasi terkait sistem atau pengguna, atau memicu aktivitas pengujian.

Mitigasi

Menghindari penggunaan komponen debug

Fungsi pengujian atau debug tidak boleh diterapkan dalam komponen aplikasi produksi seperti aktivitas, penerima siaran, layanan, atau penyedia konten karena, jika diekspor, dapat dijalankan oleh proses lain di perangkat. Menyetel komponen debug sebagai tidak diekspor (android:exported="false" ) bukanlah perlindungan yang valid untuk kemampuan tersebut karena perangkat yang telah di-root masih dapat menjalankannya melalui alat Android Debug Bridge (ADB) jika opsi debug diaktifkan.

Membatasi fitur debug atau pengujian pada build staging

Eksekusi fungsi pengujian atau debug apa pun dalam aplikasi harus dibatasi hanya untuk serangkaian build Staging yang dibatasi agar hanya developer yang dapat men-debug atau menguji fitur aplikasi dalam lingkungan yang terkontrol. Hal ini dapat diraih dengan membuat build pengujian atau debug khusus aplikasi dan pengujian berinstrumen lanjutan untuk aplikasi tersebut guna memastikan bahwa setiap fitur pengujian atau debug dijalankan pada versi yang terisolasi.

Mengimplementasikan pengujian UI otomatis

Saat menjalankan pengujian pada aplikasi, pilih pengujian UI otomatis karena dapat diulang, dapat dijalankan di lingkungan terpisah, dan tidak rentan terhadap kesalahan manusia.

Referensi