paint-brush
Revelando vulnerabilidades de seguridad en aplicaciones móvilespor@induction
1,539 lecturas
1,539 lecturas

Revelando vulnerabilidades de seguridad en aplicaciones móviles

por Vision NP13m2023/06/01
Read on Terminal Reader

Demasiado Largo; Para Leer

Las aplicaciones móviles enfrentan varios problemas de seguridad y son susceptibles a diferentes tipos de ataques debido a su uso generalizado y los datos valiosos que manejan. A medida que las técnicas de desarrollo de aplicaciones evolucionan con nuevos marcos y metodologías, los atacantes también evolucionan constantemente sus técnicas. A pesar de preferir las mejores prácticas, a veces los errores en las aplicaciones móviles pueden pasar desapercibidos durante mucho tiempo. Históricamente, las plataformas como Android e iOS han presentado importantes riesgos de seguridad para las aplicaciones móviles.
featured image - Revelando vulnerabilidades de seguridad en aplicaciones móviles
Vision NP HackerNoon profile picture
0-item
1-item

En el panorama digital actual, los dispositivos móviles juegan un papel importante para facilitarnos la vida.


Dado que los procesos de desarrollo de aplicaciones evolucionan constantemente, garantizar la seguridad de cualquier tipo de aplicación móvil, como híbrida, blockchain o nativa, es de suma importancia. Las aplicaciones móviles a menudo manejan datos confidenciales de los usuarios e interactúan con varios servicios de red que podrían convertirlos en objetivos potenciales para ataques maliciosos.


A veces, un simple error en un código permite a los atacantes robar datos confidenciales del usuario, por lo que es muy importante invertir tiempo al desarrollar una aplicación móvil.

Entonces, amigos, no nos apresuremos en el proceso de codificación o desarrollo de aplicaciones como un toro en una tienda de porcelana 😁.


Pero a veces, a pesar de nuestros mejores esfuerzos, esos molestos errores simplemente no retroceden. ¡No temáis! Este artículo está aquí para rescatarlo con una colección de soluciones de depuración que harán que esos errores persistentes tiemblen en sus botas virtuales.


📥Los factores clave que hacen que las aplicaciones móviles sean vulnerables a los ataques:

A pesar de mantener las mejores prácticas, a veces los errores en las aplicaciones móviles pueden pasar desapercibidos durante mucho tiempo. Las aplicaciones móviles enfrentan varios problemas de seguridad y son susceptibles a diferentes tipos de ataques debido a su uso generalizado y los datos valiosos que manejan. A medida que las técnicas de desarrollo de aplicaciones evolucionan con nuevos marcos y metodologías, los atacantes también evolucionan constantemente sus técnicas.


A medida que los desarrolladores de aplicaciones móviles se esfuerzan por crear aplicaciones innovadoras y ricas en funciones, los atacantes o ciberdelincuentes aprovechan la oportunidad para explotar las vulnerabilidades y adaptar sus estrategias para apuntar a estos avances.


⬇️Errores en los sistemas operativos (SO):

Este es el factor más crucial que potencialmente permite a los atacantes robar datos de aplicaciones al obtener acceso no autorizado a los sistemas de aplicaciones móviles. Históricamente, plataformas como Android e iOS han mostrado importantes riesgos de seguridad para las aplicaciones móviles. Por lo tanto, concentrarse simplemente en el desarrollo de aplicaciones y las técnicas de depuración sin mantenerse actualizado en las plataformas en las que está desarrollando una aplicación móvil resulta menos efectivo para resolver problemas de seguridad.


Aquí hay algunos incidentes notables:


⚠️ Miedo escénico (Android):

El Vulnerabilidad al miedo escénico fue descubierto en 2015 y afectó a millones de dispositivos Android al permitir que los atacantes aprovecharan las fallas en el motor de reproducción de medios. En ese momento, los atacantes utilizaron varios métodos, incluidos archivos multimedia maliciosos y mensajes MMS especialmente diseñados, para ejecutar códigos remotos en los dispositivos y aplicaciones infectados.


⚠️XcodeGhost (iOS):

En 2015, una versión maliciosa del entorno de desarrollo Xcode de Apple, xcodefantasma , se distribuyó en China. XcodeGhost permitió a los atacantes inyectar y propagar código malicioso en las aplicaciones de iOS creadas con la versión comprometida de Xcode.


⚠️ VACA sucia (núcleo de Linux):

El Vulnerabilidad de la VACA sucia se descubrió por primera vez en 2016 y afectó a varios sistemas basados en Linux, incluidos los dispositivos Android. Los atacantes lo usaron para obtener acceso escrito no autorizado a las asignaciones de memoria de solo lectura en el kernel de Linux, lo que les permitió aumentar los privilegios y ejecutar código arbitrario.


⚠️ Strand Hogg 2.0 (Androide):

La vulnerabilidad ha sido nombrada StrandHogg 2.0 debido a las similitudes con la vulnerabilidad StrandHogg anterior y.

Fuente: Promoción


⚠️Error que mostraba que WhatsApp estaba accediendo al micrófono (Android):

Este es el incidente más reciente que ocurrió en 2023 con Android cuando se descubrió un error de seguridad en Android que resultó en indicadores de privacidad y notificaciones incorrectos en el tablero de privacidad. Este error permitió que WhatsApp accediera al micrófono del dispositivo incluso cuando la aplicación no estaba en uso. La falla comprometió la privacidad del usuario y generó preocupaciones sobre la grabación de audio no autorizada.


✅Cómo depurar tu aplicación

Depurar una aplicación cuando el sistema operativo (SO) subyacente, como Android o iOS, tiene errores puede ser un desafío. Sin embargo, aquí hay algunas estrategias que pueden ayudarlo a navegar a través de esta situación:


  • Reproduzca y aísle el problema para confirmar si los errores persisten en el sistema operativo o en su aplicación.
  • Intente investigar si el informe de error publicado en los sitios/foros del proveedor del sistema operativo o en otros recursos coincide con su caso. Si existen soluciones provisionales o arreglos temporales proporcionados por el proveedor del sistema operativo o la comunidad, será útil parchear los errores de inmediato como solución principal.
  • Es una forma muy efectiva de analizar registros e informes de fallas para detectar errores, por lo tanto, mantenga información sobre el error o el comportamiento inesperado y busque patrones o pistas que puedan ayudarlo a identificar la causa del problema. Preste atención a cualquier mensaje de error o seguimiento de pila que pueda indicar problemas relacionados con el sistema operativo.
  • Si el error aparece en la versión específica del sistema operativo, intente probar su aplicación en diferentes versiones para determinar si se trata de un problema nuevo producido debido a la actualización reciente del sistema operativo.
  • Para informar un error del sistema operativo, comuníquese con los canales o foros de soporte para desarrolladores del proveedor del sistema operativo. Proporcione información detallada, como pasos de reproducción de errores, registros e informes de fallas que pueden crear conciencia y acelerar la resolución de problemas.
  • Implemente soluciones temporales en su aplicación para evitar el impacto del error del sistema operativo. Esto puede incluir deshabilitar ciertas funciones de la aplicación o modificar el comportamiento de la aplicación para evitar escenarios problemáticos. Comunique estas soluciones alternativas claramente a los usuarios de la aplicación hasta que haya una solución permanente disponible.
  • Manténgase actualizado con las actualizaciones del sistema operativo y los informes de parches.


⬇️Autenticación débil:

Los mecanismos de autenticación mal administrados o implementados, como contraseñas débiles o falta de autenticación multifactor (MFA), pueden hacer que las aplicaciones móviles sean vulnerables al acceso no autorizado (conocido como ataque de autenticación) al permitir que los atacantes ingresen a las cuentas de los usuarios o se hagan pasar por usuarios legítimos.


✅Técnicas de Prevención:

Para garantizar la autenticación segura de aplicaciones móviles, siga estas pautas:


  • Haga coincidir los requisitos de autenticación de las aplicaciones móviles con sus contrapartes web al garantizar factores de autenticación iguales o más fuertes para los usuarios móviles.
  • Desaliente el uso de números PIN de 4 dígitos o números adivinables como DOB para contraseñas de autenticación.
  • Evite la autenticación de usuarios locales porque puede dar lugar a vulnerabilidades de omisión del lado del cliente, especialmente en dispositivos con jailbreak.
  • Cuando sea necesaria la autenticación fuera de línea, realice solicitudes de autenticación en el lado del servidor y cargue los datos de la aplicación en el dispositivo solo después de proporcionar una autenticación exitosa.
  • Si se necesita el almacenamiento de datos del lado del cliente, cifre los datos con una clave de cifrado derivada de forma segura de las credenciales de inicio de sesión del usuario. Esto evita el acceso no autorizado a los datos almacenados.
  • Implemente la autenticación persistente (Recordarme) utilizando tokens de autenticación específicos del dispositivo que el usuario puede revocar, protegiendo contra el acceso no autorizado de dispositivos perdidos o robados.
  • Evite el uso de valores falsificados como identificadores de dispositivos o ubicación geográfica para la autenticación de usuarios.
  • Active la opción de autenticación persistente en lugar de habilitarla de forma predeterminada en las aplicaciones móviles.


⬇️ Cifrado de datos insuficiente y almacenamiento de datos inseguro:

Un mecanismo de encriptación administrado de manera débil para datos confidenciales almacenados dentro de la aplicación o durante la transmisión los hace vulnerables a la intercepción, ya que los atacantes pueden aprovechar esta debilidad para acceder y manipular la información confidencial del usuario. Además, el proceso de almacenamiento de datos confidenciales sin las medidas de seguridad adecuadas aumenta el riesgo de filtraciones de datos.


✅Técnicas de Prevención:


  • Utilice algoritmos de cifrado sólidos como AES (Estándar de cifrado avanzado) para proteger los datos confidenciales del usuario. Por ejemplo, cifrar las contraseñas de los usuarios con un algoritmo hash sólido, como bcrypt o PBKDF2, garantiza que, incluso si las contraseñas almacenadas se ven comprometidas, son extremadamente difíciles de descifrar.
  • Almacene información confidencial de forma segura mediante el uso de mecanismos de almacenamiento seguro específicos de la plataforma, por ejemplo, puede utilizar los servicios de llavero en iOS proporcionados por el sistema operativo para almacenar de forma segura las credenciales de usuario y otros datos confidenciales. En Android, el Android Keystore System ofrece una instalación de almacenamiento segura.
  • La comunicación insegura con configuraciones débiles de SSL/TLS conduce a varios ataques basados en la red, como los ataques Man-in-the-Middle (MitM) , en los que un atacante intercepta y altera la comunicación y los ataques de denegación de servicio distribuido (DDoS), que saturan los servidores de la aplicación con una avalancha de solicitudes, lo que provoca la interrupción del servicio. Implemente protocolos como HTTPS (HTTP seguro) para cifrar los datos transmitidos entre la aplicación móvil y el servidor, por ejemplo, una aplicación de comercio electrónico que transmite los datos de pago de los clientes de forma segura a través de HTTPS garantiza la confidencialidad de la información financiera confidencial.
  • Para evitar la pérdida de datos en caso de robo o pérdida del dispositivo, puede habilitar la funcionalidad de borrado remoto para permitir que los usuarios o administradores eliminen datos confidenciales almacenados en el dispositivo de forma remota. Además, aplique el cifrado completo del dispositivo que puede proteger los datos incluso si el dispositivo cae en manos no autorizadas.


⬇️Vulnerabilidades en bibliotecas de terceros:

Las aplicaciones móviles suelen utilizar bibliotecas y marcos de trabajo de terceros para ayudar en el proceso de desarrollo de la aplicación. Sin embargo, si este tipo de bibliotecas tienen vulnerabilidades de seguridad conocidas o no se actualizan regularmente, pueden convertirse en puntos de entrada para que los atacantes exploten y comprometan la seguridad de la aplicación a través del acceso ilegal al sistema de la aplicación.


✅Técnicas de Prevención:

Para evitar vulnerabilidades en bibliotecas de terceros en aplicaciones móviles, actualice las bibliotecas a la última versión. Por ejemplo, la actualización periódica de bibliotecas populares como Retrofit o Firebase SDK garantiza que cualquier vulnerabilidad de seguridad informada se aborde de inmediato.


⬇️ Validación de entrada inadecuada:

La validación insuficiente de las entradas del usuario puede dar lugar a varias vulnerabilidades de seguridad (como inyección SQL o ataques de secuencias de comandos en sitios cruzados (XSS) ). Los atacantes pueden explotar estas vulnerabilidades para manipular el comportamiento de la aplicación a su favor para obtener acceso no autorizado o inyectar código malicioso.


✅Técnicas de Prevención:

Los desarrolladores deben implementar una desinfección de entrada estricta, consultas parametrizadas, codificación de salida y técnicas de listas blancas. Se debe emplear la validación de expresiones regulares y una combinación de validación del lado del cliente y del lado del servidor para evitar los problemas.


⬇️Falta de gestión segura de sesiones:

Las sesiones administradas de manera débil de una aplicación pueden hacer que las aplicaciones móviles sean vulnerables al secuestro de sesiones o ataques de fijación de sesiones. Los atacantes pueden usar un manejo de sesión débil para obtener acceso no autorizado.


✅Técnicas de Prevención:

Prefiera los siguientes pasos para evitar problemas persistentes:

  • Implementar una fuerte generación de tokens de sesión,
  • Establezca los tiempos de vencimiento de la sesión apropiados,
  • Almacene los datos de la sesión de forma segura,
  • Utilizar protocolos de comunicación seguros,
  • Regenerar tokens de sesión en la autenticación, y
  • Hacer cumplir fuertes mecanismos de control de acceso.


⬇️Ofuscación de código e ingeniería inversa:

Las aplicaciones móviles que carecen de técnicas de ofuscación de código son vulnerables a la ingeniería inversa, donde los atacantes pueden analizar y comprender el código fuente de la aplicación. Esto expone posibles fallas de seguridad o el agujero de gusano de la aplicación para permitir que los atacantes los exploten con fines maliciosos, como modificar aplicaciones legítimas, volver a empaquetarlas con cargas útiles de malware y distribuirlas a través de tiendas de aplicaciones no oficiales o sitios web maliciosos.


Aquí hay algunos incidentes notables a considerar:


⚠️Pokémon GO:

En 2016, Pokémon GO , un popular juego de realidad aumentada, enfrentó problemas relacionados con la ingeniería inversa de código. Los atacantes aplicaron ingeniería inversa al código de la aplicación para desarrollar aplicaciones de terceros no autorizadas que proporcionaron ventajas injustas, como la falsificación de GPS y el juego automatizado.


⚠️BankBot y Acecard:

Varios troyanos bancarios móviles, como BankBot y Acecard, han explotado la ingeniería inversa de código para comprometer las aplicaciones financieras. BankBot se identificó por primera vez en 2017, mientras que Acecard ha estado activo desde 2014. realizar transacciones fraudulentas.


✅Técnicas de Prevención:

Puede seguir las técnicas prácticamente muy efectivas para evitar que los piratas informáticos realicen ingeniería inversa en sus aplicaciones.


👉🏿En muchos casos, las aplicaciones móviles se distribuyen principalmente a través de plataformas oficiales como Google PlayStore o tiendas integradas específicas de la plataforma, como GalaxyStore en el caso de los dispositivos Samsung. Al utilizar esto, los desarrolladores pueden implementar una verificación para verificar la fuente de instalación de la aplicación y restringir su funcionalidad si no se instala a través de la plataforma autorizada. Esto se puede lograr utilizando una biblioteca o implementando una solución personalizada que verifique la fuente de instalación y aplique las restricciones correspondientes e implemente cifrados de base de datos sólidos.


👉🏿Técnicas como cambiar el nombre de variables y métodos, eliminar información de depuración y agregar fragmentos de código ficticios pueden ayudar a evitar intentos de ingeniería inversa. Por ejemplo, se pueden usar herramientas como ProGuard o DexGuard para ofuscar las aplicaciones de Android, mientras que los desarrolladores de iOS pueden preferir herramientas como SwiftShield u Obfuscator-LLVM. En el caso de Android, puede hacerlo al incluir lo siguiente en su archivo app/build.gradle con sus reglas en el archivo proguard-rules.pro .

 android { buildTypes { getByName("release") { // Enables code shrinking, obfuscation, and optimization for only // your project's release build type. Make sure to use a build // variant with `isDebuggable=false`. isMinifyEnabled = true // Enables resource shrinking, which is performed by the // Android Gradle plugin. isShrinkResources = true // Includes the default ProGuard rules files that are packaged with // the Android Gradle plugin. To learn more, go to the section about // R8 configuration files. proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } ... }

Fuente del código: Plataforma de desarrolladores de Android


👉🏿Integre mecanismos antimanipulación en la aplicación para detectar y evitar modificaciones en el tiempo de ejecución. Implemente la verificación de la suma de comprobación, las comprobaciones de integridad y la firma de código para identificar modificaciones no autorizadas y protegerse contra la manipulación del código. Los servicios como Google Play Protect y la verificación de firma de código de App Store brindan medidas antimanipulación integradas para la distribución de aplicaciones.


👉🏿Integre soluciones RASP que controlen activamente el comportamiento del tiempo de ejecución de la aplicación y detecten posibles ataques o intentos de manipulación. Herramientas como App-Ray, iXGuard de GuardSquare o App Threat Intelligence de Arxan brindan funciones de protección en tiempo de ejecución que detectan y mitigan vulnerabilidades en tiempo de ejecución y actividades no autorizadas.


👉🏿Implemente mecanismos de detección de root/jailbreak para identificar si la aplicación se está ejecutando en un dispositivo comprometido. Las bibliotecas como RootBeer o SafetyNet API para Android y Jailbreak Detection Library para iOS se pueden integrar para detectar el estado de root o jailbreak. Tras la detección, la aplicación puede tomar las medidas adecuadas, como restringir la funcionalidad o mostrar advertencias para evitar posibles riesgos de seguridad.


⬇️Defectos en Hardware o Procesadores:

Imagine que ha desarrollado una aplicación avanzada prefiriendo todas las medidas o estándares de seguridad, pero la aplicación se distribuye en dispositivos con fallas notables en sus recursos de hardware y procesadores, ¿cuál sería la efectividad de su esfuerzo en este caso? Bueno, eche un vistazo a los siguientes incidentes pasados notables que nos enseñan las lecciones.


⚠️ Vulnerabilidades de Qualcomm Snapdragon (2018):

Se descubrieron múltiples vulnerabilidades en los conjuntos de chips Qualcomm Snapdragon, que se utilizan ampliamente en dispositivos Android. La buena noticia es que ya fue solucionado pero hasta entonces, estas vulnerabilidades permitían a los atacantes obtener acceso a la raíz, eludir las medidas de seguridad y ejecutar código arbitrario. Al explotar estas fallas, los atacantes podrían comprometer la seguridad de las aplicaciones móviles que se ejecutan en dispositivos equipados con los chips Snapdragon afectados.


⚠️18 vulnerabilidades de día cero en chipsets Samsung Exynos (descubiertas entre finales de 2022 y principios de 2023):

Entre finales de 2022 y principios de 2023, Project Zero de Google (un renombrado equipo de búsqueda de errores de día cero) descubrió y reveló 18 vulnerabilidades de día cero en los conjuntos de chips Exynos de Samsung, que se utilizan ampliamente en dispositivos móviles, dispositivos portátiles y automóviles. Entre estas vulnerabilidades, cuatro se consideraron particularmente graves, ya que facilitaban la ejecución remota de código (RCE) desde Internet a la banda base.


✅Se pueden implementar varias medidas de seguridad de la siguiente manera:

  • Manténgase actualizado con los últimos parches de seguridad y actualizaciones de firmware proporcionados por los fabricantes de hardware o procesador.
  • Implemente controles de permisos efectivos dentro de las aplicaciones móviles y confirme que las aplicaciones solo solicitan los permisos necesarios para la funcionalidad prevista.
  • Implemente soluciones de MDM ya que las herramientas de MDM brindan capacidades como hacer cumplir las políticas de seguridad, controlar las instalaciones de aplicaciones y borrar dispositivos de forma remota en caso de pérdida o robo.
  • Ajuste los sólidos mecanismos de monitoreo de seguridad para detectar y responder a posibles incidentes de seguridad con prontitud. Supervise el comportamiento de los dispositivos y las aplicaciones en busca de anomalías e implemente planes de respuesta a incidentes para mitigar y abordar cualquier brecha de seguridad.

Desafíos en la seguridad de las aplicaciones móviles:

El rápido ritmo de los avances tecnológicos en el desarrollo de aplicaciones móviles abre nuevas vías para que los atacantes aprovechen las debilidades de seguridad. Aquí hay algunos desafíos notables:


  • El rápido ritmo de los avances tecnológicos en el desarrollo de aplicaciones móviles crea desafíos para mantenerse al día con las amenazas de seguridad emergentes y las técnicas de ataque, ya que los atacantes también se adaptan continuamente y encuentran nuevas formas de explotar las debilidades de seguridad en las aplicaciones móviles.
  • La diversidad de dispositivos móviles, sistemas operativos y versiones agrega complejidad a la seguridad de las aplicaciones móviles.
  • Los dispositivos móviles a menudo enfrentan retrasos en la recepción de actualizaciones del sistema operativo debido a la fragmentación del ecosistema que hace que una gran cantidad de dispositivos ejecuten versiones de software obsoletas que pueden contener vulnerabilidades conocidas.
  • Las aplicaciones móviles manejan grandes cantidades de datos personales y confidenciales de los usuarios que plantean problemas de privacidad.

Imagen de muestra


💡La depuración de aplicaciones móviles es una actividad gratificante:

La depuración de aplicaciones móviles es una actividad divertida, atractiva y gratificante que le permite mejorar sus habilidades en el desarrollo y la seguridad de aplicaciones. No solo le permite crear aplicaciones avanzadas y seguras, sino que también ofrece oportunidades para depurar aplicaciones existentes para varias empresas que le permiten obtener ingresos atractivos.


Al utilizar su experiencia en la depuración de aplicaciones móviles, puede brindar servicios valiosos a las organizaciones, identificar y solucionar problemas de seguridad en sus aplicaciones y contribuir a su éxito. Además, participar en programas de recompensas por errores y proyectos independientes de depuración como Google ( Programa de recompensas por vulnerabilidades de Google (VRP) ) o manzana ( Recompensa de seguridad de Apple ) puede ayudar aún más a sus ganancias. Por lo tanto, abrace el apasionante mundo de la depuración de aplicaciones móviles, donde sus habilidades y pasión pueden conducir tanto al crecimiento personal como a las recompensas financieras.

Conclusión:

Las prácticas de codificación seguras a lo largo del proceso de desarrollo son cruciales para minimizar los problemas de seguridad graves en las aplicaciones móviles. Si bien la depuración de la seguridad de las aplicaciones puede ser una tarea desafiante debido a la evolución de las técnicas de los atacantes, es esencial priorizar las mejores prácticas y mantenerse informado sobre la información y los estándares actualizados para proteger los datos y la privacidad de los usuarios. Es importante tener en cuenta que las plataformas de aplicaciones subyacentes como Android o iOS, así como los dispositivos, pueden tener vulnerabilidades, por lo que es necesario utilizar las mejores estrategias de depuración y medidas de seguridad para mantener las aplicaciones actualizadas.


La depuración móvil no se limita a los desarrolladores; incluso como usuario, puede contribuir a proteger a millones de usuarios en todo el mundo. Además, la depuración móvil puede presentar oportunidades para ganar dinero.