Memetakan Pengujian Keamanan Mobile ke OWASP MASVS
OWASP MASVS menetapkan persyaratan verifikasi keamanan aplikasi mobile. OWASP MASTG memberi panduan pengujian serta pengetahuan platform. Keduanya tidak menggantikan pemodelan ancaman, review otorisasi server, atau persetujuan rilis. Pemetaan yang berguna berawal dari aset dan aksi pengguna, lalu menghubungkannya ke kontrol MASVS, uji yang dapat diulang, pemilik, dan bukti yang dapat diperiksa ulang.
Jangan memberi status lulus hanya karena scanner tidak menemukan temuan. Binary dapat bebas secret yang jelas, tetapi data tetap bocor melalui backup, menerima sertifikat buatan pengguna, atau salah mengotorisasi activity yang diekspor. Satu kontrol juga dapat membutuhkan bukti Android, iOS, API, dan pipeline rilis. Catat ruang lingkup dan build target sebelum pengujian: application ID, version code, commit, varian, perangkat atau emulator, peran akun uji, endpoint, serta tanggal.
Susun register kontrol
Buat satu baris untuk setiap kontrol yang masuk ruang lingkup. MASVS-STORAGE-2 menilai perlindungan data sensitif saat tersimpan; MASVS-NETWORK-1 menilai komunikasi jaringan aman. Baris harus menyebut aset yang dilindungi, bukan hanya kategori framework.
| Kontrol MASVS | Aktivitas uji | Artefak selesai | Pemilik | Penerimaan lulus |
|---|---|---|---|---|
| MASVS-STORAGE-1 | Telusuri package, preference, database, file, log, dan backup untuk data terklasifikasi. | Inventaris storage berisi path, klasifikasi, dan tangkapan layar. | Lead Android/iOS | Tidak ada nilai sensitif tersimpan di luar storage terlindungi yang disetujui. |
| MASVS-STORAGE-2 | Telusuri enkripsi dan siklus hidup key; uji instal ulang, backup, restore, perubahan lock perangkat. | Sampel ciphertext, jejak penggunaan key, hasil restore, catatan uji. | Pemilik keamanan mobile | Akses data dan key sesuai siklus hidup terdokumentasi. |
| MASVS-CRYPTO-1 | Periksa algoritme, mode, sumber acak, ukuran key, dan crypto kustom. | Rekam review kode dan daftar versi dependensi. | Pemilik kriptografi aplikasi | Tidak ada konstruksi kriptografi lemah, improvisasi, atau tanpa dokumentasi. |
| MASVS-AUTH-2 | Uji autentikasi lokal sebelum tampilan atau aksi sensitif, termasuk cancel dan background. | Rekaman layar, kasus uji, hasil transisi state. | Pemilik keamanan produk | Aksi terlindungi tidak selesai tanpa reautentikasi yang diwajibkan. |
| MASVS-NETWORK-1 | Intersep dan ubah traffic; uji HTTP, sertifikat kedaluwarsa, host salah, dan user CA. | Capture proxy, ekstrak konfigurasi APK, matriks perangkat/versi. | Pemilik jaringan Android | Traffic rilis memakai validasi TLS yang dimaksud; tidak ada cleartext yang tidak disetujui. |
| MASVS-NETWORK-2 | Review pinning bila model risiko memerlukannya; simulasi rotasi sertifikat utama. | Inventaris pin, latihan rotasi, review expiry. | Pemilik layanan | Kebijakan pin punya backup serta rencana pemulihan yang diuji, atau keputusan tidak memakai pin didokumentasikan. |
| MASVS-PLATFORM-1 | Inventaris component, intent, deep link, dan bridge WebView; coba pemanggilan tak tepercaya. | Inventaris manifest dan hasil pemanggilan. | Pemilik platform Android | Component sensitif menolak pemanggil tak tepercaya dan memvalidasi input. |
| MASVS-CODE-2 | Review dependensi, target SDK, flag debug, serta varian build terkait keamanan. | SBOM/laporan dependensi, manifest rilis, rekam CI. | Pemilik build | Artefak rilis sesuai setting build dan kebijakan dependensi yang disetujui. |
Bukti harus memiliki lokasi, checksum atau ID build tak berubah, pengumpul, tanggal pengumpulan, dan hasil. Tangkapan layar saja lemah bila tidak membuktikan identitas build atau input uji. Simpan output perintah, cuplikan manifest hasil dekompilasi, metadata request yang disamarkan, dan referensi kode. Jangan memasukkan data pengguna ke artefak.
Jalankan uji menurut ketergantungan
Mulai dari arsitektur: identifikasi token akun, cache lokal, key penandatanganan, aksi deep link, API, SDK pihak ketiga, dan data yang melewati batas kepercayaan. Pilih profil dan kontrol MASVS yang relevan. Uji konfigurasi statis sebelum perilaku runtime: bandingkan source manifest dan resource dengan APK rilis terpasang karena flavor dapat mengubah kebijakan efektif.
Untuk storage, isi penanda uji non-produksi, lalu cari pada sandbox aplikasi, lokasi eksternal, backup yang diizinkan, log, screenshot, dan notifikasi. Untuk jaringan, gunakan proxy terkendali pada build rilis bertanda tangan dan versi Android yang didukung. Gagal mengintersep bukan bukti otomatis lulus; pastikan penyebabnya validasi sertifikat, pinning, setup proxy, atau trust perangkat.
Untuk interaksi platform, panggil tiap permukaan yang diekspor dengan input salah bentuk dan tanpa otorisasi. Untuk autentikasi, uji restart proses, perpindahan task, sesi kedaluwarsa, pembatalan biometrik, dan otorisasi server setelah gate UI lokal. Server tetap harus mengotorisasi operasi; pemeriksaan lokal bukan bukti otorisasi.
Keputusan, pengecualian, remediasi
Status lulus hanya bila penerimaan terpenuhi dan artefak selesai tersedia. Gagal bila uji membuktikan pelanggaran. Belum terverifikasi bila bukti atau akses kurang; jangan mengubahnya menjadi lulus. Pengecualian harus memuat ID kontrol, alasan bisnis, versi dan data terdampak, kontrol kompensasi, pemilik yang bertanggung jawab, tanggal berakhir, dan persetujuan eksplisit. Kata “legacy” tanpa tanggal berakhir bukan pengecualian.
Mulai remediasi dari perubahan aman terkecil: hapus data yang tidak perlu, persempit exposure component, aktifkan kontrol platform yang tepat, atau perbaiki otorisasi server. Pemilik melampirkan commit perubahan, ID artefak build ulang, hasil regresi, serta bukti retest. Tutup hanya bila uji sama lulus pada kandidat rilis terdampak. Pemetaan MASVS adalah alat verifikasi, bukan klaim sertifikasi atau kepatuhan. Pengujian aplikasi mobile dapat menilai ruang lingkup aplikasi dan backend yang disepakati.
Hasilkan bukti kontrol yang dapat diulang
Untuk setiap baris, tulis prasyarat, versi tool, command atau aksi UI, respons yang diharapkan, respons aktual, dan lokasi bukti. Contoh uji platform: pasang APK release, panggil activity exported dari UID terpisah, lalu tangkap hasil adb shell am dan event audit backend. Hasil yang diharapkan adalah penolakan sebelum aksi sensitif. Jika aplikasi membuka layar, bedakan routing tidak berbahaya dari akses objek dengan menguji identifier milik pengguna lain setelah login. Lampirkan API level perangkat karena perilaku platform berubah antar-rilis.
Sampel triwulanan yang berguna memilih satu kontrol dari setiap kategori yang berlaku: STORAGE, CRYPTO, AUTH, NETWORK, PLATFORM, CODE, RESILIENCE, dan PRIVACY. “Tidak berlaku” memerlukan alasan arsitektur serta reviewer, bukan sel kosong. Bila prosedur MASTG tidak dapat berjalan karena akun uji atau perangkat tidak ada, tandai belum terverifikasi dan tetapkan pemilik akses. Cara ini menjaga register kontrol tetap jujur saat keputusan rilis.
Pemetaan praktik dan penutupan
Petakan fitur release nyata, bukan pernyataan kebijakan, ke bukti yang dapat diuji. Untuk biometric unlock, sebutkan aset yang dilindungi, batas ancaman, API platform, fallback, dan konsekuensi server. Bukti dapat berupa extract manifest, lokasi review kode, uji perangkat, serta trace otorisasi backend. Baris lemah hanya menulis “patuh MASVS” tanpa identifier test, hasil, nomor build, dan keterbatasan.
Jalankan kasus negatif: nonaktifkan device lock, daftarkan biometrik berbeda, hapus data aplikasi, lalu coba aksi terlindungi. Bukti harus menunjukkan token lama atau secret lokal tidak memberi akses melampaui kebijakan sesi. Variasi platform adalah kasus tepi; catat API level dan perilaku produsen, bukan menganggap satu perangkat membuktikan semua target release.
Tutup requirement dengan scope, hash artefak, penguji, tanggal, hasil, alasan pengecualian, pemilik, dan pemicu retest. MASVS adalah kosakata verifikasi, bukan sertifikasi atau jaminan. Buka ulang setelah desain autentikasi, migrasi storage, penggantian network client, atau perubahan signing release.