HostnameVerifier tidak aman

Kategori OWASP: MASVS-CODE: Kualitas Kode

Ringkasan

Implementasi HostnameVerifier bertanggung jawab untuk memverifikasi bahwa nama host di sertifikat server cocok dengan nama host server yang ingin dihubungkan oleh klien.

Implementasi HostnameVerifier yang tidak aman di aplikasi Android adalah implementasi yang tidak memverifikasi dengan benar nama host 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 class HostnameVerifier memiliki panggilan fungsi yang dapat melewati validasi nama host sertifikat X.509 dan, sebagai gantinya, hanya memverifikasi hash sertifikat. Kesalahpahaman umum adalah fungsi SSLSession#isValid menjalankan operasi terkait keamanan, meskipun tujuannya hanya untuk memeriksa apakah sesi valid dan tersedia untuk melanjutkan atau bergabung; di mana kedua hal tersebut tidak memvalidasi keamanan sesi. Class HostnameVerifier telah digantikan oleh NetworkSecurityConfig.

Dampak

Implementasi HostnameVerifier 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.

Referensi