HostnameVerifier no seguro

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