Segurança do Docker: por que o lançamento da raiz é uma má ideia

O Docker se tornou uma ferramenta indispensável no DevOps e no desenvolvimento modernos. Ele permite que você isole o cerco, simplifique a roupa e escala rapidamente aplicativos. No entanto, por padrão, o Docker requer uma raiz, e isso cria uma zona potencialmente perigosa, que é frequentemente ignorada nos estágios iniciais.

Por que o Docker funciona da raiz?

O Docker usa os recursos do Linux: CGROUPS, Namespaces, iptables, Mount, Networking e outras funções do sistema. Essas operações estão disponíveis apenas para o super -usuário.

É por isso:
* Dockerd Demon começa da raiz,
* Os comandos do Docker são transmitidos a este demônio.

Isso simplifica o trabalho e fornece controle total sobre o sistema, mas ao mesmo tempo abre vulnerabilidades em potencial.

Por que é perigoso: Breakout de contêiner, cve, rce

Breakout de contêiner

Com isolamento fraco, um invasor pode usar chroot ou pivot_root para entrar no host.

Exemplos de ataques reais:

* CVE-2019-5736-Vulnerabilidade para Runc, permitido reescrever o aplicativo e executar o código no host.
* CVE-2021-3156-Vulnerabilidade para sudo, permitido obter uma raiz dentro do contêiner e sair.

RCE (execução do código remoto)

Se o aplicativo no contêiner estiver vulnerável e iniciar da raiz, RCE = controle total sobre o host.

Docker sem raiz: Solução do problema

Para minimizar esses riscos, o modo sem raiz apareceu no Docker. Nesse modo, o demônio e os contêineres são lançados em nome do usuário usual, sem nenhum privilégio de raiz. Isso significa que, mesmo que um invasor receba controle sobre o contêiner, ele não poderá prejudicar o sistema host.
Existem restrições: você não pode usar portas abaixo de 1024 (por exemplo, 80 e 443), o modo -privilegiado, bem como alguns modos de rede, não estão disponíveis. No entanto, na maioria dos cenários de desenvolvimento e no Docker sem raiz CI/CD, ele lida com sua tarefa e aumenta significativamente o nível de segurança.

Historicamente, lance da raiz – AntiPattern

Desde o início, o princípio dos menores privilégios foi aplicado no mundo Unix/Linux. Quanto menos direitos o processo, menos danos ele puder causar. O Docker exigiu inicialmente um acesso à raiz, mas hoje é considerado uma ameaça potencial.

Fontes

https://docs.docker.com/engine/security/rootless/
https://rootlesscontaine.rs/