Publicado el 13 de agosto de 2019
Kubernetes (a veces abreviado como K8s) es un sistema de orquestación de contenedores de código abierto lanzado en 2015 que se utiliza habitualmente para automatizar el despliegue, el escalado y la gestión de aplicaciones. El uso de Kubernetes está creciendo en popularidad porque ahorra tiempo a los equipos de ingeniería y trabajo a escala. Dado que la tecnología es bastante nueva y la adopción es tan alta, muchos desarrolladores están aprendiendo a utilizarla sobre la marcha, lo que a menudo conduce a errores de configuración e inseguridades incorporadas.
Últimamente, la comunidad se ha centrado bastante en la seguridad de Kubernetes. Justo la semana pasada en Black Hat USA 2019, hubo varias sesiones de capacitación sobre el tema, y una sesión informativa específicamente sobre cómo atacar Kubernetes, llamada "The Path Less Traveled: Abusando de los valores predeterminados de Kubernetes".
Para ayudar a los investigadores que exploran el tema y a los equipos de seguridad corporativa que buscan sus componentes Kubernetes desconocidos y expuestos, recientemente hemos añadido el protocolo Kubernetes a nuestro conjunto de datos IPv4. Entraremos en más detalles más adelante en este post, pero actualmente detectamos unos 16.000 hosts que ejecutan Kubernetes en todo el mundo, con la mayoría de los hosts ejecutando las versiones 1.13 y 1.10.
Por suerte, muchas empresas han empezado a prestar más atención a los riesgos a los que puede exponerles el protocolo de contenerización.
Ataques reales que aprovechan los puntos débiles de Kubernetes
Las vulnerabilidades de seguridad de Kubernetes son un tema candente en la comunidad. Aunque existen algunas vulnerabilidades y exploits reales, las malas configuraciones son un problema mucho más común.
- Shopify fue noticia recientemente por cómo un investigador de bug bounty les alertó de una vulnerabilidad que le permitía hacerse con el control del clúster de contenedores. Aunque no está claro si esto estaba vinculado específicamente a Kubernetes, es un tipo similar de riesgo de seguridad vinculado a las herramientas de orquestación.
- A principios de 2018, Tesla fue víctima de un ataque basado en Kubernetes gracias a un descuido en la configuración de Kubernetes, que ni siquiera requería una contraseña para acceder. "Dentro de ese único pod de Kubernetes, las credenciales de acceso estaban expuestas al entorno AWS de Tesla, que contenía un bucket de Amazon S3 (Amazon Simple Storage Service) con datos confidenciales como telemetría", explican los investigadores de RedLock.
- Nuestros amigos de Laceworks Labs han estado realizando una investigación utilizando los datos de Censys para encontrar instancias vulnerables de Kubernetes. En concreto, estaban utilizando nuestros datos para buscar cuadros de mando de Kubernetes.
- "En nuestro reciente análisis, encontramos más de 500 [cuadros de mando de Kubernetes] expuestos a Internet. Para el servidor API, de nuevo utilizamos Censys y encontramos más de 21.000 servidores API accesibles y 800 servidores API inseguros (sin autenticación ni autorización, ¡más por venir en la investigación!)." Su blog sobre el tema entra en más detalles. De hecho, presentaron su investigación en BSidesSF 2019 y su charla es digna de ver.
- StackRox y Skybox han publicado recientemente un informe (cerrado) en el que advierten de los peligros y el posible impacto en la seguridad de las malas prácticas de seguridad de los contenedores.
Ahora que hemos establecido que hay ataques en curso contra este tipo de herramientas de orquestación, vamos a profundizar en cómo puedes encontrar componentes de Kubernetes que están expuestos en Internet.
¿Cómo encuentro Kubernetes en Censys?
Afortunadamente, esto es fácil, ya que hemos añadido un nuevo protocolo: Puerto 6443. Puedes usar nuestra etiqueta de protocolo(protocols: "6443/kubernetes") para encontrarlos rápidamente.
Le sugerimos que comience su búsqueda por Kubernetes con el cuadro de mandos en funcionamiento, que suelen ser puntos especialmente débiles en estos componentes.
Para buscar específicamente cualquier componente de Kubernetes vinculado a su bloque ASN o CIDR, solo tiene que añadir "AND [ASN][CIDR]" a esta consulta.
Para cada componente de Kubernetes que hemos podido encontrar, encontrará los siguientes datos:
- nombres
- direcciones (internas y externas),
- Si se está ejecutando el panel de control de la interfaz web
- funciones de las rbac
- en la máquina anfitriona o en el nodo invitado:
- OS
- Núcleo
- Arquitectura
- Versión de Docker
- Versión kubelet
- versión del proxy kube
- imágenes de contenedores
- volúmenes adjuntos
- volúmenes en uso
La imagen de abajo es de un solo host que encontramos a través de nuestros escaneos:
Además de estos atributos, recopilamos datos sobre roles de seguridad y pods. El riesgo de roles de seguridad mal configurados es el potencial de ataques de escalada de privilegios. También intentamos saber si se está ejecutando el panel de control WEB UI, que se considera inseguro incluso cuando se requiere autenticación.
Consejos para asegurar Kubernetes correctamente
En primer lugar, te recomendamos encarecidamente que no expongas Kubernetes a Internet, ya que se trata de un puerto bastante inseguro. Conectarlo no tiene ninguna ventaja y lo único que hace es exponerte a riesgos.
En segundo lugar, no permita la autenticación anónima, que en algunas situaciones muy específicas, puede estar habilitada por defecto para algunas versiones de Kubernetes.
Algunos pasos para asegurarlas correctamente:
En general, asegúrese de que sus componentes están correctamente instalados y configurados, el punto de referencia de seguridad CIS Kubernetes es una buena línea de base para evaluarse. Cualquier paso que te saltes en este proceso puede convertirse en un gran problema más adelante y acabar creando un problema de seguridad importante. La supervisión de la configuración en este paso inicial es fundamental.
Kubernetes ofrece un artículo bastante detallado sobre los problemas de seguridad y "gotchas" y cómo evitarlos, que vale la pena leer. En lugar de simplemente regurgitar lo que ya han proporcionado, le enviaremos a su sitio para obtener sugerencias muy específicas sobre la seguridad de sus componentes Kubernetes.
Recuerde que puede utilizar Censys para encontrar todo tipo de dispositivos e infraestructuras expuestos. Eche un vistazo a algunas de las incorporaciones más recientes a nuestros conjuntos de datos: Microsoft Server Message Blocks (SMBs), y aplicaciones de escritorio remoto, como pcAnywhere, protocolo de escritorio remoto (RDP), y computación de red virtual VNC), por ejemplo.
Si buscas más consejos como estos sobre cómo utilizar los datos de Censys para mantener segura la red de tu empresa, no pierdas de vista nuestro blog y suscríbete a nuestro Twitter @censysio.