Seguridad y privacidad

Suponer vulnerabilidad: monitorización del comportamiento de microservicios para la seguridad

Una publicación de 2023 en el Kubernetes Blog sostiene que todos los microservicios son vulnerables. Propone analíticas de comportamiento de seguridad para detectar y bloquear exploits mediante la monitorización de patrones de clientes y servicios.

Una lupa inspeccionando un cubo de cristal con líneas de circuito, revelando advertencias rojas ocultas.
Imagen: Kubernetes Blog, con licencia CC BY 4.0

Traducido automáticamente del original en inglés.

En una publicación en el Kubernetes Blog de enero de 2023, David Hadas de IBM Research Labs argumentó que los desarrolladores deben aceptar que sus microservicios son inherentemente vulnerables. Propuso cambiar el enfoque desde la construcción de sistemas impenetrables hacia la monitorización de anomalías de comportamiento que señalan intentos de explotación.

Qué ocurrió

Las inversiones en ciberseguridad han crecido anualmente, pero el número de incidentes cibernéticos exitosos sigue aumentando. Hadas señaló que esta tendencia sugiere que las estrategias tradicionales centradas en eliminar cada debilidad están fracasando. Las herramientas ofensivas se vuelven más sofisticadas y los incentivos financieros para los atacantes aseguran que siempre encontrarán un punto de entrada si existe uno. En consecuencia, confiar en la creación de un servicio completamente no vulnerable ya no es una estrategia viable.

El artículo plantea que las organizaciones deberían admitir conscientemente que sus servicios contienen debilidades desconocidas. En lugar de intentar eliminar todas las vulnerabilidades, lo cual a menudo es imposible en la práctica, los equipos deberían centrarse en prevenir que dichas vulnerabilidades sean explotadas. Si un atacante no puede aprovechar con éxito una debilidad, el riesgo permanece teórico en lugar de materializado. Este cambio de mentalidad desplaza el perímetro de defensa de la integridad del código al comportamiento en tiempo de ejecución.

Hadas introdujo el concepto de "Analítica de Comportamiento de Seguridad" como el mecanismo principal para este nuevo enfoque. Al analizar cómo los clientes interactúan con los servicios y cómo estos responden, los equipos pueden detectar irregularidades que indican que un ataque está en curso. Este método no requiere conocer la vulnerabilidad específica de antemano; solo requiere reconocer que la interacción actual se desvía de las normas esperadas.

Cómo funciona

La monitorización de comportamiento de seguridad depende de la previsibilidad de las interacciones entre microservicios. En un sistema bien diseñado, los clientes envían solicitudes regulares y estructuradas, y los servicios responden de manera consistente. Un exploit, como una inyección SQL, fuerza al sistema a comportarse de forma irregular. Por ejemplo, un cliente malicioso podría enviar un nombre de usuario que contenga caracteres especiales como espacios o signos igual, algo que los usuarios benignos nunca hacen. De manera similar, el servicio podría tardar más en responder o devolver conjuntos de datos inusualmente grandes al procesar dicha solicitud.

Figure from the original article: Suponer vulnerabilidad: monitorización del comportamiento de microservicios para la seguridad
Figura del artículo original · Kubernetes Blog · CC BY 4.0

Al monitorear estas desviaciones, las herramientas de seguridad pueden bloquear ataques en múltiples etapas. La monitorización del lado del cliente detecta patrones de solicitud irregulares antes de que lleguen a la lógica de la aplicación. La monitorización del lado del servicio identifica llamadas internas anormales, tiempos de respuesta o salidas de datos. La combinación de ambas capas crea una defensa robusta que hace que muchas vulnerabilidades sean inexploitables, incluso si el código subyacente sigue teniendo fallos. El atacante debe elaborar un exploit que imite perfectamente el comportamiento normal, lo cual es significativamente más difícil que encontrar un bug de código.

Este enfoque es particularmente efectivo en arquitecturas de microservicios en comparación con monolitos. Las aplicaciones monolíticas entrelazan diversas funciones, lo que dificulta distinguir entre diferentes tipos de solicitudes y comportamientos internos. Los microservicios, por diseño, tienen contextos acotados e interfaces claras. Esta modularidad expone el tráfico interno y define expectativas estrictas para cada componente, facilitando a los observadores detectar anomalías en servicios específicos sin el ruido de procesos no relacionados.

Detalles clave

  • El artículo identifica cuatro etapas de la vida del servicio que requieren diferentes estrategias de monitorización: operación normal, presencia de CVE conocida, disponibilidad activa de exploit y uso indebido de pod.
  • Durante la etapa "Vulnerable", cuando se publica un CVE pero el parcheado tarda semanas, la monitorización puede bloquear solicitudes que coincidan con el patrón específico de la vulnerabilidad.
  • En la etapa "Explotable", las herramientas pueden filtrar el tráfico entrante basándose en firmas de exploits conocidos para evitar su ejecución.
  • Si un infractor hace un uso indebido de un pod, el sistema puede identificar la instancia comprometida y reiniciarla mientras mantiene los pods sanos en funcionamiento.
  • Guard, un proyecto de código abierto bajo el proyecto Knative de CNCF, es citado como una herramienta que proporciona esta monitorización independiente de comportamiento de seguridad para cargas de trabajo HTTP en Kubernetes.
  • La arquitectura de microservicios es inherentemente más adecuada para esta monitorización porque su naturaleza modular expone límites claros y patrones de interacción predecibles.

Por qué importa

Para ingenieros de software y líderes técnicos, esta perspectiva reduce la presión por lograr una seguridad de código perfecta, que a menudo es una meta irrealista. En su lugar, enfatiza la resiliencia operativa. Al aceptar que existirán vulnerabilidades, los equipos pueden priorizar la construcción de mecanismos de detección y respuesta en su infraestructura. Esto se alinea con los principios de Zero Trust, donde la confianza nunca se asume y la verificación es continua.

Figure from the original article: Suponer vulnerabilidad: monitorización del comportamiento de microservicios para la seguridad
Figura del artículo original · Kubernetes Blog · CC BY 4.0

Implementar seguridad basada en comportamiento también cambia cómo los equipos ven la respuesta a incidentes. En lugar de esperar un parche para arreglar un CVE conocido, pueden desplegar reglas de comportamiento para mitigar la amenaza inmediatamente. Esto permite que los servicios permanezcan en línea y funcionales mientras los equipos de seguridad abordan la causa raíz. Transforma la seguridad de una función de control de acceso a una salvaguardia operativa continua.

Además, este enfoque aprovecha los beneficios existentes de los microservicios. Los equipos ya invierten en observabilidad y monitorización por razones de rendimiento. Extender estas herramientas para incluir analíticas de comportamiento de seguridad añade una capa de protección sin requerir una revisión arquitectónica completa. Convierte los datos de telemetría estándar en un activo de seguridad, haciendo que la inversión en observabilidad pague doble dividendo.

Qué puedes hacer

  • Audita tu configuración actual de monitorización para ver si captura los metadatos detallados de solicitud y respuesta necesarios para el análisis de comportamiento.
  • Define comportamientos base para tus microservicios críticos, incluyendo estructuras típicas de solicitud, tiempos de respuesta y volúmenes de datos.
  • Implementa alertas para desviaciones de estas bases, como conjuntos de caracteres inusuales en campos de entrada o picos en el tamaño de la carga útil de respuesta.
  • Explora herramientas como Guard del proyecto Knative para añadir monitorización dedicada de comportamiento de seguridad a tus clústeres de Kubernetes.
  • Desarrolla playbooks para reiniciar automáticamente pods comprometidos cuando se detecte un uso indebido, asegurando la continuidad del servicio.
  • Cambia las revisiones de seguridad para incluir evaluaciones de riesgo de comportamiento, no solo análisis estático de código, para identificar posibles rutas de explotación.

Herramientas de la Tienda de Bytechap

Seguir leyendo

Todos los artículos