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/