Ventajas y riesgos del ‘pinning’ en aplicaciones móviles

30 julio, 2019
19 Compartido 3,021 Visualizaciones

El ‘pinning’ es un mecanismo opcional que puede utilizarse para mejorar la seguridad de las comunicaciones que se apoyan en conexiones que utilizan certificados, como las conexiones HTTPS utilizadas por las aplicaciones móviles.  El ‘pinning’ permite especificar la identidad del otro extremo de una conexión y utilizarla para permitir únicamente conexiones desde la app a los servidores conocidos y prefijados al desarrollarla. 

Es un mecanismo sencillo que puede incorporarse en el desarrollo de las aplicaciones móviles que requieran un nivel adicional de seguridad en la información intercambiada de forma que esta no pueda ser interceptada por ataques de man-in-the-middle. Es transparente para los usuarios y no penaliza ni la velocidad de las comunicaciones ni la experiencia de uso de la aplicación. 

Puede ser muy útil pero debe tenerse en cuenta que, para ser efectivo y evitar otros problemas, su uso no debe realizarse de forma independiente en la app, sino que debe involucrarse también a los servidores a los que se conecta la aplicación móvil.

¿Cómo se realizan las conexiones seguras desde las apps?

Las aplicaciones que utilizamos en los dispositivos móviles están diseñadas para proporcionar comunicaciones encriptadas a través de un canal seguro que las cifra.  Cada vez que se realiza una conexión de este tipo se realiza un proceso complejo que involucra a los dos extremos.

Cuando una aplicación móvil intenta conectarse a un servidor, éste responde presentando su certificado digital. Si el dispositivo móvil reconoce ese certificado como válido se establece la conexión segura entre los dos extremos. A partir de ese momento, los datos intercambiados entre la aplicación y el servidor viajan por esa conexión segura. 

Para poder realizar ese proceso, los sistemas operativos de los dispositivos móviles disponen de un almacén seguro de certificados. Cada versión de sistema operativo del móvil lleva incluido un conjunto de certificados que son de confianza y  que vienen preinstalados en el almacén seguro. Estos ‘certificado de confianza’ no son más que la clave pública de un ‘certificado’ que identifica a una ‘Autoridad Certificadora’ (CA – Certificate Authority) de la que el móvil tiene confianza.  Cuando se actualiza la versión de sistema operativo del móvil, es frecuente que también se produzca la actualización de los certificados raíz de ese almacén seguro. 

En la práctica, los certificados que presenta un servidor para establecer la conexión no están directamente firmados por las CA de orden superior (son aquellas que firman ellas mismas sus certificados), sino que existe una jerarquía de certificados intermedios entre el más bajo (el del dominio del servidor al que se conecta la app) y el superior de la cadena (el certificado raíz de la CA). Esta cadena de certificados es lo que se denomina una cadena de confianza’ (chain of trust) y que se utiliza en el proceso de verificación.  

Para establecer una conexión segura,  el servidor presenta al móvil una cadena de firma de certificados, incluyendo el certificado de su dominio y también alguno de los certificados intermedios. Por su parte,  el móvil va recorriendo esa cadena de firmas comenzando por el nivel más bajo, el certificado del servidor, y subiendo en la jerarquía hasta que encuentra un certificado intermedio que coincide con alguno de los presentes en su ‘almacén de certificados’. Es en ese momento en el que valida al servidor y se establece el canal seguro entre los dos extremos.

¿Hasta dónde llega la validación de la conexión segura?

El mecanismo anterior ocurre para todas y cada una de las conexiones seguras que se realizan desde el móvil. Es un proceso automático para las apps y rápido , porque se realiza desde las librerías de comunicaciones de cada Sistema Operativo Móvil.  

Pero este proceso de validación de certificados no llega a diferenciar unos servidores ‘válidos’ de otros. Esto se debe a que únicamente se tiene en cuenta que el certificado que presenta un servidor es válido en base a la ‘cadena de confianza’, es decir, la CA que ha firmado el certificado que se presenta. No se tiene en cuenta otra información asociada como el dominio o el host del servidor al que intenta conectarse.

Tampoco tiene en cuenta el hecho de que es posible incorporar de forma manual nuevos certificados en el móvil y añadir así nuevas Autoridades Certificadoras que se incorporan a ese mecanismo automático de validación y que pueden alterar esa ‘cadena de confianza’.   

La incorporación de nuevos certificados al móvil es una tarea que involucra tanto al usuario como a su móvil en un proceso de varios pasos que deja constancia visible en el dispositivo. También es necesario utilizar una configuración específica en la conectividad del móvil para utilizarlo. Por este motivo su uso principal está relacionado con tareas de ingeniería inversa de aplicaciones móviles para monitorizar cómo se comunican con sus servidores.

¿Cómo funciona el pinning?

El ‘pinning’ asocia la clave pública que presenta un servidor con el dominio o el host de ese servidor.

De esta forma, el proceso estándar de validación de la cadena de firmas de los certificados, se ve completado con un proceso particular y adicional para verificar si la clave pública del certificado del servidor al que se conecta la app es la esperada.  Es decir, para que se establezca la conexión con un servidor, es necesario que la cadena de firmas de certificados sea la correcta, pero también el servidor sea el adecuado.

Una aplicación móvil suele conectarse a más de un servidor o dominio, por lo que es habitual que la aplicación disponga de una lista de pares de clave/valor que utiliza a modo de ‘lista blanca’ para comprobar los certificados de los servidores con los que puede establecer una conexión segura.  Cualquier otra conexión desde un servidor que no esté en la lista blanca, será rechazada.

Para realizar esta verificación adicional de ‘pinning’ las aplicaciones tienen que interceptar el proceso de establecimiento de la conexión. Todas las plataformas proporcionan mecanismos de desarrollo para hacerlo al construir la aplicación.

¿Cuándo utilizar el ‘pinning’?

El ‘pinning’ es útil cuando la aplicación tiene certeza de los servidores a los que se va a conectar, y este es el caso habitual que sucede con la mayoría de las aplicaciones móviles.  

Pero la utilización correcta del pinning supone una relación pre-existente entre aplicación móvil  y servicio al que se conecta. La lista blanca que incorpora la app en su desarrollo presupone esta relación y hace necesaria una coordinación adicional en la organización que implanta aplicaciones móviles con pinning:   cualquier cambio en los certificados de servidor que afecte al mecanismo de pinning afecta también a la app; es decir, el ciclo de vida de los certificados de servidor (sus cambios, renovaciones, etc) pasan a estar ligados con el ciclo de vida de actualizaciones de las aplicaciones móviles, puesto que en estas actualizaciones es la forma adecuada desplegar esa ‘lista blanca’ de servidores con los que la aplicación puede conectarse.

Luis del Ser, Co-fundador de Movilok

Mantente informado de las noticias más relevantes en nuestro canal de Telegram

Te podría interesar

Campañas de ransomware más dañinas de 2019 en España
Actualidad
3 compartido1,180 visualizaciones
Actualidad
3 compartido1,180 visualizaciones

Campañas de ransomware más dañinas de 2019 en España

Alicia Burrueco - 21 enero, 2020

Crysis fue el ransomware más detectado durante el año pasado en nuestro país   ESET ha publicado el listado de las…

Alerta social: examinando los riesgos de seguridad en el futuro de la robótica
Actualidad
15 compartido1,588 visualizaciones
Actualidad
15 compartido1,588 visualizaciones

Alerta social: examinando los riesgos de seguridad en el futuro de la robótica

Vicente Ramírez - 13 noviembre, 2019

La influencia que los robots “sociales” ejercen sobre las personas y la inseguridad que esto puede ocasionar no deben subestimarse.…

Los ciberatacantes siguen utilizando el COVID-19 para atacar
Actualidad
8 compartido1,194 visualizaciones
Actualidad
8 compartido1,194 visualizaciones

Los ciberatacantes siguen utilizando el COVID-19 para atacar

Redacción - 7 abril, 2020

El coronavirus sigue siendo utilizado como spam en archivos de malware y dominios maliciosos. Trend Micro cuenta en su blog…

Deje un comentario

Su email no será publicado

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.