Kategori OWASP: MASVS-CODE: Kualitas Kode
Ringkasan
Class X509TrustManager
bertanggung jawab untuk memverifikasi keaslian
server jarak jauh. Hal ini dilakukan dengan memvalidasi sertifikat server.
Implementasi X509TrustManager
yang tidak aman di aplikasi Android adalah
implementasi yang tidak memverifikasi dengan benar keaslian server
yang digunakan aplikasi untuk berkomunikasi. Hal ini memungkinkan penyerang
meniru identitas server yang sah dan mengelabui aplikasi agar mengirimkan data sensitif
ke penyerang.
Kerentanan ini ada karena menggunakan class X509TrustManager
.
Java dan Android memungkinkan penggantian verifikasi server sepenuhnya. Class
X509TrustManager
memiliki dua fungsi yang diinginkan:
checkServerTrusted()
dan getAcceptedIssuers()
. Panggilan
fungsi ini dapat dikonfigurasi untuk memercayai semua sertifikat X.509. Logika validasi kustom
dapat berisi bug atau tidak lengkap, dan mengizinkan koneksi yang tidak terduga. Dalam semua
kasus ini, tujuan class telah diabaikan dan koneksi jaringan
yang dibuat berdasarkan output X509TrustManager
tidak aman.
Dampak
Implementasi X509TrustManager
yang tidak aman dapat menyebabkan kerentanan yang dapat
digunakan untuk melakukan serangan MitM (Man-in-the-Middle) pada traffic jaringan dari
aplikasi korban. Dampak dari pemanfaatan kode yang tidak aman ini adalah data jaringan aplikasi
pengguna dapat disusupi oleh penyerang jaringan (dari jarak jauh atau
lokal) jika kode ini dipicu. Dampaknya bergantung pada konten
traffic jaringan yang tidak sengaja terekspos (PII, informasi pribadi,
nilai sesi sensitif, kredensial layanan, dll.).
Mitigasi
Gunakan fungsi NetworkSecurityConfig.xml
untuk memastikan semua koneksi produksi, pengujian, proses debug, dan tahap
pengembangan ditangani dengan benar, bukan menggunakan atau menerapkan validasi sertifikat
TLS/SSL kustom. Jika penggunaan sertifikat yang ditandatangani sendiri
diperlukan untuk build pengujian dan debug, sebaiknya gunakan NetworkSecurityConfig,
bukan menerapkan X509TrustManager
kustom.