Medidas tomadas para mejorar la seguridad de una aplicación
La seguridad de las aplicaciones (abreviatura AppSec ) incluye todas las tareas que introducen un ciclo de vida de desarrollo de software seguro para los equipos de desarrollo. Su objetivo final es mejorar las prácticas de seguridad y, a través de ello, encontrar, solucionar y preferiblemente prevenir problemas de seguridad dentro de las aplicaciones. Abarca todo el ciclo de vida de la aplicación desde el análisis de requisitos, el diseño, la implementación, la verificación y el mantenimiento. [1]
La seguridad de aplicaciones web es una rama de la seguridad de la información que se ocupa específicamente de la seguridad de sitios web , aplicaciones web y servicios web . En un nivel alto, la seguridad de las aplicaciones web se basa en los principios de seguridad de las aplicaciones, pero los aplica específicamente a Internet y los sistemas web . [2] [3]
Las herramientas de seguridad de aplicaciones web son herramientas especializadas para trabajar con tráfico HTTP, por ejemplo, firewalls de aplicaciones web .
Enfoques
Diferentes enfoques encontrarán diferentes subconjuntos de vulnerabilidades de seguridad ocultas en una aplicación y son más efectivos en diferentes momentos del ciclo de vida del software. Cada uno de ellos representa diferentes compensaciones de tiempo, esfuerzo, costo y vulnerabilidades encontradas.
- Revisión de diseño . Antes de escribir el código, se puede revisar la arquitectura y el diseño de la aplicación para detectar problemas de seguridad. Una técnica común en esta fase es la creación de un modelo de amenaza .
- Revisión de seguridad de Whitebox o revisión de código . Se trata de un ingeniero de seguridad que comprende profundamente la aplicación al revisar manualmente el código fuente y detectar fallas de seguridad. Mediante la comprensión de la aplicación, se pueden encontrar vulnerabilidades exclusivas de la aplicación.
- Auditoría de seguridad de caja negra . Esto se realiza únicamente mediante el uso de una aplicación que la prueba en busca de vulnerabilidades de seguridad; no se requiere código fuente.
- Herramientas automatizadas. Muchas herramientas de seguridad se pueden automatizar mediante su inclusión en el entorno de desarrollo o prueba. Ejemplos de ellos son las herramientas DAST/SAST automatizadas que se integran en el editor de código o en plataformas CI/CD.
- Plataformas de vulnerabilidad coordinadas . Se trata de soluciones de seguridad de aplicaciones impulsadas por piratas informáticos que ofrecen muchos sitios web y desarrolladores de software mediante las cuales las personas pueden recibir reconocimiento y compensación por informar errores.
Amenazas de seguridad
El Proyecto Abierto de Seguridad de Aplicaciones Web ( OWASP ) proporciona recursos abiertos y gratuitos. Está dirigido por una organización sin fines de lucro llamada The OWASP Foundation. El OWASP Top 10 - 2017 es el resultado de una investigación reciente basada en datos completos recopilados de más de 40 organizaciones asociadas. Estos datos revelaron aproximadamente 2,3 millones de vulnerabilidades en más de 50.000 aplicaciones. [4] Según OWASP Top 10 - 2021, los diez riesgos de seguridad de aplicaciones web más críticos incluyen: [5]
- Control de acceso roto
- Fallos criptográficos
- Inyección
- Diseño inseguro
- Configuración incorrecta de seguridad
- Componentes vulnerables y obsoletos
- Fallos de identificación y autenticación
- Fallas de integridad de datos y software
- Fallas de monitoreo y registro de seguridad*
- Falsificación de solicitudes del lado del servidor (SSRF)*
Herramientas para pruebas de seguridad
Las técnicas de prueba de seguridad buscan vulnerabilidades o agujeros de seguridad en las aplicaciones. Estas vulnerabilidades dejan las aplicaciones abiertas a la explotación . Idealmente, las pruebas de seguridad se implementan durante todo el ciclo de vida de desarrollo de software (SDLC) para que las vulnerabilidades puedan abordarse de manera oportuna y exhaustiva.
Existen muchos tipos de herramientas automatizadas para identificar vulnerabilidades en aplicaciones. Las categorías de herramientas comunes utilizadas para identificar vulnerabilidades de aplicaciones incluyen:
- Static Application Security Testing (SAST) analiza el código fuente en busca de vulnerabilidades de seguridad durante el desarrollo de una aplicación. En comparación con DAST, SAST se puede utilizar incluso antes de que la aplicación esté en estado ejecutable. Como SAST tiene acceso al código fuente completo, se trata de un enfoque de caja blanca. Esto puede producir resultados más detallados, pero puede generar muchos falsos positivos que deben verificarse manualmente.
- Las pruebas dinámicas de seguridad de aplicaciones (DAST, a menudo llamadas escáneres de vulnerabilidades ) detectan automáticamente vulnerabilidades rastreando y analizando sitios web. Este método es altamente escalable, fácilmente integrable y rápido. Las herramientas DAST son muy adecuadas para abordar ataques de bajo nivel, como fallas de inyección, pero no son adecuadas para detectar fallas de alto nivel, por ejemplo, fallas de lógica o de lógica de negocios. [6] Las herramientas de fuzzing se utilizan comúnmente para pruebas de entrada. [7]
- Las pruebas interactivas de seguridad de aplicaciones (IAST) evalúan las aplicaciones desde dentro utilizando instrumentación de software. Esto combina los puntos fuertes de los métodos SAST y DAST, además de proporcionar acceso al código, tráfico HTTP, información de la biblioteca, conexiones de backend e información de configuración. [8] [9] Algunos productos IAST requieren que la aplicación sea atacada, mientras que otros pueden usarse durante las pruebas normales de control de calidad. [10] [ ¿ fuente promocional? ] [11] [ ¿ fuente promocional? ]
- La autoprotección de aplicaciones en tiempo de ejecución aumenta las aplicaciones existentes para proporcionar detección y prevención de intrusiones desde el tiempo de ejecución de una aplicación.
- Los escáneres de dependencia (también llamados análisis de composición de software ) intentan detectar el uso de componentes de software con vulnerabilidades conocidas. Estas herramientas pueden funcionar bajo demanda, por ejemplo, durante el proceso de construcción del código fuente, o periódicamente.
- La abstracción es la idea de hacer que las cosas más complejas sean menos complejas.
- Pruebas de seguridad de aplicaciones como servicio (ASTaaS): en este escenario, la organización contrata a una empresa externa para realizar todas las pruebas de sus aplicaciones. ASTaaS generalmente combina métodos de seguridad estáticos y dinámicos, incluidas pruebas de penetración y evaluación de interfaces de programación de aplicaciones (API).
Resin es una nueva herramienta para mejorar la seguridad de las aplicaciones y reducir las vulnerabilidades. Permite a los desarrolladores especificar reglas sobre cómo deben fluir los datos a través de una aplicación para evitar problemas de seguridad. Esto se hace utilizando objetos de política para definir las reglas, seguimiento de datos para monitorear el flujo de datos y objetos de filtro para verificar las reglas en puntos específicos del flujo de datos. [12]
Normas y regulaciones de seguridad.
- Codificación segura CERT
- ISO/IEC 27034-1:2011 Tecnología de la información. Técnicas de seguridad. Seguridad de las aplicaciones. Parte 1: Descripción general y conceptos.
- ISO/IEC TR 24772:2013 Tecnología de la información. Lenguajes de programación. Orientación para evitar vulnerabilidades en los lenguajes de programación mediante la selección y el uso del lenguaje.
- Publicación especial del NIST 800-53
- OWASP ASVS: Estándar de verificación de seguridad de aplicaciones web [13]
Ver también
Referencias
- ^ Happe, Andreas (3 de junio de 2021). "¿Qué es AppSec de todos modos?". snikt.net .
- ^ "Descripción general de la seguridad de las aplicaciones web". 2015-10-23.
- ^ Shuaibu, Bala Musa; Norwawi, Norita Md; Selamat, Mohd Hasan; Al-Alwani, Abdulkareem (17 de enero de 2013). "Revisión sistemática del modelo de desarrollo de seguridad de aplicaciones web". Revisión de inteligencia artificial . 43 (2): 259–276. doi :10.1007/s10462-012-9375-6. ISSN 0269-2821. S2CID 15221613.
- ^ Korolov, María (27 de abril de 2017). "El último OWASP Top 10 analiza las API y las aplicaciones web: la nueva lista OWASP Top 10 ya está disponible y, aunque la mayor parte sigue siendo la misma, hay nuevas incorporaciones que se centran en las aplicaciones web y las API". OSC . ProQuest1892694046 .
- ^ "OWASP Top 10 - 2021: Los diez riesgos de seguridad de aplicaciones web más críticos". Abra el proyecto de seguridad de aplicaciones web . 2021 . Consultado el 11 de enero de 2022 .
- ^ "Escáneres de vulnerabilidad de aplicaciones web". NIST.
- ^ "Borrosidad". OWASP.
- ^ Williams, Jeff (2 de julio de 2015). "Entiendo SAST y DAST, pero ¿qué es un IAST y por qué es importante?". Contraste de Seguridad . Consultado el 10 de abril de 2018 .
- ^ Velasco, Roberto (7 de mayo de 2020). "¿Qué es IAST? Todo sobre las pruebas de seguridad de aplicaciones interactivas". Seguridad HDV . Consultado el 7 de mayo de 2020 .
- ^ Abezgauz, Irene (17 de febrero de 2014). "Introducción a las pruebas de seguridad de aplicaciones interactivas". Cotización. Archivado desde el original el 3 de abril de 2018 . Consultado el 25 de enero de 2018 .
- ^ Rohr, Matthias (26 de noviembre de 2015). "IAST: un nuevo enfoque para pruebas de seguridad ágiles". Secodís.
- ^ Sí, Alejandro; Wang, Xi; Zeldovich, Nickolai; Kaashoek, M. Frans (11 de octubre de 2009). "Mejora de la seguridad de las aplicaciones con aserciones de flujo de datos". Actas del 22º simposio de ACM SIGOPS sobre principios de sistemas operativos . SOSP'09. Nueva York, NY, EE.UU.: Asociación de Maquinaria de Computación. págs. 291–304. doi :10.1145/1629575.1629604. hdl : 1721.1/67015 . ISBN 978-1-60558-752-3. S2CID 7189495.
- ^ "Estándar de verificación de seguridad de aplicaciones OWASP".