Seguridad de Kubernetes
Kubernetes, como una de las herramientas más conocidas para la contenedorización del despliegue de aplicaciones,Es de interés para los ciberdelincuentes. Aprenda sobre los principales vectores de ataque, vulnerabilidades yHerramientas para garantizar la seguridad de Kubernetes frente a ciberataques y ataques de red.
¿Qué es Kubernetes?
Probablemente, casi todo el que haya tenido contacto con el mundo DevOps tenga una idea general de lo que es Kubernetes. Se trata de un sistema de orquestación de contenedores bastante popular, es decir, básicamente la gestión de contenedores de datos. K8s, como se le suele llamar a Kubernetes, es un sistema de automatización y despliegue de software de código abierto para aplicaciones en contenedores y su gestión.
¿Desea tener una comprensión profunda de todos los aspectos modernos de la seguridad de Kubernetes?Lea atentamente este artículo y guardar como favorito para consultarla más tarde, actualizamos regularmente esta página.
La versión original del proyecto fue desarrollada hace relativamente poco tiempo por Google para las necesidades internas de la propia empresa, pero posteriormente se transfirió a la gestión de la Cloud Native Computing Foundation, desde donde llegó al gran público. Inicialmente, se concibió como una herramienta para gestionar clústeres de contenedores. El sistema es dinámico, responde a los eventos en tiempo real y permite iniciar fácilmente un proyecto que funcionará sin complicaciones y se escalará según la demanda, es decir, será flexible, rápido y rentable.
Las prácticas de administración de Kubernetes utilizan el concepto de pods. Cada pod es un grupo de contenedores unidos por una tarea común, que puede ser tanto un microservicio como una aplicación masiva, distribuidos en varias máquinas que funcionan en paralelo. Kubernetes tiene como objetivo resolver los problemas relacionados con la distribución eficiente de la ejecución de contenedores entre los nodos del clúster, según los cambios de carga y la demanda actual de servicios. En otras palabras, es un sistema de gestión flexible de la infraestructura de contenedorización con la posibilidad de equilibrar la carga.
Con Kubernetes, puede lanzar un gran número de contenedores como Docker o Rocket en un gran número de hosts, supervisar el estado del entorno de ejecución, responder a los cambios de manera oportuna, gestionar los contenedores en ejecución, garantizar su colocación conjunta y replicación, y también escalar y equilibrar un gran número de hosts dentro del clúster.
Hoy en día, Kubernetes se ha convertido en una especie de estándar para los entornos DevOps modernos, tanto en grandes empresas como en start-ups. Se utiliza activamente en servicios en la nube como AWS, Microsoft Azure o Google Cloud. En esencia, Kubernetes es uno de los componentes estratégicos del proceso DevOps, por lo que los ataques contra él siempre han sido y siguen siendo relevantes. Tras hackear este sistema, el hacker obtendrá acceso a todos los nodos y contenedores que se ejecutan dentro de K8s, lo que supone una vía directa para comprometer o filtrar datos sensibles.
Lo más importante es que, en el lugar principal del sistema, es probable que la red siga estando llena de servidores K8s públicos, a los que se puede acceder desde Internet. Por ejemplo, un servicio como Shodan, que permite buscar versiones vulnerables de software disponibles en Internet. En su momento, decenas de miles de bases públicas sufrieron estas vulnerabilidades abiertas. Si desea probar cómo funciona Shodan en la práctica, puede hacerlo utilizando un script de búsqueda, que se encuentra en GitHub.
Principales peligros de seguridad para Kubernetes
Al igual que cualquier sistema complejo inventado por personas, la infraestructura del clúster K8s presenta problemas de seguridad típicos con los que los expertos se encuentran con frecuencia. Estos incluyenExplosión del tráfico este-oeste.La esencia de este ataque es que los contenedores pueden desplegarse dinámicamente en varias nubes independientes, lo que aumenta significativamente el tráfico de intercambio de datos dentro de un clúster lógico. Las ubicaciones remotas de los contenedores pueden ser utilizadas por ciberdelincuentes, por ejemplo, para implementar ataques DDoS.
Problema de superficie de ataque aumentada.Se basa en el hecho de que cada contenedor puede tener una superficie de ataque diferente y sus propias vulnerabilidades únicas que son utilizadas por los hackers. Por ejemplo, se pueden utilizar vulnerabilidades de los sistemas de autorización de Docker o AWS.
Conexiones no autorizadas entre contenedores, cuando los pods comprometidos pueden conectarse a otros contenedores en el mismo o en diferentes hosts para lanzar un ataque. A pesar de que el filtrado se realiza a nivel L3, es decir, las ACL son proporcionadas por el equipo de red según las reglas configuradas, algunas llamadas no autorizadas solo pueden detectarse mediante filtrado.
Compromiso de contenedor- es un ataque cuya esencia consiste en utilizar una configuración incorrecta para todos los contenedores del clúster, lo que contribuye indirectamente al compromiso o a la inclusión de vulnerabilidades de la aplicación. Los compromisos de contenedores incluyen la manipulación de la conmutación interna, el control de procesos o el acceso al sistema de archivos.
Al igual que cualquier aplicación y software de sistema, Kubernetes presenta una serie de vulnerabilidades críticas cuya presencia pone en riesgo a todo el clúster, desde los contenedores en ejecución en general hasta los datos específicos almacenados en la base de datos de un servidor independiente. Según las estadísticas compiladas del registro de vulnerabilidades NIST, los errores más críticos se detectaron en 2018-2019: ocho y cuatro vulnerabilidades, respectivamente.
El primero, descubierto en 2019, permite que un contenedor malicioso sobrescriba el ejecutable runC en el sistema host, sin necesidad de interacción del usuario. Como resultado de este ataque, un atacante puede obtener acceso root al host y la capacidad de ejecutar código arbitrario en él. En febrero de 2019, se publicó en GitHub un exploit para esta vulnerabilidad. Otro error detectado en marzo del mismo año permite a un atacante entregar archivos desde el host al ordenador del operador o modificarlos mediante suplantación de binario tar usando el comando interno kubectl cp habitual.
Otro error descubierto en 2018 está relacionado con la escalada de privilegios. Permite a un hacker aumentar los privilegios en el clúster y obtener acceso a él debido a un error lógico en el procesamiento de las llamadas a la API. Según los expertos en ciberseguridad, esta falla tiene un alto nivel de amenaza, ya que no requiere autenticación previa y es fácil de operar. El acceso no autorizado se abre tras enviar una solicitud específica al servidor API de Kubernetes.
Todos los ensamblajes vulnerables de Kubernetes no gestionan correctamente una solicitud maliciosa, lo que permite acceder al back-end utilizando las credenciales TLS especificadas en la configuración del servidor API. El exploit PoC se publicó en GitHub poco después de que se descubriera el problema. Posteriormente, lanzaron un parche para esta vulnerabilidad.
Ataques más comunes en Kubernetes
Kubernetes tiene una arquitectura bastante compleja e incorpora muchos componentes. Por ello, los tipos de ataques y sus direcciones hacia el sistema también varían. Así, el esquema general de ataques incluye:
- Los pods son unidades elementales e indivisibles de despliegue y direccionamiento en Kubernetes. Un pod tiene su propia dirección IP y puede contener uno o más contenedores.
- Servicios: servicios de red que proporcionan intercambio de datos dentro del clúster, equilibrio, replicación, procesamiento de solicitudes, etc.
- Componentes del sistema: los componentes clave que se utilizan para gestionar el clúster de Kubernetes: servidor API, Kubelet y otros.
- Nodo trabajador - servidores de producción que ejecutan contenedores de aplicaciones y otros componentes de Kubernetes, por ejemplo, agentes de K8s y servidores proxy;
- Master Node es el servidor maestro principal que gestiona todo el clúster de nodos de trabajo (pods) y la implementación de módulos en estos nodos.
Soluciones de seguridad para Kubernetes
Para resolver estos problemas de seguridad de la información de los contenedores en los sistemas DevOps, los ingenieros utilizan herramientas especializadas para la supervisión y la gestión automática de la ciberseguridad. Las técnicas de administración de redes y sistemas, como el cifrado TLS, el control de acceso basado en roles (RBAC), el cortafuegos, la autenticación de terceros, la restricción de privilegios y otros métodos de protección de los recursos del clúster, siguen siendo muy utilizadas.
Además, un enfoque integrado para garantizar la ciberseguridad de su empresa aumenta significativamente las posibilidades de eliminar con éxito las vulnerabilidades. Por ejemplo, un inventario completo de todos sus activos digitales le proporcionará una ventaja adicional en la seguridad de Kubernetes, ya que no solo identifica y verifica todos los activos digitales, sino que también supervisa repositorios, almacenamientos en la nube e incluso Dark Web en busca de la presencia de cualquier dato suyo obtenido ilegalmente por hackers.
Recursos adicionales
- Aprenda más sobre la gestión de la superficie de ataque con IA con ImmuniWeb® Discovery
- Más información sobre pruebas de penetración de aplicaciones con IA en ImmuniWeb.
- Más información sobre las oportunidades del programa de partners de ImmuniWeb.
- Síganos en LinkedIn, X, Telegram y WhatsApp.