Estás leyendo la publicación: ¿La seguridad mediocre de Docker conducirá a su desaparición prematura?
Desde su lanzamiento en 2013, Docker ha crecido hasta convertirse en uno de los pilares de la pila tecnológica de cualquier desarrollador. La opción de implementar aplicaciones en contenedores no solo las aísla del hardware del servidor, sino que también permite a los desarrolladores crear un entorno uniforme para la implementación. Sin embargo, este favorito de los desarrolladores tiene una falla de seguridad que muchos pasan por alto.
Comprender el problema
Debemos observar la arquitectura de Docker para comprender cómo se puede ejecutar la vulnerabilidad. Docker generalmente se usa en lugar de máquinas virtuales, ya que reduce la hinchazón y proporciona una mayor intercompatibilidad. Para garantizar esto, el software utiliza contenedores, que son ejecutables independientes que contienen todo lo necesario para ejecutar la aplicación sin problemas.
Las máquinas virtuales, por otro lado, logran la asignación de recursos mediante la creación de máquinas discretas, cada una con su propio sistema operativo, y las administran mediante un hipervisor. En Docker, estos contenedores se crean sobre un motor de contenedor, que es una aplicación que se ejecuta en el sistema operativo host. Además, los avances en Linux como chroot y cgroups permitieron que los contenedores se acercaran más a las máquinas virtuales en términos de partición de recursos.
Docker tomó estas funciones y las empaquetó en un servicio fácil de usar, agregando conceptos como imágenes, Dockerfiles y la CLI de Docker. También permitió a los administradores del sistema implementar rápidamente una gran cantidad de contenedores en los servidores, y aquí es donde radica el problema. El administrador de un sistema puede otorgar permisos a los usuarios para ejecutar contenedores Docker en una arquitectura implementada previamente. Sin embargo, hay un paso muy importante que no debe perderse si el administrador está implementando contenedores Docker en el servidor.
De forma predeterminada, Docker otorga privilegios de nivel raíz al usuario. Si bien la mayoría de los administradores de sistemas ignoran esta advertencia, Docker Wiki tiene una página dedicada a cómo se puede usar esto como un vector de ataque para un servidor.
El acceso raíz o de superusuario en máquinas basadas en Linux es similar al acceso de administrador en Windows, pero más potente. Con acceso raíz, los atacantes pueden eliminar todo el sistema de archivos, elevar a los usuarios normales a los que tienen privilegios de superusuario e instalar software malicioso sin notificaciones ni alertas.
Al acceder a un contenedor Docker no seguro, los atacantes pueden ejecutar fácilmente algunas líneas de código después de obtener acceso para ejecutar un exploit de escalada de privilegios. Esto significa que el actor malicioso puede elevar la cuenta sin privilegios a una cuenta de superusuario, abriendo un montón de nuevos vectores de ataque. ItsShash, un usuario de Reddit, declaró: “Docker es intrínsecamente inseguro debido a la forma en que Docker Daemon se ejecuta como root. Gran parte de los problemas con Docker se pueden mitigar cambiando a Podman u otra alternativa de contenedor sin raíz”.
Este exploit no es nada nuevo en la comunidad de Docker, pero los actores maliciosos están encontrando más exploits y agujeros en los sistemas de Docker utilizando esto como vector de ataque. En 2020, surgieron informes de que Docker era un objetivo principal para los ciberdelincuentes, ya que buscar sistemas mal configurados con acceso de administrador expuesto era una forma fácil de acceder a un entorno seguro. También hubo una tendencia de creación de malware específicamente para los sistemas Docker y Kubernetes.
Ejecutar un ecosistema de contenedores a escala también requiere que los administradores de sistemas sigan una larga lista de mejores prácticas de Docker para evitar el acceso no autorizado. Sin embargo, parece que la seguridad de Docker está lejos de ser el último clavo de su ataúd, ya que la compañía se está cavando su propia tumba.
Por qué Docker está muriendo lentamente
La lenta desaparición de Docker se remonta al lanzamiento de Docker Swarm, una plataforma de orquestación de contenedores centrada en la empresa. Swarm permitió a los administradores implementar una gran cantidad de contenedores Docker simultáneamente, pero estaba bloqueado detrás de un muro de pago. Kubernetes, por otro lado, ofreció todas las funciones de Swarm y más de forma gratuita, superando efectivamente a Docker en su propio juego.
Además, más tarde surgieron informes de que Docker rechazó la opción de tomar un Kubernetes incipiente bajo su protección a favor del desarrollo de Swarm. Jérôme Petazzoni, uno de los primeros y más antiguos empleados de Docker, declaró en una entrevista: “El mayor error fue extrañar a Kubernetes. Estábamos en esa burbuja de pensamiento colectivo donde internamente pensábamos que Kubernetes era demasiado complicado y que Swarm sería mucho más exitoso. Fue nuestro fracaso colectivo no darnos cuenta de eso”.
Si bien Docker buscó adelantarse a la tendencia de la industria mediante la creación de Open Container Initiative (OCI) en 2015, esto resultó ser una daga en la espalda. Si bien la creación de estándares abiertos es importante para el futuro de cualquier tecnología, abrió la puerta para que los competidores de Docker intervinieran cuando su posición en la industria comenzó a erosionarse.
Erosionó, con la adquisición de Docker por parte de Mirantis en 2019. A esto le siguió una serie de cambios apresurados de monetización, limitación de tasas y cambios en los términos de licencia con los gigantes tecnológicos con los que Docker había establecido acuerdos previamente. Esto luego condujo a un éxodo del ecosistema Docker, con Kubernetes y RHEL cortando el soporte para dockershim.
Los desarrolladores comenzaron a pasar lentamente a otras alternativas como Podman, que irónicamente se basa en el estándar OCI establecido por Docker. Northeastpaw, un usuario de Reddit, lo resume perfectamente: “Docker, la empresa, está en una situación difícil. Eventualmente morirán porque nunca pudieron adquirir un flujo de ingresos constante y no hay mucho que tengan ahora que pueda proporcionarles eso”.
Si bien es posible que Docker no vaya a ninguna parte en el futuro cercano, está claro que el panorama de TI dentro de diez años no incluirá este software como parte de la pila tecnológica. Tal vez algún otro software de contenedorización basado en OCI tome la posición de líder del mercado, pero con la trayectoria actual de Docker, podría ser enviado al cementerio de software.