Categoría de OWASP: MASVS-CODE: Calidad de código
Descripción general
La implementación de HostnameVerifier
es responsable de verificar que el nombre de host que figura en el certificado del servidor coincida con el nombre de host del servidor al que el cliente intenta conectarse.
Una implementación no segura de HostnameVerifier
de una aplicación para Android es aquella que no verifica correctamente el nombre de host del servidor con el que se comunica la aplicación. A raíz de esto, un atacante podría suplantar la identidad de un servidor legítimo y engañar a la aplicación para que le envíe datos sensibles.
Esta vulnerabilidad existe porque la clase HostnameVerifier
tiene llamadas a función que pueden omitir la validación del nombre de host del certificado X.509 y, en su lugar, solo verificar el hash del certificado. Un error común es pensar que la función SSLSession#isValid
realiza una operación relacionada con la seguridad, cuando, en realidad, solo sirve para comprobar si una sesión es válida y está disponible para reanudarse o para unirse a ella, lo cual no valida seguridad de una sesión. La clase HostnameVerifier
se reemplazó por NetworkSecurityConfig.
Impacto
Es posible que las implementaciones de HostnameVerifier
no seguras generen vulnerabilidades que pueden usarse para realizar ataques MiTM (de intermediario) en el tráfico de red desde la aplicación de la víctima. El impacto de aprovecharse de este código no seguro es que los atacantes podrían vulnerar (de forma remota o local) los datos de red de la aplicación de un usuario si se activa el código. El impacto depende del contenido de tráfico de red que se expone de forma involuntaria (PII, información privada, valores de sesión sensibles, credenciales de servicio, etcétera).
Mitigaciones
Usa la funcionalidad NetworkSecurityConfig.xml para asegurarte de que todas las conexiones de producción, prueba, depuración y etapa de desarrollo se administren correctamente, en lugar de usar o implementar código personalizado de validación de certificados TLS/SSL.
Recursos
- Documentación sobre la configuración de seguridad de la red
- Documentación para desarrolladores sobre la clase
HostnameVerifier