Herramientas de prueba de seguridad de aplicaciones (AST)

By albert
29 May 2019

Las pruebas de seguridad están creciendo más rápido que cualquier otro mercado de seguridad, ya que las soluciones AST (Application Security Testing o Pruebas de seguridad de aplicaciones) se adaptan a las nuevas metodologías de desarrollo y a la mayor complejidad de las aplicaciones. Las herramientas de AST son uno de los pilares de cualquier práctica de seguridad de aplicaciones. En A2Secure creemos que las aplicaciones deben ser seguras desde el principio, por lo que abogamos para que los desarrolladores tomen un papel activo en AppSec. La mayor parte de todas las violaciones de software notificadas son notables por la explotación de vulnerabilidades en la capa de aplicación. La principal motivación para usar las herramientas de AST es que las revisiones de códigos manuales y los planes de prueba tradicionales llevan mucho tiempo y continuamente se introducen o descubren nuevas vulnerabilidades. En muchos dominios (como por ejemplo PCI-DSS), hay directivas reglamentarias y de cumplimiento que obligan al uso de herramientas AST.

Existen varios tipos de AST en la coyuntura actual:

  • La tecnología Static AST (SAST)

Analiza la fuente de la aplicación, el código de bytes o el código binario para detectar vulnerabilidades de seguridad, generalmente en las fases de programación y/o prueba del ciclo de vida del desarrollo de software (SDLC). Las herramientas SAST se pueden considerar como pruebas de White-Hat o White-Box, donde el probador conoce información sobre el sistema o el software que se está probando, incluido un diagrama de arquitectura, acceso al código fuente, etc. Las herramientas SAST examinan el código fuente (en reposo) para detectar y reportar las debilidades que pueden conducir a vulnerabilidades de seguridad. Los analizadores de código fuente pueden ejecutarse en código no compilado para verificar defectos tales como errores numéricos, validación de entrada, condiciones de carrera, recorridos de ruta, punteros y referencias, y más. Los analizadores de código binario y de bytes hacen lo mismo en el código construido y compilado. Algunas herramientas se ejecutan solo en el código fuente, otras solo en el código compilado y otras en ambos.

  • La tecnología Dynamic AST (DAST)

Analiza las aplicaciones en su estado dinámico de ejecución durante las fases de prueba o de operación. Simula ataques contra una aplicación (generalmente aplicaciones y servicios habilitados para la web) y analiza las reacciones de la aplicación para determinar si es vulnerable. A diferencia de las herramientas SAST, las herramientas DAST se pueden considerar como pruebas de Black-Hat o Black-Box, donde el probador no tiene conocimiento previo del sistema. Detectan condiciones que indican una vulnerabilidad de seguridad en una aplicación en su estado de ejecución. Las herramientas DAST se ejecutan en el código operativo para detectar problemas con interfaces, solicitudes, respuestas, secuencias de comandos, inyección de datos, sesiones, autenticación y más. Las herramientas DAST emplean fuzzing: lanzar casos de prueba conocidos, no válidos e inesperados, en una aplicación, a menudo en gran volumen.

  • La tecnología Interactiva AST (IAST)

Juntamente con Hybrid Tools combinan la observación interna y externa de una aplicación en ejecución que se está probando con DAST simultáneamente. Por lo general, se implementa como un agente dentro del entorno de tiempo de ejecución de prueba (por ejemplo, instrumentando la Máquina Virtual de Java [JVM] o .NET CLR) que observa operaciones o ataques desde dentro de la aplicación e identifica vulnerabilidades. Los enfoques híbridos han estado disponibles durante mucho tiempo, pero más recientemente se han categorizado y discutido usando el término IAST. Las herramientas IAST utilizan una combinación de técnicas de análisis estático y dinámico. Pueden probar si las vulnerabilidades conocidas en el código son realmente explotables en la aplicación en ejecución. Las herramientas IAST utilizan el conocimiento del flujo de la aplicación y el flujo de datos para crear escenarios avanzados de ataque y utilizan los resultados del análisis dinámico de forma recursiva: a medida que se realiza un análisis dinámico, la herramienta aprenderá cosas sobre la aplicación en función de cómo responde a los casos de prueba. Algunas herramientas utilizarán este conocimiento para crear casos de prueba adicionales, que luego podrían generar más conocimiento para más casos de prueba y así sucesivamente. Las herramientas IAST son adeptas a reducir el número de falsos positivos, y funcionan bien en entornos Agile y DevOps donde las herramientas tradicionales DAST y SAST independientes pueden requerir demasiado tiempo para el ciclo de desarrollo.

  • Las Pruebas de seguridad de aplicaciones móviles (MAST)

Combinan técnicas tradicionales de pruebas estáticas y dinámicas para descubrir vulnerabilidades de seguridad en aplicaciones iOS y Android y los componentes de back-end correspondientes. Las herramientas MAST son una combinación de análisis estático, dinámico y forense. Realizan algunas de las mismas funciones que los analizadores estáticos y dinámicos tradicionales, pero permiten que el código móvil se ejecute también en muchos de esos analizadores. Las herramientas MAST tienen características especializadas que se centran en problemas específicos de las aplicaciones móviles, como el desbloqueo o el enraizamiento del dispositivo, las conexiones WI-FI falsificadas, el manejo y la validación de certificados, la prevención de fugas de datos y más.

Algunos proveedores de AST también han comenzado a ofrecer:

  • RASP

Significa, Autoprotección de aplicaciones en tiempo de ejecución (Run-time Application Security Protection). Esta tecnología aprovecha los principios de instrumentación IAST para ofrecer una solución de protección que compita con los WAF. La mayoría de los equipos comienzan probando la instrumentación en modo IAST (sin bloqueo), y una vez que se sienten cómodos, pasan a RASP (modo de bloqueo completo).

  • SCA

(Análisis de composición de software; una tecnología utilizada para identificar componentes de fuente abierta y de terceros en uso en una aplicación y sus vulnerabilidades de seguridad conocidas). Las herramientas de SCA examinan el software para determinar los orígenes de todos los componentes y bibliotecas dentro del software. Estas herramientas son altamente efectivas para identificar y encontrar vulnerabilidades en componentes comunes y populares, particularmente en componentes de código abierto. Sin embargo, no detectan vulnerabilidades para los componentes desarrollados por la propia empresa. Las herramientas de SCA son más efectivas para encontrar bibliotecas y componentes comunes y populares, particularmente piezas de código abierto. Funcionan al comparar los módulos conocidos que se encuentran en el código con una lista de vulnerabilidades conocidas. Las herramientas de SCA encuentran componentes que tienen vulnerabilidades conocidas y documentadas y con frecuencia avisarán si los componentes están desactualizados o tienen parches disponibles. Para realizar esta comparación, casi todas las herramientas de SCA utilizan las vulnerabilidades y exposiciones comunes (CVE) de la base de datos de vulnerabilidad nacional del NIST como fuente de vulnerabilidades conocidas. Muchos productos comerciales de SCA también utilizan la base de datos de vulnerabilidad comercial VulnDB como fuente, así como otras fuentes públicas y de propiedad exclusiva. Las herramientas de SCA pueden ejecutarse en código fuente, código de bytes, código binario o alguna combinación.

  • Descubrimiento de aplicaciones

Esta es una capacidad para analizar el ecosistema web de una empresa y detectar todas las aplicaciones web. A menudo, descubre una cantidad sustancial de aplicaciones que las empresas no usan y olvidaron, y aún así ofrecen una puerta de entrada a la empresa.

  • Análisis de seguridad de la base de datos

Aunque las bases de datos no siempre se consideran parte de una aplicación, los desarrolladores de aplicaciones a menudo dependen en gran medida de ellas, y las aplicaciones pueden afectarlas de una manera significativa. Las herramientas de escaneo de seguridad de la base de datos verifican parches y versiones actualizadas, contraseñas débiles, errores de configuración, problemas de lista de control de acceso (ACL) y mucho más. Los escáneres de bases de datos generalmente se ejecutan en los datos estáticos que están en reposo mientras el sistema de administración de bases de datos está funcionando. Algunos escáneres pueden monitorear los datos que están en tránsito.

  • Pruebas de seguridad de aplicaciones como servicio (ASTaaS)

Como su nombre lo indica, una empresa externa realiza pruebas de seguridad en vuestra aplicación. El servicio generalmente será una combinación de análisis estático y dinámico, pruebas de penetración, pruebas de interfaces de programación de aplicaciones (API), evaluaciones de riesgos etc. El impulso para el uso de ASTaaS proviene del uso de aplicaciones en la nube, donde los recursos para las pruebas son más fáciles de reunir.

  • Herramientas de correlación

Tratar con falsos positivos es un gran problema en las pruebas de seguridad de las aplicaciones. Las herramientas de correlación pueden ayudar a reducir parte del ruido al proporcionar un depósito central para los hallazgos de otras herramientas AST. Las diferentes herramientas de AST tendrán diferentes resultados, por lo que las herramientas de correlación se relacionan y analizan las conclusiones de diferentes herramientas de AST y ayudan a validar y priorizar los descubrimientos, incluidos los flujos de trabajo de remediación.

  • Analizadores de cobertura de prueba

Los analizadores de cobertura de prueba miden la proporción del código total del programa que ha sido analizada. Los resultados se pueden presentar en términos de cobertura de estado de cuenta (porcentaje de líneas de código probado) o cobertura de sucursal (porcentaje de rutas disponibles probadas). Para aplicaciones grandes, los niveles de cobertura aceptables pueden determinarse por adelantado y luego compararse con los resultados producidos por los analizadores de cobertura de prueba para acelerar el proceso de prueba y liberación. Estas herramientas también pueden detectar si determinadas líneas de código o ramas de lógica no se pueden alcanzar durante la ejecución del programa, lo que es ineficiente y una posible preocupación de seguridad. Algunas herramientas SAST incorporan esta funcionalidad en sus productos (SonarQube por ejemplo), pero también existen productos independientes.

  • Application Security Testing Orchestration (ASTO)

ASTO integra las herramientas de seguridad en un ciclo de vida de desarrollo de software (SDLC). La idea de ASTO es tener una gestión centralizada y coordinada de todos los instrumentos de AST que se ejecutan en un ecosistema. Todavía es demasiado pronto para saber si el término y las líneas de productos durarán, pero a medida que las pruebas automáticas se vuelven más omnipresentes, ASTO satisface una necesidad.
Este gráfico muestra un resumen de las diferentes clases o categorías de herramientas de prueba de seguridad de aplicaciones:
Gráfico AST
Fuente: https://insights.sei.cmu.edu/sei_blog/2018/07/10-types-of-application-security-testing-tools-when-and-how-to-use-them.html
A medida que se analiza los resultados con una herramienta, puede ser conveniente introducir herramientas adicionales en su entorno. Como ejemplo de referencia, el gráfico a continuación describe cuántas clases de herramientas podrían implementarse de manera efectiva en un proceso de desarrollo de integración continua y entrega continua (CI/CD). No se pretende que todas estas herramientas se introduzcan al mismo tiempo en el entorno. Este gráfico muestra dónde encajan ciertas clases de herramientas para ayudar a tomar decisiones y proporcionar una hoja de ruta.
Gráfico AST 2
Fuente: https://insights.sei.cmu.edu/sei_blog/2018/07/10-types-of-application-security-testing-tools-when-and-how-to-use-them.html
En resumen: se utilizan diferentes técnicas para descubrir las vulnerabilidades de seguridad en las diferentes etapas del ciclo de vida de una aplicación (diseño, desarrollo, implementación, actualización, mantenimiento etc.) pero cada una de estas tecnologías tiene sus ventajas y desventajas. Una combinación que permita cubrir todas estas etapas y ofrezca flexibilidad en las pruebas es aconsejable.
 
Autor: Mila Gerova

Los comentarios están cerrados.