La seguridad de las aplicaciones abarca las medidas que se toman para mejorar la seguridad de una aplicación, a menudo mediante la búsqueda, reparación y prevención de vulnerabilidades de seguridad . Se utilizan diferentes técnicas para sacar a la luz tales vulnerabilidades de seguridad en diferentes etapas del ciclo de vida de una aplicación, como diseño , desarrollo , implementación , actualización y mantenimiento .
Se observa un conjunto de fallas de seguridad comunes en constante evolución pero en gran medida consistente en diferentes aplicaciones, ver fallas comunes .
Condiciones
- Activo . Recurso de valor como los datos en una base de datos, dinero en una cuenta, archivo en el sistema de archivos o cualquier recurso del sistema.
- Vulnerabilidad . Una debilidad o brecha en el programa de seguridad que puede ser aprovechada por amenazas para obtener acceso no autorizado a un activo.
- Atacar (o explotar). Una acción realizada para dañar un activo.
- Amenaza . Todo lo que pueda aprovechar una vulnerabilidad y obtener, dañar o destruir un activo.
Técnicas
Las diferentes técnicas encontrarán diferentes subconjuntos de vulnerabilidades de seguridad al acecho en una aplicación y son más efectivas 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 seguridad de Whitebox o revisión de código . Este es un ingeniero de seguridad que comprende profundamente la aplicación mediante la revisión manual del código fuente y la detección de fallas de seguridad. A través de la comprensión de la aplicación, se pueden encontrar vulnerabilidades exclusivas de la aplicación.
- Auditoría de seguridad de caja negra . Esto es solo mediante el uso de una aplicación que lo prueba en busca de vulnerabilidades de seguridad, no se requiere código fuente.
- Revisión de diseño . Antes de escribir el código, se trabaja con un modelo de amenaza de la aplicación. A veces, junto con una especificación o un documento de diseño.
- Estampación. Existen muchas herramientas automatizadas que prueban fallas de seguridad, a menudo con una tasa de falsos positivos más alta que la participación de un humano.
- 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 de errores.
Utilizar estas técnicas de manera adecuada durante todo el ciclo de vida del desarrollo de software (SDLC) para maximizar la seguridad es la función de un equipo de seguridad de aplicaciones .
Amenazas y ataques a aplicaciones
De acuerdo con el libro de patrones y prácticas Mejorando la seguridad de las aplicaciones web , las siguientes son clases de amenazas y ataques comunes a la seguridad de las aplicaciones:
Categoría | Amenazas y ataques |
---|---|
Validación de entrada | Desbordamiento de búfer ; secuencias de comandos entre sitios ; Inyección SQL ; canonicalización |
Manipulación de software | El atacante modifica el comportamiento en tiempo de ejecución de una aplicación existente para realizar acciones no autorizadas; explotado a través de parches binarios, sustitución de código o extensión de código |
Autenticación | Espionaje de la red; Ataque de fuerza bruta ; ataques de diccionario ; repetición de cookies; robo de credenciales |
Autorización | Elevación de privilegios; divulgación de datos confidenciales; manipulación de datos; atraer ataques |
Gestión de la configuración | Acceso no autorizado a las interfaces de administración; acceso no autorizado a los almacenes de configuración; recuperación de datos de configuración de texto claro; falta de responsabilidad individual; cuentas de servicio y proceso con privilegios excesivos |
Información sensible | Acceda a códigos o datos confidenciales almacenados; escuchas en la red; manipulación de código / datos |
Gestión de sesiones | Secuestro de sesiones ; repetición de la sesión ; hombre en el medio |
Criptografía | Generación o gestión de claves deficientes; cifrado débil o personalizado |
Manipulación de parámetros | Manipulación de cadenas de consulta; manipulación de campos de formulario; manipulación de cookies; Manipulación de encabezados HTTP |
Gestión de excepciones | Divulgación de información; negación de servicio |
Auditoría y registro | El usuario niega haber realizado una operación; el atacante explota una aplicación sin dejar rastro; el atacante cubre sus huellas |
La comunidad OWASP publica una lista de las 10 principales vulnerabilidades para aplicaciones web y describe las mejores prácticas de seguridad para las organizaciones y, al mismo tiempo, apunta a crear estándares abiertos para la industria. [1] [ fuente promocional? ] A partir de 2017, la organización enumera las principales amenazas a la seguridad de las aplicaciones como: [2]
Categoría | Amenazas / Ataques |
---|---|
Inyección | Inyección SQL; NoSQL ; Comando del SO; Mapeo relacional de objetos ; Inyección de LDAP |
Autenticación rota | Relleno de credenciales ; ataques de fuerza bruta; contraseñas débiles |
Exposición de datos sensibles | Criptografía débil; cifrado no reforzado |
Entidades externas XML | Ataque de entidad externa XML |
Control de acceso roto | Configuración incorrecta de CORS; forzar la navegación; elevación de privilegio |
Configuración incorrecta de seguridad | Defectos sin parchear; no establecer valores de seguridad en la configuración; software desactualizado o vulnerable |
Secuencias de comandos entre sitios (XSS) | XSS reflejado; XSS almacenado; DOM XSS |
Deserialización insegura | Se modifica la estructura de objetos y datos; manipulación de datos |
Usar componentes con vulnerabilidades conocidas | Software desactualizado; falla al escanear en busca de vulnerabilidades; falla al arreglar los marcos de la plataforma subyacente; falla en la compatibilidad de la biblioteca actualizada o mejorada |
Registro y monitoreo insuficientes | No registrar eventos auditables; no generar mensajes de registro claros: alertas inapropiadas; Falla en la detección o alerta de ataques activos en o casi en tiempo real. |
Seguridad de las aplicaciones móviles
Se espera que la proporción de dispositivos móviles que brindan funcionalidad de plataforma abierta continúe aumentando en el futuro. La apertura de estas plataformas ofrece oportunidades significativas para todas las partes del ecosistema móvil al brindar la capacidad de ofrecer programas y servicios flexibles = opciones que pueden instalarse, eliminarse o actualizarse varias veces de acuerdo con las necesidades y requisitos del usuario. Sin embargo, la apertura conlleva responsabilidad y el acceso irrestricto a los recursos móviles y las API por parte de aplicaciones de origen desconocido o no confiable podría resultar en daños para el usuario, el dispositivo, la red o todos estos, si no se gestionan con arquitecturas de seguridad adecuadas y precauciones de red. La seguridad de las aplicaciones se proporciona de alguna forma en la mayoría de los dispositivos móviles con sistemas operativos abiertos ( Symbian OS , [3] BREW , etc.). En 2017, Google expandió su Programa de Recompensas por Vulnerabilidad para cubrir las vulnerabilidades encontradas en aplicaciones desarrolladas por terceros y disponibles a través de Google Play Store. [4] Los grupos de la industria también han creado recomendaciones que incluyen la Asociación GSM y la Plataforma de Terminal Móvil Abierta (OMTP). [5]
Existen varias estrategias para mejorar la seguridad de las aplicaciones móviles, que incluyen:
- Lista blanca de aplicaciones
- Garantizar la seguridad de la capa de transporte
- Autenticación y autorización sólidas
- Cifrado de datos cuando se escriben en la memoria
- Sandboxing de aplicaciones
- Otorgar acceso a la aplicación a nivel de API
- Procesos vinculados a una identificación de usuario
- Interacciones predefinidas entre la aplicación móvil y el sistema operativo
- Requerir la entrada del usuario para acceso privilegiado / elevado
- Manejo adecuado de la sesión
Pruebas de seguridad para aplicaciones
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 a lo largo de todo el ciclo de vida del desarrollo de software (SDLC) para que las vulnerabilidades se puedan abordar de manera oportuna y exhaustiva. Como explica Anastasiia Voitova, "un SDLC seguro se configura agregando actividades relacionadas con la seguridad a un proceso de desarrollo existente". [6] El ciclo de vida de desarrollo de software seguro (SSDLC) consta de etapas tales como evaluación de riesgos, evaluación de riesgos, modelado de amenazas, planificación de seguridad, codificación segura, verificación de seguridad, operaciones seguras y respuesta a incidentes.
Desafortunadamente, las pruebas a menudo se llevan a cabo como una ocurrencia tardía al final del ciclo de desarrollo. Con el crecimiento de la entrega continua y DevOps como modelos populares de desarrollo e implementación de software, [7] [ ¿fuente promocional? ] los modelos de seguridad continua son cada vez más populares. [8] [ fuente promocional? ] [9] [ fuente promocional? ]
Los escáneres de vulnerabilidad , y más específicamente los escáneres de aplicaciones web, también conocidos como herramientas de prueba de penetración (es decir, herramientas de piratería ética ) han sido históricamente utilizados por organizaciones de seguridad dentro de corporaciones y consultores de seguridad para automatizar las pruebas de seguridad de solicitudes / respuestas http; sin embargo, esto no sustituye a la necesidad de una revisión real del código fuente. Las revisiones de código físico del código fuente de una aplicación se pueden realizar de forma manual o automatizada. Dado el tamaño común de los programas individuales (a menudo 500.000 líneas de código o más), el cerebro humano no puede ejecutar un análisis de flujo de datos completo necesario para verificar por completo todas las rutas tortuosas de un programa de aplicación para encontrar puntos de vulnerabilidad. El cerebro humano es más adecuado para filtrar, interrumpir e informar los resultados de las herramientas de análisis de código fuente automatizadas disponibles comercialmente en lugar de tratar de rastrear todas las rutas posibles a través de una base de código compilado para encontrar las vulnerabilidades de nivel de causa raíz.
Existen muchos tipos de herramientas automatizadas para identificar vulnerabilidades en aplicaciones. Algunos requieren una gran experiencia en seguridad para su uso y otros están diseñados para un uso totalmente automatizado. Los resultados dependen de los tipos de información (fuente, binario, tráfico HTTP, configuración, bibliotecas, conexiones) proporcionada a la herramienta, la calidad del análisis y el alcance de las vulnerabilidades cubiertas. Las tecnologías comunes que se utilizan para identificar las vulnerabilidades de las aplicaciones incluyen:
La prueba de seguridad de aplicaciones estáticas (SAST) es una tecnología que se utiliza con frecuencia como herramienta de análisis de código fuente. El método analiza el código fuente en busca de vulnerabilidades de seguridad antes del lanzamiento de una aplicación y se utiliza para fortalecer el código. Este método produce menos falsos positivos, pero para la mayoría de las implementaciones requiere acceso al código fuente de una aplicación [10] y requiere una configuración experta y mucha potencia de procesamiento. [11] [ fuente promocional? ]
Las pruebas de seguridad de aplicaciones dinámicas (DAST) es una tecnología que puede encontrar vulnerabilidades visibles introduciendo una URL en un escáner automatizado. Este método es altamente escalable, fácil de integrar y rápido. Los inconvenientes de DAST radican en la necesidad de una configuración experta y la alta posibilidad de falsos positivos y negativos. [10]
Las pruebas de seguridad de aplicaciones interactivas (IAST) es una solución que evalúa las aplicaciones desde dentro utilizando instrumentación de software . Esta técnica permite que IAST combine las fortalezas de los métodos SAST y DAST, además de proporcionar acceso al código, tráfico HTTP, información de la biblioteca, conexiones backend e información de configuración. [12] [13] Algunos productos IAST requieren que la aplicación sea atacada, mientras que otros pueden usarse durante las pruebas normales de aseguramiento de la calidad. [14] [ fuente promocional? ] [15] [ fuente promocional? ]
Protección de seguridad para aplicaciones
Los avances en el malware profesional dirigido a los clientes de Internet de las organizaciones en línea han visto un cambio en los requisitos de diseño de aplicaciones web desde 2007. En general, se supone que un porcentaje considerable de usuarios de Internet se verá comprometido a través del malware y que cualquier dato proveniente de su host infectado puede estar contaminado. Por lo tanto, la seguridad de las aplicaciones ha comenzado a manifestar sistemas de detección heurística y antifraude más avanzados en el back-office, en lugar de dentro del código del servidor web o del lado del cliente. [16] [ fuente promocional? ] A partir de 2016, se han desarrollado tecnologías de autoprotección de aplicaciones en tiempo de ejecución (RASP). [10] [17] RASP es una tecnología implementada dentro o junto al entorno de ejecución de la aplicación que instrumenta una aplicación y permite la detección y prevención de ataques. [18] [19]
Divulgación coordinada de vulnerabilidades
El Centro de Coordinación del CERT describe la divulgación coordinada de vulnerabilidades (CVD) como un "proceso para reducir la ventaja del adversario mientras se mitiga una vulnerabilidad de seguridad de la información". [20] CVD es un proceso iterativo de múltiples fases que involucra a múltiples partes interesadas (usuarios, proveedores, investigadores de seguridad) que pueden tener diferentes prioridades y que deben trabajar juntos para resolver la vulnerabilidad. Debido a que los procesos de CVD involucran a múltiples partes interesadas, la gestión de la comunicación sobre la vulnerabilidad y su resolución es fundamental para el éxito.
Desde una perspectiva operativa, muchas herramientas y procesos pueden ayudar en la ECV. Estos incluyen correo electrónico y formularios web, sistemas de seguimiento de errores y plataformas de vulnerabilidad coordinadas . [21]
Normas y regulaciones de seguridad
- Codificación segura CERT
- CWE
- DISA-STIG
- Ley Gramm-Leach-Bliley
- Ley de Portabilidad y Responsabilidad del Seguro Médico (HIPAA)
- ISO / IEC 27034-1: 2011 Tecnología de la información - Técnicas de seguridad - Seguridad de 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 a través de la selección y el uso de idiomas
- Publicación especial NIST 800-53
- OWASP
- Estándar de seguridad de datos PCI ( PCI DSS )
- Ley Sarbanes-Oxley (SOX)
- ETSI TS 103645 [22]
Ver también
- Superficie de ataque de la cartera de aplicaciones
- Contramedida
- Seguridad de datos
- Seguridad de la base de datos
- HERAS-AF
- Seguridad de información
- Ciclo de vida de desarrollo de seguridad informática confiable
- Aplicación web
- Marco de aplicación web
Referencias
- ^ "Qué es OWASP y por qué es importante para AppSec" . Seguridad de contraste. 23 de febrero de 2017 . Consultado el 10 de abril de 2018 .
- ^ "OWASP Top 10 - 2017" (PDF) . OWASP. 2017 . Consultado el 10 de abril de 2018 .
- ^ "Conceptos de seguridad de la plataforma" , Simon Higginson.
- ^ "Google lanzó un nuevo programa de recompensas por errores para erradicar vulnerabilidades en aplicaciones de terceros en Google Play" . The Verge. 22 de octubre de 2017 . Consultado el 15 de junio de 2018 .
- ^ "Marco de seguridad de aplicaciones" . Archivado desde el original el 29 de marzo de 2009., Plataforma de terminal móvil abierta
- ^ Voitova, Anastasiia (2 de noviembre de 2020). "Uso de SSDLC para prepararse para incidentes de seguridad" . DZone .
- ^ "Resultados de la encuesta de DevOps: por qué las empresas están adoptando la entrega continua = 01 de diciembre de 2017" . abejas de la nube . Consultado el 26 de junio de 2018 .
- ^ "Seguridad continua en un mundo DevOps = 5 de julio de 2016" . Conferencia RMLL 2016 . Consultado el 4 de julio de 2018 .
- ^ "Aprovechando a los piratas informáticos para una seguridad continua = 31 de marzo de 2017" . HackerOne . Consultado el 4 de julio de 2018 .
- ^ a b c "Pruebas de seguridad de aplicaciones interactivas: cosas que debe saber" . Comunidad de seguridad cibernética de TATA. 9 de junio de 2016. Archivado desde el original el 20 de junio de 2018 . Consultado el 25 de enero de 2018 .
- ^ Williams, Jeff (22 de septiembre de 2015). "Por qué es una locura confiar en el análisis estático" . OSCURIDAD Lectura . Consultado el 10 de abril de 2018 .
- ^ Williams, Jeff (2 de julio de 2015). "Entiendo SAST y DAST, pero ¿qué es un IAST y por qué es importante?" . Seguridad de contraste . 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 Hdiv . Consultado el 7 de mayo de 2020 .
- ^ Abezgauz, Irene (17 de febrero de 2014). "Introducción a las pruebas de seguridad de aplicaciones interactivas" . Cuota.
- ^ Rohr, Matthias (26 de noviembre de 2015). "IAST: un nuevo enfoque para pruebas de seguridad ágiles" . Secodis.
- ^ "Continuación del negocio con clientes infectados con malware" . Gunter Ollmann. Octubre de 2008.
- ^ "¿Qué es IAST? Pruebas de seguridad de aplicaciones interactivas" . Veracode.
- ^ "Glosario de TI: Autoprotección de aplicaciones en tiempo de ejecución" . Gartner.
- ^ Feiman, Joseph (junio de 2012). "Security Think Tank: RASP - una tecnología de seguridad imprescindible" . Computer Weekly.
- ^ "La Guía CERT para la divulgación coordinada de vulnerabilidades" . Instituto de Ingeniería de Software, Universidad Carnegie Mellon. Agosto de 2017 . Consultado el 20 de junio de 2018 .
- ^ "La Guía CERT para la divulgación coordinada de vulnerabilidades" . Instituto de Ingeniería de Software, Universidad Carnegie Mellon. Agosto de 2017 . Consultado el 20 de junio de 2018 .
- ^ "ETSI TS 103 645" (PDF) .