> For the complete documentation index, see [llms.txt](https://vida03.gitbook.io/redteam/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://vida03.gitbook.io/redteam/docker/namespaces.md).

# Namespaces

## Apresentação

O docker utiliza namespaces para providenciar a isolação dos contêiners entre os hosts, algum deles:

* PID namespace para isolamento de processo
* NET namespace para gerenciamento de interfaces de internet
* IPC namespace para gerenciamento de acesso a recursos IPC
* MNT namespace para gerenciamento de montagem de filesystems
* UTS namespace para isolamento de kernel
* User ID(user) namespace para isolamento de privilégios

Iremos falar sobre o namespace User ID, como podemos mapear toda a raiz do host e como podemos defender desse ataque

## Attack

O usuário precisa apenas estar no grupo **docker**, para poder rodar o docker, com isso ele consegue acesso root ao sistema mapeando o diretório raiz para um diretório dentro do contêiner

<figure><img src="https://418865174-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFu6uaU65JuQBpnFAUDk8%2Fuploads%2Fvt1mKe4rBNiV1Cz2N5X3%2Fnewuser%20get%20root.png?alt=media&amp;token=c43f1b43-20b0-4484-8803-ae1256edcfc6" alt=""><figcaption></figcaption></figure>

## Defense

```
# Primeiro vamos parar o docker
sudo systemctl stop docker

# Agora vamos configurar corretamente o namespace user
sudo dockerd --userns-remap=default &
```

<figure><img src="https://418865174-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FFu6uaU65JuQBpnFAUDk8%2Fuploads%2Fz21ILhlWA3htrw68hL4y%2Fuserns%20remap.png?alt=media&amp;token=f1339de4-ab26-4b94-8c8f-eee83a601810" alt=""><figcaption></figcaption></figure>

## Conclusão

É muito usuários com menos privilégio terem permissão para executar o docker, e se o namespace do user **não estiver mapeado para default**, o usuário consegueria acesso ao diretório root no sistema
