BLOG

¿Por qué el aprendizaje automático es fundamental para una seguridad eficaz de las API?

Miniatura F5
F5
Publicado el 26 de agosto de 2020

Durante la última década, la búsqueda de ciclos de desarrollo más rápidos, alta disponibilidad, escalamiento selectivo bajo demanda y desacoplamiento en general ha llevado a las organizaciones impulsadas por la tecnología a la arquitectura de microservicios. Como resultado, muchas llamadas a funciones seguras en software monolítico se convirtieron en llamadas API entre microservicios a través de redes no seguras. Es decir, si bien esta transición resolvió muchos desafíos operativos y comerciales, también dio origen a algunos nuevos desafíos de seguridad.

La situación de seguridad se agrava con la proliferación de open source software, la contenerización y la infraestructura como código (IaC). Ahora que incorporar o modificar un microservicio puede ser una tarea de 15 minutos, es posible que los equipos de seguridad no tengan la oportunidad oportuna de analizar la seguridad de los microservicios adecuadamente. La introducción de una evaluación de seguridad integral como fase de entrada en los procesos de implementación casi siempre recibe una reacción desfavorable por parte del equipo de DevOps. Incluso si se logra controlar eficientemente la implementación, muchos problemas de seguridad (especialmente ataques en tiempo de ejecución) no se pueden identificar en el momento de la implementación.

La seguridad ya no es la misma

Si bien los desarrolladores y los equipos de DevOps tienen motivos para acoger con entusiasmo la transición a los microservicios, los equipos de seguridad tienen cada vez más dificultades para mantenerse al día con un volumen cada vez mayor de API, definiciones y comportamientos de API cambiantes, falta de documentación de API (especialmente en componentes de código abierto), protocolos diversos y estructuras de carga útil. Ahora que muchas llamadas a funciones internas entre módulos se han convertido en llamadas API entre microservicios, la superficie de ataque ha explotado y la gestión de la seguridad se ha vuelto abrumadora muy rápidamente.

Incluso a mediana escala en un entorno de microservicios, definir y mantener una lista de comportamiento normal y aceptable para cada punto final de API antes de implementar o actualizar cualquier microservicio es muy difícil, si no imposible. Esto también incluye mantener una política de autorización para cada punto final de API. La incorporación de nuevos microservicios, la eliminación de los obsoletos y la estacionalidad del tráfico son las razones predecibles por las que la definición de “normal y aceptable” sigue cambiando. También existen razones no tan predecibles, como cortes intermitentes de la red, ataques DDoS, cortes ascendentes y vulnerabilidades de seguridad que también pueden jugar un papel importante.

Considerando todos los factores a tener en cuenta para una seguridad adecuada, es necesario recopilar, correlacionar, procesar y aprender una gran cantidad de datos casi en tiempo real para tomar decisiones de seguridad razonables y oportunas. Este requisito hace que las soluciones y controles tradicionales sean inadecuados. Afortunadamente, los avances en el aprendizaje automático (ML) y la madurez de los modelos de aprendizaje durante la última década proporcionan una plataforma muy poderosa para abordar estos nuevos desafíos de seguridad.

¡ML al rescate!

El poder del ML nos permite repensar la forma en que definimos, refinamos e implementamos controles de seguridad. Nos permite afrontar la naturaleza dinámica de las interacciones de API y aún así brindar una seguridad de API efectiva. Ahora analizaremos los tres pasos principales para lograr una solución integral y eficaz basada en ML.

1.Deje que ML descubra el alcance... no lo alimente

Como se mencionó anteriormente, la naturaleza dinámica y el gran volumen de las API hacen que sea poco práctico para los desarrolladores o los equipos de seguridad definir y alimentar de manera significativa las definiciones de API a los sistemas que protegen los puntos finales de las API. Con modelos basados en ML, es posible ingresar algunos datos de entrenamiento fuera de línea y dejar que el sistema descubra, identifique, clasifique, contabilice y permita/rechace de manera autónoma las llamadas API en función del punto final de la API (por ejemplo, la ruta URL en el caso de HTTP), el llamador, la carga útil, etc. Por ejemplo, el descubrimiento de API se logra utilizando un gráfico de URL basado en ML y la clasificación de componentes se puede realizar utilizando aprendizaje profundo. Esto permite que el sistema se desarrolle, crezca y aprenda el alcance y la naturaleza de la comunicación API a lo largo del tiempo.

Un sistema bien calibrado para ese descubrimiento de alcance puede reemplazar días, o incluso semanas, de esfuerzos humanos para cada implementación actualizada en cuestión de horas.

2.Aprender, ajustar, repetir

Esta es la parte central de cualquier solución de seguridad basada en ML. Las buenas soluciones permiten que los controles de seguridad observen el comportamiento del sistema, creen perfiles de comportamiento y ajusten el modelo actual (construido utilizando las observaciones pasadas). Este es un proceso continuo y una solución implementada de forma limpia permite que los controles se apliquen de manera significativa y oportuna. Por ejemplo, si los perfiles anteriores han mostrado que una secuencia particular de llamadas de API es un flujo normal, se puede aprender una compilación actualizada de la aplicação que implementa un par de llamadas adicionales en el flujo y agregarla al perfil en cuestión de horas.

Aquí es donde el argumento a favor de las soluciones basadas en ML es muy fácil de entender, ya que el perfilado y la calibración del comportamiento se realizan en tiempo real tanto como es prácticamente posible.

mlsecurity1
Figura 1. Creación de perfiles basada en aprendizaje automático

3.Detecte

Los dos primeros pasos nos permiten aprender y mantenernos actualizados sobre lo que debe considerarse comportamientos “normales y aceptables” en el sistema. El paso final es detectar y señalar los patrones de comportamiento que quedan fuera de ese rango. Por ejemplo, si después de conocer el comportamiento normal de cientos de usuarios, el sistema detecta una oleada repentina de intentos de inicio de sesión o de descarga de datos por parte de un usuario en particular, o varios usuarios que intentan iniciar sesión desde la misma dirección de red en un corto período de tiempo, estos comportamientos pueden detectarse rápidamente como anomalías. La detección de anomalías de API se puede realizar mediante aprendizaje profundo secuencial no supervisado.

Es importante tener en cuenta aquí que el retraso en la retroalimentación es una parte muy importante de todo el ciclo de aprendizaje para no permitir que actores maliciosos ajusten su comportamiento y “pasen desapercibidos”.

La figura 2 muestra una secuencia de llamadas API que está perfilada como normal y aceptable para el sistema.

mlsecurity2
Figura 2: Secuencia normal de llamadas a la API

La figura 3 muestra secuencias anómalas de llamadas API que serían detectadas y marcadas por el sistema.

mlsecurity3
Figura 3: Secuencia anómala de llamadas a la API

Es importante tener en cuenta aquí que el retraso en la retroalimentación es una parte muy importante de todo el ciclo de aprendizaje para no permitir que actores maliciosos ajusten su comportamiento y “pasen desapercibidos”.

Una vez que estas soluciones se implementan y comienzan a producir resultados, se pueden aprovechar para mejorar los controles existentes, como los firewalls de aplicação web (WAF) para el tráfico basado en HTTP.

Terminando

El ML es poderoso y las soluciones basadas en ML se han convertido rápidamente en una parte esencial de la seguridad general en entornos basados en microservicios. En Volterra, reconocimos muy tempranamente la necesidad de ML para nuestras operaciones internas, además de brindarlo como una capacidad clave para nuestros clientes en su transición a aplicações modernas de manera efectiva, segura y eficiente.