Los desarrolladores de aplicaciones móviles se enfrentan constantemente a la presión de ponerse al día o adelantarse a la competencia. Las funciones móviles innovadoras ciertamente mejoran la experiencia del usuario, pero el ritmo acelerado del desarrollo de aplicaciones móviles a menudo reduce la seguridad.
Los equipos de DevSecOps pueden acelerar la entrega de aplicaciones móviles de alta calidad realizando pruebas de seguridad continuas durante todo el ciclo de vida del desarrollo de software (SDLC) y confiando en las herramientas móviles de DevSecOps que pueden ayudar a facilitar la remediación. Y, por supuesto, perfeccionar su oficio mediante la adopción de técnicas de codificación segura ayuda a los desarrolladores a evitar que los problemas de seguridad y privacidad se filtren en sus aplicaciones móviles Android e iOS en primer lugar.
Como una de las principales empresas de seguridad de aplicaciones móviles, los expertos de NowSecure han realizado miles de pruebas de penetración de aplicaciones móviles que descubren vulnerabilidades comunes de seguridad y privacidad. Lo que sigue es un resumen de los consejos técnicos que compartimos en nuestro boletín dos veces al mes. Boletín All Things Mobile DevSecOps. Suscríbase ahora y póngase al día con los consejos anteriores en esta compilación de consejos seguros para el desarrollo de aplicaciones móviles.
Exposición de datos locales
- Anonimice los datos que recopila su aplicación móvil y, mejor aún, elimínelos lo antes posible.
- Si su aplicación de Android usa WebView para acceder a datos confidenciales, puede usar el método clearCache() para eliminar cualquier archivo almacenado localmente.
- Los desarrolladores y los expertos en seguridad siempre deben asumir que el código móvil se someterá a ingeniería inversa; por lo general, es el punto de partida para un atacante. Evite almacenar información valiosa y confidencial localmente en el dispositivo.
Defensa de red en profundidad y comunicación
- Asegúrese de que las aplicaciones utilicen los estándares de seguridad de red adecuados para las comunicaciones, los puntos finales estén bien configurados y tenga un esquema de autenticación sólido para evitar una amplia gama de ataques a la red.
- Aproveche App Transport Security (ATS) para ioS y Network Security Configuration para Android para conexiones seguras de aplicaciones móviles.
- Antes de que los desarrolladores móviles agreguen la funcionalidad de red a su aplicación móvil, considere las mejores prácticas de seguridad de red: limite los datos del usuario a través de la red, envíe el tráfico a través de una comunicación segura y considere en qué certificados debe confiar su aplicación móvil.
- La mejor manera (y realmente la única manera) de probar la fijación de certificados de aplicaciones móviles es ejecutar un ataque MiTM en su contra.
Autorización de autenticación
- Asegúrese de que su aplicación siga el principio de seguridad de privilegio mínimo asegurándose de que su aplicación solo solicite el nivel mínimo de permisos necesarios para que la aplicación funcione.
- Ejecute verificaciones de autorización para roles y permisos de un usuario autenticado en el lado del servidor en lugar del lado del cliente.
- Al anular los métodos que realizan la validación de certificados o la verificación del nombre de host en Android (como el método checkServerTrusted), asegúrese siempre de incluir las validaciones adecuadas para evitar ataques MITM.
Criptografía
- El mal uso de la criptografía se ha convertido en una fuente común de vulnerabilidades en las aplicaciones móviles y requiere pruebas de seguridad antes del lanzamiento.
- Si una aplicación de iOS debe cifrar el contenido del disco, los desarrolladores deben proteger los datos de los usuarios utilizando el nivel más alto de protección de archivos: completo.
- En 2019, Apple presentó CryptoKit para facilitar la vida de los desarrolladores de iOS en la realización de operaciones criptográficas: esta API Swift de alto nivel puede ahorrarle tiempo y brindarle a su aplicación una seguridad sólida.
Calidad del código
- Asegúrese de que sus aplicaciones utilicen las versiones más recientes y seguras de los SDK. Manténgase al tanto de las noticias de seguridad para identificar versiones vulnerables de SDK y eliminarlas de su aplicación o usar alternativas.
- Elimine fragmentos de código no utilizados o irrelevantes y datos de depuración para mejorar el rendimiento del tiempo de ejecución y reducir el vector de ataque.
- Practique la codificación segura evitando el uso de cadenas de consulta en datos confidenciales.
- Revise el código de la aplicación para asegurarse de que los métodos y las funciones realicen las funcionalidades previstas y no otorguen privilegios de aplicación no deseados, como permisos de archivo innecesarios o carga de contenido. Esto es especialmente importante cuando se hace referencia a interfaces de JavaScript en Android.
- Cuando un usuario cambia la aplicación al segundo plano, el sistema toma una «instantánea» de la ventana principal de la aplicación. Los desarrolladores deben eliminar todos los datos confidenciales de las vistas antes de pasar al fondo.
Ingeniería inversa y resiliencia de aplicaciones
- Utilice la ofuscación de código en todas las compilaciones de producción para mitigar el riesgo de la ingeniería inversa.
- Utilice la API de AndroidSafetyNet para verificar la manipulación de dispositivos Android y protegerse contra la ingeniería inversa.
- Evite el uso de fuentes codificadas tanto como sea posible. La codificación de datos en el código fuente de su aplicación (credenciales, claves criptográficas y fuentes sensibles similares) representa un vector de ataque fácil a través de la ingeniería inversa.
- Al enviar una aplicación a producción, asegúrese de borrar todos los datos codificados que se usaron para las pruebas de control de calidad.
- Emplee técnicas de protección de la memoria, como protección contra desbordamiento de búfer o agitación binaria para protegerse contra las amenazas.
- Tener proveedores de contenido desprotegidos en su aplicación aumenta su superficie de ataque, lo que podría permitir que las aplicaciones malintencionadas apunten a su aplicación a través de ataques peligrosos como la inyección de SQL y el cruce de rutas.
Modelado de amenazas
- La mejor manera de implementar una aplicación sólida y saludable es realizar una postura de seguridad básica de su aplicación móvil: un modelo de amenaza. Intente comprender a qué puede ser vulnerable su aplicación en la naturaleza.
- Eleve el nivel de su aplicación asegurándose de que el modelado de amenazas guíe sus controles de seguridad.
- Consulte los Estándares de verificación de seguridad de aplicaciones móviles (MASVS) de OWASP como punto de partida para el modelado de amenazas.
- Base los requisitos de seguridad de las aplicaciones móviles en estándares como OWASP MASVS.
Pruebas de seguridad de aplicaciones móviles
- Realice pruebas de penetración para verificar que el backend de una aplicación móvil sea seguro.
- Realice una prueba de penetración exhaustiva antes de lanzar o lanzar una actualización importante de una aplicación móvil confidencial para garantizar la calidad.
- Aquellos que usan herramientas de desarrollo de código bajo deben asegurarse de probar los binarios de la aplicación móvil para identificar los riesgos de seguridad, como permisos mal configurados o fugas de datos.
- Pruebe un binario de aplicación móvil en lugar de un formato sin compilar o código fuente porque el binario es lo que se libera y lo que un atacante podría realmente apuntar.
- Asegúrese de implementar una herramienta de prueba de seguridad de aplicaciones móviles de un proveedor confiable que identifique vulnerabilidades y minimice los falsos positivos.
- Cuando implemente WebViews en su aplicación de Android, utilice funciones de seguridad gratuitas como EnableSafeBrowsing y limpieza de caché. Estos, además de deshabilitar WebViews depurables, harán que su aplicación/WebViews sea menos prominente para los ataques.
Próximos cambios en el sistema operativo móvil
Muchos desarrolladores de Android saben que, a partir de noviembre de 2021, las actualizaciones de aplicaciones de Android deben tener como objetivo el nivel de API 30 o superior. Esté preparado para realizar cambios para mantener su aplicación actualizada y adaptarse a los cambios de comportamiento de la aplicación, así como a las mejoras de seguridad y privacidad de Android 12. Y los desarrolladores de iOS deben marcar sus calendarios para abril de 2022. A partir de esa fecha, todas las aplicaciones de ioS y iPadOS deben compilarse con Xcode 13 y el SDK de iOS 15 cuando se envían a Apple App Store.
Como se mencionó anteriormente, manténgase al día con las últimas tendencias móviles de DevSecOps con nuestro boletín informativo: suscribir para recibirlo en tu bandeja de entrada el primer y tercer miércoles de cada mes. Tanto los desarrolladores como los analistas de seguridad pueden mejorar y ampliar sus conocimientos sobre seguridad de aplicaciones móviles a través de la capacitación gratuita de NowSecure Academy. Y finalmente, esperamos que seguir los consejos anteriores pueda ayudarlo a crear aplicaciones móviles seguras más rápido.