Si el núcleo está comprometido en el contenedor, el host está comprometido.
Aparentemente, un contenedor comprometido no debería poder dañar al host. Sin embargo, la seguridad del contenedor no es excelente, y generalmente hay muchas vulnerabilidades que permiten que un usuario de contenedor privilegiado ponga en peligro el host. De esta manera, los contenedores a menudo son menos seguros que las máquinas virtuales completas. Eso no significa que las máquinas virtuales no puedan ser pirateadas . Simplemente no son bastante tan malos.
Si el kernel se explota en una máquina virtual, el atacante aún necesita encontrar un error en el hipervisor. Si el kernel se explota en un contenedor, todo el sistema está comprometido, incluido el host. Esto significa que los errores de seguridad del núcleo, como clase, son mucho más graves cuando se usan contenedores.
Los contenedores a menudo se implementan utilizando espacios de nombres :
Un espacio de nombres envuelve un recurso del sistema global en una abstracción que lo hace parecer al proceso dentro del espacio de nombres que tienen su propia instancia aislada de un recurso global. Los cambios en el recurso global son visibles para otros procesos que son miembros del espacio de nombres, pero son invisibles para otros procesos.
Desafortunadamente, los espacios de nombres de Linux generalmente exponen un área de superficie de ataque mucho mayor desde el kernel. Many kernel vulnerabilidades are explotable en los espacios de nombres. Si bien no todas las soluciones de contenedor utilizan espacios de nombres de Linux, todas usan el mismo tipo de tecnología, con los mismos problemas de seguridad . Algunos contenedores, como Docker, son capaces de hacer uso de un marco de filtrado syscall llamado seccomp para reducir el área de superficie de ataque del kernel. Esto es una mejora, pero no siempre es suficiente.
De Daniel Shapira :
[...] las explotaciones del kernel pueden ser devastadoras para entornos de contenedor. Esto se debe a que los contenedores comparten el mismo kernel que el host, por lo que confiar en los mecanismos de protección integrados por sí solos no es suficiente.