Recientemente, el Proyecto Abierto de Seguridad de Aplicaciones en Todo el Mundo (OWASP) actualizó su lista de los 10 principales riesgos para aplicaciones móviles por primera vez desde 2016. ¿El riesgo de seguridad en la cima esta vez? “Uso indebido de credenciales.”
Este es un llamado de atención a los proveedores de aplicaciones móviles sobre el peligro de las credenciales codificadas y una mala higiene de secretos en general.
Mala gestión de los secretos que tu aplicación utiliza, especialmente en aplicaciones móviles, puede llevar a violaciones de seguridad devastadoras. Echemos un vistazo más de cerca a este nuevo enfoque principal para asegurar nuestras aplicaciones y lo que podemos hacer juntos para abordar estas preocupaciones.
La creciente amenaza del manejo inadecuado de secretos
El uso indebido de credenciales ocurre cuando secretos como contraseñas o tokens no están adecuadamente protegidos, lo que los hace vulnerables al robo por parte de atacantes. Las aplicaciones móviles, en particular, son notoriamente conocidas por filtrar secretos. Según una investigación de CyberNews, más del 50% de las aplicaciones móviles en plataformas como Google Play Store tienen secretos codificados, lo que significa que estas piezas sensibles de información pueden ser fácilmente descubiertas por actores maliciosos.
Si miramos la definición proporcionada por OWASP, rápidamente entendemos por qué este riesgo es particularmente preocupante:
Cuando se exponen secretos, los atacantes pueden usarlos para obtener acceso no autorizado a servicios, datos o incluso sistemas enteros. Esto hace que la gestión de secretos sea una preocupación primordial tanto para los desarrolladores de aplicaciones como para los equipos de seguridad.
Por qué los Secretos son el Objetivo Principal
Los secretos son objetivos atractivos para los atacantes porque otorgan acceso directo a sistemas críticos. A diferencia de otras vulnerabilidades que requieren una explotación adicional, una vez que un atacante obtiene acceso a una clave de API o contraseña, a menudo tienen un camino claro hacia recursos valiosos.
Por ejemplo, las claves de API codificadas en aplicaciones móviles pueden extraerse mediante herramientas de análisis estático y utilizarse para realizar solicitudes de API no autorizadas. Esto no solo compromete los datos de los usuarios, sino que también puede ocasionar pérdidas financieras, especialmente si estas claves están vinculadas a servicios que facturan según el uso.
La Secreto del Lado del Cliente es Difícil
Un punto clave para comprender la gestión de secretos es que la secreción del lado del cliente es prácticamente imposible. No importa cuán bien estén obfuscados o cifrados los secretos en una aplicación móvil, los atacantes con suficientes recursos pueden ingenierizar inversamente la aplicación y recuperarlos. Esto se debe a que los secretos, en algún momento, deben estar disponibles en la memoria de la aplicación para su uso. A través del análisis dinámico, los atacantes pueden recuperar estos secretos y explotarlos.
Como resultado, la única forma segura de gestionar secretos es mantenerlos fuera del lado del cliente por completo. En lugar de incrustar claves de API o credenciales en la aplicación, los desarrolladores deberían trasladar esta información sensible al backend, donde tienen más control sobre el acceso y la seguridad.
Mejores Prácticas para la Gestión de Secretos
Para abordar el desafío de la fuga de secretos, los equipos de desarrollo deben implementar una serie de mejores prácticas.
1. Nunca Codificar Secretos
Los secretos nunca deben almacenarse directamente en el código de la aplicación. Esto incluye claves de API, tokens de autenticación y cualquier otro dato sensible. Codificar secretos es una de las formas más comunes en que se filtran y puede provocar brechas de seguridad significativas.
2. Utilizar APIs de Almacenamiento Seguro
Para secretos de usuario (por ejemplo, contraseñas, tokens), los desarrolladores deben utilizar mecanismos de almacenamiento seguro proporcionados por los sistemas operativos móviles. Por ejemplo, iOS ofrece el Keychain y Android tiene el Keystore. Estas APIs permiten el almacenamiento seguro y el control de acceso de datos sensibles en el dispositivo.
3. Mover Secretos al Backend
En lugar de manejar secretos en el lado del cliente, las aplicaciones móviles deben utilizar lógica en el servidor para gestionar claves de API y otros datos sensibles. Colocar estas operaciones en el backend reduce drásticamente el riesgo de fuga de secretos.
4. Rotar e Invalidar Secretos Regularmente
Incluso con una gestión adecuada de secretos, estos deben rotarse con regularidad y las claves comprometidas deben invalidarse de inmediato. Esto asegura que si un atacante obtiene acceso a un secreto, no pueda usarlo indefinidamente.
5. Pinning de Certificados
Cuando los secretos se envían a la aplicación en tiempo de ejecución, los desarrolladores deben utilizar el pinning de certificados para garantizar que la comunicación sea segura. Esto añade una capa adicional de protección al verificar la identidad del servidor durante la conexión.
6. Implementar la Detección de Secretos en todo el Ciclo de Vida del Desarrollo
Gestionar secretos en el ciclo de vida del desarrollo implica inevitablemente errores y filtraciones en algún momento. OWASP destaca la necesidad de “un proceso de pruebas de seguridad exhaustivo.” Es necesario aplicar múltiples capas de detección en las etapas de confirmación, envío y construcción, y permitir una remediación simplificada en caso de incidente.
Es crucial tener en cuenta que un secreto codificado no necesita llegar a producción para convertirse en una vulnerabilidad de alto impacto.
Las Consecuencias de Secretos Filtrados
Cuando se filtran secretos, las consecuencias pueden ser graves. Los atacantes pueden utilizar credenciales expuestas para acceder a datos sensibles, manipular la lógica empresarial o incluso tomar el control de sistemas enteros. Por ejemplo, si se filtra una clave de API vinculada a un sistema de pagos, los atacantes podrían iniciar transacciones fraudulentas, lo que resultaría en pérdidas financieras tanto para la empresa como para sus clientes.
“Adversaries can exploit vulnerabilities in both hardcoded credentials and improper credential usage. Once these vulnerabilities are identified, an attacker can use hardcoded credentials to gain unauthorized access to sensitive functionalities of the mobile app. They can also misuse credentials, for instance, by gaining access through improperly validated or stored credentials, thereby bypassing the need for legitimate access.”
Además, los secretos filtrados pueden comprometer la integridad de una aplicación móvil y provocar costosos daños legales y de reputación. Por ejemplo, si una aplicación de salud filtra claves de API que permiten el acceso a datos de pacientes, podría resultar en multas regulatorias significativas y erosionar la confianza del cliente.
Herramientas de Detección de Secretos
Para ayudar a abordar el problema de la filtración de secretos, las herramientas de detección de secretos se han vuelto esenciales para el desarrollo de aplicaciones modernas. Estas herramientas escanean repositorios de código, tuberías CI/CD y entornos de producción en busca de secretos expuestos, ayudando a los equipos a detectar vulnerabilidades antes de que sean explotadas.
Estas herramientas y plataformas permiten el monitoreo en tiempo real de los cambios en el código, garantizando que los secretos no se codifiquen accidentalmente durante el proceso de desarrollo. Al integrar tales herramientas en el ciclo de vida del desarrollo, las organizaciones pueden reducir en gran medida el riesgo de filtraciones de secretos.
La Seguridad de los Secretos es un Viaje en el que Todos Estamos
La gestión de secretos no es solo un problema técnico; es un desafío crítico de seguridad que puede tener consecuencias de gran alcance si no se maneja adecuadamente. Las organizaciones pueden proteger sus datos sensibles y reducir la probabilidad de costosas filtraciones al comprender los riesgos del uso indebido de credenciales, implementar mejores prácticas para asegurar secretos y utilizar herramientas diseñadas para detectar filtraciones.
A medida que los ciberataques y las filtraciones continúan acaparando los titulares, asegurar los secretos es la estrategia de protección más esencial para mantener a las organizaciones y sistemas seguros. Gracias a Dios, los voluntarios de OWASP están ahí para ayudarnos a mantenernos al día con el panorama de ciberseguridad en constante cambio.
Referencia
- Los 10 Principales Riesgos para Aplicaciones Móviles, Proyecto Abierto de Seguridad de Aplicaciones en Todo el Mundo (OWASP)
Source:
https://dzone.com/articles/secrets-security-important-issue-mobile-apps