Se il kernel è compromesso nel contenitore, l'host è compromesso.
Apparentemente, un contenitore compromesso non dovrebbe essere in grado di danneggiare l'host. Tuttavia, la sicurezza del contenitore non è eccezionale e di solito esistono molte vulnerabilità che consentono a un utente con contenitore privilegiato di compromettere l'host. In questo modo, i contenitori sono spesso meno sicuri rispetto alle macchine virtuali complete. Ciò non significa che le macchine virtuali non possano essere compromesse . Non sono abbastanza come male.
Se il kernel viene sfruttato in una macchina virtuale, l'autore dell'attacco deve ancora trovare un bug nell'hypervisor. Se il kernel viene sfruttato in un contenitore, l'intero sistema viene compromesso, incluso l'host. Ciò significa che i bug di sicurezza del kernel, come classe, sono molto più severi quando vengono utilizzati i contenitori.
I contenitori vengono spesso implementati utilizzando spazi dei nomi :
A namespace wraps a global system resource in an abstraction that makes it appear to the process within the namespace that they have their own isolated instance of a global resource. Changes to the global resource are visible to other processes that are members of the namespace, but are invisible to other processes.
Sfortunatamente, i namespace Linux espongono tipicamente un'area di attacco molto più grande dal kernel. Molti kernel vulnerabilità sono utilizzabile nei namespace. Sebbene non tutte le soluzioni di container utilizzino i namespace di Linux, tutte utilizzano lo stesso tipo di tecnologia, con gli stessi problemi di sicurezza . Alcuni contenitori, come Docker, sono in grado di utilizzare un framework di filtraggio syscall chiamato seccomp per ridurre l'area di superficie di attacco del kernel. Questo è un miglioramento, ma non sempre è sufficiente.
Da Daniel Shapira :
[...] kernel exploits can be devastating for containerized environments. This is because containers share the same kernel as the host, thus trusting the built-in protection mechanisms alone isn’t sufficient.