OWASP kategorisi: MASVS-CODE: Kod Kalitesi
Genel Bakış
HostnameVerifier
uygulaması, sunucunun sertifikadaki ana makine adının istemcinin bağlanmaya çalıştığı sunucunun ana makine adıyla eşleştiğini doğrulamaktan sorumludur.
Android uygulamasında güvenli olmayan HostnameVerifier kullanımı, uygulamanın iletişim kurduğu sunucunun ana makine adını doğru şekilde doğrulamayan bir uygulamadır. Bu durum, saldırganın meşru bir sunucunun kimliğine bürünmesine ve uygulamayı kandırarak hassas verileri kendisine göndermesine olanak tanıyabilir.
Bu güvenlik açığı, HostnameVerifier
sınıfında X.509 sertifika ana makine adı doğrulamasını atlayabilen ve bunun yerine yalnızca sertifikanın karmasını doğrulayabilen işlev çağrıları bulunduğundan ortaya çıkar. SSLSession#isValid
işlevinin güvenlikle ilgili bir işlem gerçekleştirdiğine dair yaygın bir yanlış anlama vardır. Ancak işlevin amacı yalnızca bir oturumun geçerli olup olmadığını ve devam ettirilip katılabilip katılamayacağını kontrol etmektir. Bu işlemlerin hiçbiri oturumun güvenliğini doğrulamaz. HostnameVerifier sınıfının yerini NetworkSecurityConfig aldı.
Etki
Güvenli olmayan HostnameVerifier uygulamaları, kurban uygulamadan gelen ağ trafiğine MITM (Ortadaki Adam) saldırıları gerçekleştirmek için kullanılabilecek güvenlik açıklarına neden olabilir. Bu güvenli olmayan koddan yararlanmanın etkisi, bu kod tetiklenirse kullanıcının uygulama ağı verilerinin ağ saldırganları tarafından (uzaktan veya yerel olarak) güvenliğinin ihlal edilebilmesidir. Etki, yanlışlıkla açığa çıkan ağ trafiğinin içeriğine (kimliği tanımlayabilecek bilgiler, gizli bilgiler, hassas oturum değerleri, hizmet kimlik bilgileri vb.) bağlıdır.
Çözümler
Özel TLS/SSL sertifika doğrulama kodu kullanmak veya uygulamak yerine tüm üretim, test, hata ayıklama ve geliştirme aşaması bağlantılarının düzgün şekilde ele alındığından emin olmak için NetworkSecurityConfig.xml dosyasını kullanın.
Kaynaklar
- Ağ Güvenliği Yapılandırma Dokümanları
- Bu kontrol, doğrulama yöntemi her zaman doğru değerini döndüren (bu nedenle herhangi bir ana makine adına güvenen) HostnameVerifier uygulamalarını arar
- HostnameVerifier sınıfıyla ilgili geliştirici dokümanları
- Android'de AllowAllHostnameVerifierDetector sınıfı