Güvenli olmayan X509TrustManager

OWASP kategorisi: MASVS-CODE: Kod Kalitesi

Genel Bakış

X509TrustManager sınıfı, uzak bir sunucunun kimliğini doğrulamakla sorumludur. Bu işlem, sunucunun sertifikasını doğrulayarak yapılır.

Bir Android uygulamasındaki güvenli olmayan X509TrustManager uygulaması, uygulamanın iletişim kurduğu sunucunun kimliğini düzgün şekilde doğrulamayan bir uygulamadır. Bu durum, saldırganın meşru bir sunucunun kimliğine bürünmesine ve uygulamayı hassas verileri saldırgana göndermesi için kandırmasına olanak tanıyabilir.

Bu güvenlik açığı, X509TrustManager sınıfının kullanılmasından kaynaklanmaktadır. Java/Android, sunucu doğrulamasının tamamen geçersiz kılınmasına izin verir. X509TrustManager sınıfının iki önemli işlevi vardır: checkServerTrusted() ve getAcceptedIssuers(). Bu işlev çağrıları, tüm X.509 sertifikalarına güvenecek şekilde yapılandırılabilir. Son olarak, özel doğrulama mantığı hatalı veya eksik olabilir ve beklenmedik bağlantılara izin verebilir. Tüm bu durumlarda sınıfın amacı geçersiz kılınmış ve X509TrustManager çıkışına göre kurulan ağ bağlantısı güvenli değildir.

Etki

Güvenli olmayan X509TrustManager uygulamaları, kurban uygulamasından gelen ağ trafiğine Ortadaki Adam (Man-in-the-Middle - MITM) saldırıları gerçekleştirmek için kullanılabilecek güvenlik açıklarına yol açabilir. Bu güvenli olmayan kodun kötüye kullanılmasının etkisi, bu kod tetiklenirse kullanıcının uygulama ağı verilerinin ağ saldırganları tarafından (uzaktan veya yerel olarak) tehlikeye atılabilmesidir. Etki, ağ trafiğinin yanlışlıkla açığa çıkarılan içeriğine (kimliği tanımlayabilecek bilgiler, özel bilgiler, hassas oturum değerleri, hizmet kimlik bilgileri vb.) bağlıdır.

Risk azaltma önlemleri

Ö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 işlenmesini sağlamak için NetworkSecurityConfig.xml işlevini kullanın. Test ve hata ayıklama derlemeleri için kendinden imzalı sertifika kullanılması gerekiyorsa özel bir X509TrustManager uygulamak yerine NetworkSecurityConfig'i kullanmayı düşünebilirsiniz.

Kaynaklar