Mostrando las entradas con la etiqueta Docker. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Docker. Mostrar todas las entradas

15 de febrero de 2019

Vulnerabilidad en runc permite escapar de contenedor #Docker con permisos root

El fallo afecta a otros productos derivados de Docker que usan runc y al propio LXC, permitiendo acceder a la máquina host con permisos de superusuario.
docker
Los investigadores Adam Iwaniuk y Borys Popławski han descubierto una vulnerabilidad en runc, la utilidad para ejecutar contenedores de la Open Containers Initiative, por la cual es posible obtener root en la máquina que ejecuta el contenedor. Además, Aleksa Sarai, uno de los mantenedores de runc, ha conseguido crear una versión modificada del fallo que también afectaría a LXC.
Para la explotación del fallo sólo es necesario un contenedor malicioso, el cual sobrescribirá el binario ‘runc’de la máquina host, y que el usuario acceda dicho contenedor (utilizando ‘docker exec’). El ataque no es bloqueado por la política por defecto de AppArmor, al igual que la de SELinux en sistemas como Fedora. No obstante, utilizando el modo enforcing mode con una correcta configuración de los namespaces (como ocurre por defecto en Red Hat), el ataque sí es bloqueado.
La vulnerabilidad ha sido identificada con el CVE-2019-5736, y ya hay un parche disponible que corrige el fallo. Si no fuese posible parchear, una posible solución es configurar SELinux correctamente para impedir la explotación. El 18 de febrero (7 días después de la revelarse el fallo) se publicará una prueba de concepto para poder comprobar si se es vulnerable.
Empresas de Cloud como Amazon AWS ya se han comunicado con sus clientes para informarles del fallo, y se espera que en los próximos días otras empresas del sector hagan lo mismo. En principio, los clientes de estos servicios no necesitan tomar medidas, pero aquellos administradores de sistemas que mantengan servidores con Docker deberán parchear para evitar ser víctimas del CVE-2019-5736.
Fuente | una-al-dia

18 de junio de 2018

Detectados contenedores maliciosos distribuidos a través de Docker Hub

544.74 Monero, lo que al cambio son unos 67.863€ a la hora de escribir este artículo. Es la cantidad que el atacante detrás de la cuenta de Docker Hub "docker123321" ha sido capaz de minar a lo largo de un año a través de imágenes maliciosas distribuidas a sistemas expuestos y, lo que es peor, usando la propia plataforma de Docker.



Durante el último año, investigadores de varias empresas (Kromtech, Fortinet y Sysdig) han estado siguiendo de cerca este caso, hasta que finalmente el pasado 10 de mayo Docker Hub cerró la cuenta maliciosa. Detrás deja un total de 17 imágenes Docker maliciosas que habían sido descargadas en más de 5 millones de ocasiones.

Linea de tiempo del ataque. Obtenida de Kromtech Security Center.

¿Cómo funciona Docker Hub?

Para explicar qué es Docker Hub, primero tenemos que ver algunos conceptos básicos de Docker. Sabemos que se basa en la ejecución de contenedores que aíslan, o al menos lo intentan, un proceso particular del sistema operativo base (ojo, no se trata de virtualización). La especificación de estos contenedores corre a cargo de las llamadas imágenes, que son plantillas donde se define qué hace exactamente un contenedor. En definitiva, un contenedor es una instancia en ejecución de una imagen. 

Aunque se puede construir una imagen desde cero, lo ideal es basarse en otra ya definida  y personalizarla. Por ejemplo, se puede crear una imagen que ejecute Apache 2 basándose en una imagen del sistema operativo Debian, instalando paquetes y configuraciones, ya sea a mano o a través de un Dockerfile. Este fichero contiene un conjunto de directivas que va a definir exactamente como queremos que se comporte el contenedor que genera esa imagen. Se pueden definir, entre otras, la imagen en la que se basa, los puertos que queremos que el contenedor abra, los paquetes que va a tener instalados o el comando que va a ejecutar. 

Una vez configurada y construida la nueva imagen, se pueden distribuir utilizando repositorios. Docker Hub es el repositorio oficial y, de hecho, está totalmente integrado en el motor Docker. Hagamos una prueba y ejecutemos 'sudo docker run -ti hello-world':



La ejecución de este contenedor nos dice exactamente qué ocurre entre bambalinas: en resumen, se busca la imagen local del contenedor que queremos ejecutar. De no existir, se busca automáticamente en Docker Hub, se descarga y se ejecuta.

¿Y quién puede publicar imágenes en Docker Hub? Cualquiera
, siempre que tengamos una cuenta cuya creación es gratuita. De hecho, es el principal distribuidor de imágenes para Docker.


Medidas de seguridad en Docker Hub

Existen con ciertos "peros". Por un lado, desde Docker 1.8 se implementa el firmado de imágenes, que nos permite asegurar que la imagen que estamos descargando es precisamente la que queremos. Sin embargo, esta medida debe configurarse en el cliente y no está activada por defecto.

En segundo lugar, hasta hace poco se realizaban análisis automatizados de seguridad para las imágenes subidas a Docker Hub, aunque solo estuvo disponible para los contenedores propios. Desde hace unos meses la funcionalidad no está disponible. En la descarga, ahora mismo, no hay ningún sistema ni señal que te indique si la imagen que descargas puede tener un comportamiento malicioso o no.

Pero los usuarios de Docker no ejecutan una imagen desde Docker Hub así como así...


No deberían. Al final, es como ejecutar un proceso desconocido en nuestro equipo y, lo que es peor, con permisos de superusuario y acceso a nuestro sistema base. Por ejemplo, una de las imágenes maliciosas que se han encontrado montaba como volumen el directorio '/etc' del sistema base y añadía entradas en el fichero crontab para ganar persistencia. Pero por supuesto, un usuario sin experiencia podría encontrar una imagen que se promete interesante y ejecutarla sin una revisión de lo que hace en realidad. 


Más allá de las posibles estrategias de ingeniería social, lo que sí señalan los investigadores mencionados es que existen gran cantidad de sistemas Docker y Kubernetes (una plataforma de orquestación para Docker) que presentan fallos de configuración y están totalmente expuestos, permitiendo que reciban comandos de administración externos.


En resumen, ¿qué ha ocurrido?

Un señor con no muy buenas intenciones ha creado un repositorio en Docker Hub y ha ido publicando varias tandas de imágenes maliciosas, algunas para minar criptomonedas, a lo largo de un año.


Aunque la distribución en este caso concreto no está clara, los investigadores manejan datos de otros ataques en los que se buscaban sistemas Docker y Kubernetes expuestos a Internet (a través de escaneos automatizados y/o mediante plataformas como Shodan) y con una configuración de autenticación pobre. Una vez localizados, se les lanzaba automáticamente comandos de gestión que permitieran la descarga desde Docker Hub de las imágenes maliciosas en el sistema.


Detalle de uno de los scripts utilizados para desplegar los contenedores maliciosos. Obtenida de Kromtech Security Center.

Los contenedores se hacían pasar por sistemas como Tomcat o MySQL para pasar desapercibidos. Además de aquellos que minan Monero, otros contenedores publicados buscaban tomar el control de la máquina base a través de la apertura de shells inversas o añadiendo las claves de acceso SSH del atacante a las permitidas para el usuario root.


Con este esquema, el usuario "docker123321" ha conseguido más de 5 millones de descargas de sus contenedores, minando un total de 544.74 Monero a lo largo de un año. Después de varias notificaciones de particulares y empresas de seguridad, el usuario ha sido finalmente eliminado.

Fuente | una-al-dia

16 de abril de 2018

Administrando #Docker con Portainer.io

Estás iniciando en #Docker y te resulta muy complicado? A todos, de alguna u otra manera pasamos por esto. Nuevas plataformas, nuevas tecnologías, muchos comandos en la consola, y aunque muchas veces no parezca, claro que es complejo y complicado de entender a la primera.

Navegando un poco por la web, encontré una excelente herramienta de Administración y Despliegue para Docker llamado Portainer.io

Figura 1: Administrando Docker con Portainer.io

Portainer.io es un Dashboard Web que permite realizar la administración, monitoreo y despliegue para contenedores Docker con la facilidad de no tener que recordad la secuencia de comandos para cada actividad.

Portainer.io se encuentra publicado en Docker Hub y está disponible para que comencemos a trabajar de la siguiente forma:

$ docker volume create portainer_data

$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

De esta manera, lo que hacemos es descargar la imagen desde Docker Hub y habilitar el puerto 9000 para ingresar a su administración.

Una vez allí, vamos a encontrar los estados de cada contenedor, sus archivos Logs en tiempo real, un acceso directo a su consola de administración.

Ademas, desde Portainer.io es posible realizar la administración de las redes, imagenes, volúmenes y una colección de templates disponibles para realizar el despliegue de forma simple.

Figura 2: Administración de Templates en Portainer.io

No dejen de probar esta excelente herramienta de administración para iniciar rápidamente en el universo Docker.

Saludos!

Enlace | Portainer.io

7 de septiembre de 2016

#Docker @docker Docker!!!

Esto es parte de las nuevas tecnologías con la que hoy contamos. Solo basta con leer un par de líneas para saber de que estas ideas son las que dan un quiebre y crean paradigmas nuevos.

Figura 1: #Docker @docker Docker!!!

Si bien Docker, no fueron aquellos que inventaron la tecnología de crear contenedores sobre un Sistema Operativo, son los que facilitaron e hicieron una experiencia de usuario magnífica.

¿Qué es Docker?


A lo largo de varias entradas en el blog, vamos ir comprendiendo los aspectos fundamentales y necesarios para conocerlo mejor. Sin embargo podemos iniciar conociendo de que trata Docker.

Bajo el lema "Build, Ship, Run", Docker se refiere a todo aquello que facilita la creación, implementación y ejecución de aplicaciones mediante el uso de contenedores. Éstos permiten a un desarrollador empaquetar un aplicación con todas las partes que necesita, es decir, bibliotecas y dependencias, y usarlo todo como si fuera un sólo paquete.

Lo primero que puede surgir es una confusión con la creación y administración de Máquinas Virtuales, pero a diferencia de éstas, las aplicaciones utilizan el mismo kernel que el Sistema Operativo de base.

Docker implementa una API de alto nivel, para así proporcionar contenedores ligeros que ejecutan los procesos de manera aislada, basándose en el núcleo o kernel del sistema.

Se basa en la funcionalidad del núcleo y utiliza aislamiento de recursos (CPU, memoria, etcétera) y los espacios de nombres por separado, para aislar así la aplicación. Otra características importante es que accede a la virtualización del kernel de linux, a través de la biblioteca libcontainer, indectamente a través de libvirt, LXC o nspawn systemd.

Figura 2: Estructura de Docker

Mediante este sistema los recursos pueden ser aislados, los servicios restringidos. Los contenedores múltiples pueden compartir el mismo núcleo, pero se puede limitar la cantidad de su uso (CPU, memoria y E/S)

Aprovecho la oportunidad para compartir una bonita presentación e ir adelantando algunas cosas que vamos a seguir viendo.


La gente que se dedica a Desarrollar y Administrar sistemas, ya se encuentran adoptando Docker en cada implementación, ya vamos a estar comentando como la gente dedicada a la seguridad, pentesting, auditorías, etc también se acercan y voy a estar comentando las cosas interesantes que se están haciendo.

Saludos!

Enlace | Docker

16 de noviembre de 2015

Hacking con #Docker

Muchos han escuchado hablar de Docker pero muchos no saben de que se trata y porque es tan popular. El pasado Viernes, mis amigos Jason Soto @Jsitech y Jose Moruno Cadima @SniferL4bs en un nuevo Hangout para #ITTalks nos dejaron una muy bonita introducción a estos temas.


Estos son algunos de los temas que nos comentaron:
  • Qué es Docker
  • Qué son los Contenedores
  • Buscando y Creando Imágenes
  • Accediendo a los contenedores desde fuentes externas
  • Penetration Testing con Docker
  • Otros Usos

Afortunadamente ya se encuentra disponible el video con todo este contenido.


Saludos!

Entradas populares