Inicio Articulos. COVID-19: la importancia de la seguridad en las apps

COVID-19: la importancia de la seguridad en las apps

La seguridad en las aplicaciones móviles se vuelve aún más critica cuando es claro que, a partir de COVID-19, se ha intensificado su uso, lo que las hace aún más atractivas para ciberataques y fraudes

Apps
Apps

Por Jorge Monzalbo, Ingeniero en Sistemas de la UNAM y especialista en protección de aplicaciones móviles.

En medio de la pandemia desatada por el virus COVID-19, las principales recomendaciones son no salir de casa y no asistir a lugares concurridos. Sin embargo, la economía no puede detenerse y es ahí donde las aplicaciones móviles toman gran relevancia, ya que nos permiten realizar transacciones bancarias y comerciales sin necesidad de desplazarnos.

Pero, ¿están las aplicaciones móviles mexicanas protegidas contra ‘virus’, es decir, contra ataques cibernéticos? La seguridad en las aplicaciones móviles se vuelve aún más critica, cuando es claro que a partir de COVID-19, se ha intensificado su uso, lo que las hace aún más atractivas para ciberataques e intentos de fraudes digitales.

 

El riesgo frente a la pandemia

En medio del ‘Quédate en Casa’, los mexicanos estamos utilizando medios de pago y de consumo que nos permitan realizar operaciones sin tener que acudir a los establecimientos, lo que ha significado un aumento importante en las transacciones realizadas a través de dispositivos móviles. Esto se convierte en un jugoso mercado para los ataques cibernéticos, sumado al tiempo que también tendrán los hackers para concentrarse en llevarlos a cabo.

Por esto, es importante que todas las empresas e instituciones busquen esquemas para proteger a sus usuarios y blindar sus aplicaciones, además de que esto deberá contribuir a cumplir con la normatividad actual vigente.

Para conocer el nivel de riesgo de las aplicaciones en México, realizamos un análisis de 25 aplicaciones móviles para dispositivos Android de Bancos (14), medios de pago Fintech (6) y de Servicios Comerciales (5) publicadas en Google Play Store utilizando dos herramientas comerciales que evalúan el estado de ciberseguridad proporcionando un indicador para compararlas.

Los indicadores que presentaremos son: Escaneo de Vulnerabilidades en una escala de 1 a 5, donde 5 son aquellas con menos vulnerabilidades; CVSS con una escala de 0 a 10, donde 0 representa aplicaciones con menos riesgos; y Security Score con escala de 0 a 1, donde 1 representa las aplicaciones con menos riesgos.

Con el fin de conocer la evolución de la ciberseguridad en estas aplicaciones, llevamos a cabo una primera revisión en septiembre del 2019 y una segunda durante marzo de 2020, y los resultados son impresionantes.

Como comentaremos más adelante, el análisis del 2020 muestra que estas 25 aplicaciones presentan riesgos mayores que los que tenían en el 2019, ya sea porque han aparecido nuevas vulnerabilidades o porque las actualizaciones las hayan provocado.

En los tres indicadores que revisaremos, los valores evolucionan negativamente y encontramos más aplicaciones con riesgos y vulnerabilidades que las hace sujetas a posibles ciberataques.

 

Escaneo de Vulnerabilidades

La primera herramienta utilizada para analizarlas permite evaluar el código de las aplicaciones para detectar vulnerabilidades basadas en los estándares OWASP y clasificándolas en tres tipos: críticas, medias y bajas, para generar una calificación del 1 al 5, donde 5 representa las aplicaciones con mayor seguridad.

El promedio de estas aplicaciones en el análisis realizado en este año es de 2.52, donde tristemente observamos que es inferior al obtenido en 2019 que fue de 2.71. Esto puede significar que el día de hoy, en medio de la pandemia y con un uso más intenso de las aplicaciones móviles, estemos menos protegidos ante ciberataques.

Asimismo, el promedio de vulnerabilidades críticas encontradas en las aplicaciones evaluadas se incrementa pasando de 4.6 con 6 aplicaciones sin ninguna en el análisis del 2019, a 5.8 con solo 4 aplicaciones que no presentan ninguna.

Más adelante, comentaremos el tipo de vulnerabilidades encontradas.

Vulnerabilidades críticas 2019 vs. 2020

El comparativo entre ambos años para todas las aplicaciones evaluadas, agrupadas por el tipo (Banco, Fintech y Servicios) se presenta a continuación.

Escaneo de vulnerabilidades

 

FrameWork de Aplicaciones

La segunda herramienta es un framework completo para realizar pruebas de seguridad y análisis de malware sobre las aplicaciones y que identifica vulnerabilidades en los diferentes componentes de estas, desde certificados hasta permisos y llamadas a programas externos.

Esta aplicación presenta dos calificaciones, la primera es el CVSS (Common Vulnerability Score System) y la segunda es una puntuación de seguridad (Security Score).

 

Common Vulnerability Score System

El CVSS es un sistema de puntaje basado en un método abierto y estándar que permite estimar el impacto en una aplicación de las vulnerabilidades identificadas, y permite cuantificar la severidad de los riesgos de la aplicación. CVSS otorga un puntaje de 0 a 10, donde las calificaciones de 0 a 3.9 significan baja vulnerabilidad del aplicativo, de 4 a 6.9 media y de 7 a 10 alta vulnerabilidad.

En el análisis del 2019, el promedio del CVSS de estas 25 aplicaciones fue de 4.10, que está prácticamente en la línea de vulnerabilidades medias, sin embargo, este promedio se obtiene debido a que 8 aplicaciones presentan una calificación de 0 (probablemente debido a que cuentan con algún tipo de protección básica que las hace menos vulnerables), ya que 15 están en el rango medio y 2 en el rango alto.

Igual que en el caso anterior, para el análisis llevado a cabo en el 2020, la calificación promedio sube a 4.31 y solo 7 aplicaciones obtienen calificación de 0, aunque la buena noticia es que solo una está en el rango alto.

Severidad CVSS 2019 vs. 2020

El comparativo entre las calificaciones obtenidas entre el 2019 y el 2020 se presenta a continuación, recordando que en este caso mayor calificación significa mayor riesgo.

Common Vulnerability Score System

 

Security Score

En cuanto al puntaje de seguridad, este se representa en una escala de 0 a 1, donde una calificación cercana a 0 significa que la aplicación es altamente insegura y el 1 que es muy segura, lo que representa es poco susceptible a ciberataques.

La calificación promedio en el 2019 fue de 0.61, con 9 aplicaciones presentando una calificación de 1, es decir que son seguras (posiblemente, como comentamos antes, por que aplican algún tipo de protección). Si no consideramos éstas en el promedio, éste cae a tan solo 0.39, lo que nos permite ver que 16 de estas aplicaciones contaban con riesgos importantes.

Para el 2020, el Score de seguridad baja sensiblemente, presentando ahora una calificación promedio de tan solo 0.49 y solo 7 aplicaciones obtienen una calificación de 1. El mayor riesgo se observa al eliminar estas siete aplicaciones del promedio, ya que la calificación cae a solo 0.29, un valor mucho menor que en el 2019 y nos habla que 18 de estas presentan riesgos importantes.

El análisis con esta herramienta nos permite ver el código de las aplicaciones cuando este no está protegido (lo cual es de alto riesgo, ya que puede revelar las rutinas y puede ser clonado) y en el 2019 encontramos que 6 de las aplicaciones si contaban con algún tipo de blindaje que impide ver el código completo, pero en el 2020 solo 4 mantienen este blindaje.

Asimismo, podemos ver el estado del certificado emitido por la tienda (basado en el análisis de seguridad básico que realiza Google Play), donde nuevamente encontramos que en el 2019 el 60%, es decir 15 de las 25, lo tenía correcto y para el 2020 solo 14 lo mantienen, aunque vale hacer notar que en el 2020 hay menos en condición Bad.

Certificados 2019 vs. 2020

El comparativo entre ambos años del Security Score se presenta en la siguiente tabla.

Security Score 2019-2020

 

Principales riesgos y vulnerabilidades

En general, la gran mayoría de las aplicaciones analizadas presentan riesgos importantes, los cuales principalmente son:

  • Code Analysis: Posibilidad de analizar y realizar ingeniería inversa del código.
    Manifest Analysis: Exposición en detalle la estructura interna de la aplicación.
    Permisos: Problemas en los permisos otorgados a terceros, lo que las hace susceptibles a clonación y ataques.

Por otro lado, también la gran mayoría de ellas presentan vulnerabilidades comunes que pueden ser explotadas por los hackers, donde destacan las siguientes:

  • Internal information leak: Revelación de información sensible a través de logs o directamente en pantalla. Esta información puede ser las credenciales del usuario susceptibles a ser interceptadas.
    JNI usage: Utilización de código en la interfase nativa de Java que llama a rutinas escritas en otros lenguajes que pueden agregar vulnerabilidades al ser ejecutadas.
    Error handling empty cach block: No existe una función que analice el error, solo lo atrapa y aísla, lo que puede devolver valores y accesos inesperados que expongan la información y la aplicación.
    Explicit thread handling: La aplicación al encontrar errores puede llamar instancias y objetos en cadena y concurrencia, lo que puede permitir ingresar en espacios reservados que pueden ser atacados.
    Error Handling generic exception: Manejo inadecuado de errores o excepciones a través de rutinas genéricas sin darles el tratamiento adecuado o individual necesario. Esto puede generar exponer rutinas e información al hacker que no deben ser generalmente revelados.
    Null dereference: Acceso a variables y objetos que no presentan valor y que pueden hacer que la aplicación deje de operar correctamente interrumpiendo la operación de la App.
    Undocumented feature: dead code: Son rutinas y líneas de programación que, aunque forman parte de la App, no son utilizadas durante la operación normal. Este código muerto puede ser utilizado como una puerta de entrada hacia la aplicación.

En la siguiente gráfica, se presentan las aplicaciones que presentan estas vulnerabilidades (las cuales se repiten varias veces en ellas), y podemos observar que en el análisis del 2020 en general, todas se incrementan.

Principales vulnerabilidades encontradas

 

Conclusiones

Como se ha mostrado, en todos los indicadores la evolución del 2019 hacia el 2020 muestra mayores riesgos y vulnerabilidades en el promedio de las 25 aplicaciones evaluadas.

Este incremento en riesgo no es igual para cada sector, donde al revisar los resultados por cada uno, encontramos que los bancos incrementan ligeramente la seguridad del 2019 al 2020 pero los medios de pago y los servicios comerciales aumentan considerablemente su exposición al riesgo.

En las siguientes figuras se muestra el riesgo agrupado por sector (Bancos, Fintech y servicios), así como el promedio de las 25 aplicaciones.

También, es de destacar que en general el número de vulnerabilidades críticas encontradas en los tres conjuntos se incrementa en el análisis del 2020, incluso en las aplicaciones bancarias.

 

Recomendaciones

Las aplicaciones móviles cada vez tendrán un mayor uso, debido a las reglas de sana distancia y el fomento a los medios de pago electrónicos. Estas aplicaciones hoy contienen gran parte de la inteligencia del negocio e incluso secretos comerciales, por eso es importante protegerlas contra posibles ciberataques y clonaciones.

Existen varias herramientas y metodologías para proteger las aplicaciones, estos inician fomentando el conocimiento de los desarrolladores en ciberseguridad para que además de construir código funcional, ese cuente con los estándares de seguridad marcados por OWASP.

Además, es deseable realizar análisis del código durante todo el proceso de desarrollo e incluso una vez construidos los artefactos ejecutables APKs o IPAs que serán expuestos en las tiendas, para detectar posibles vulnerabilidades en etapas tempranas y corregirlas.
Finalmente, es muy importante blindar las aplicaciones para evitar ingeniería inversa de las mismas que puede permitir a los hackers planear sus ataques, así como blindarlas para que al ser ejecutadas no sean intervenidas por estos.

Por ello, ante este uso mayor de sistemas móviles, es importante asegurar en todo momento que la aplicación está protegida y cumple con los mayores estándares de seguridad.

Es muy difícil prevenir todas las vulnerabilidades, sin embargo, es responsabilidad del dueño de la aplicación minimizarlos al máximo para no poner en riesgo la información de sus usuarios y sus recursos económicos.

 

Metodología

Para llevar a cabo el análisis, seguimos estos pasos:

  1. Descargamos e instalamos cada una de las aplicaciones en un teléfono Android, directamente de Google Play Store, tal como lo haría un usuario convencional.
    2. Utilizamos una herramienta pública y gratuita que permite extraer el APK (código de la aplicación) directamente en el dispositivo móvil.
    3. Transferimos el APK a una librería
    4. Procedimos a analizar el APK (información pública) en las dos herramientas comerciales mencionadas.
    5. En el 2019 realizamos la descarga en septiembre y análisis en octubre de ese año.
    6. Para el 2020, la descarga se llevó a cabo en marzo y el análisis durante el mes de abril.
    7. En todos los casos validamos que las versiones fueran las más actualizadas a la fecha de descarga.