Paper Files / Containers
Isolamento de Processos em “Containers” Primitivos em Sistemas UNIX: Implicações de Segurança do Uso de chroot e Ambientes Confinados (1979–1989)
Durante a década de 1980, a segurança de sistemas multiusuário conectados por redes acadêmicas e militares tornou-se uma preocupação crescente. A expansão da ARPANET e de redes UNIX interligadas revelou limitações significativas nos mecanismos tradicionais de controle de acesso baseados apenas em permissões de arquivos e identidade de usuário. Nesse contexto, surgiram técnicas de confinamento de processos que, embora ainda rudimentares, antecipam o conceito moderno de “containers”: ambientes de execução isolados dentro de um único sistema operacional. Entre essas técnicas, o mecanismo `chroot`, introduzido no UNIX Version 7 no final da década de 1970, passou a ser utilizado experimentalmente para restringir serviços de rede potencialmente vulneráveis, como servidores FTP anônimos e utilitários de compilação remota. Este trabalho examina sistematicamente o papel de ambientes confinados baseados em `chroot` como forma primitiva de containerização em sistemas UNIX de 4.2BSD e 4.3BSD. O estudo analisa o modelo de ameaça associado à execução de serviços em ambientes parcialmente isolados, considerando ataques conhecidos na época, incluindo exploração de estouro de buffer, escalonamento de privilégios e propagação automatizada de worms — especialmente à luz do incidente do Morris Worm de 1988. Apresentamos uma formalização do problema de isolamento de processos em sistemas monolíticos e avaliamos experimentalmente a eficácia de ambientes `chroot` na contenção de intrusões. A metodologia proposta inclui a construção de ambientes de execução confinados para serviços de rede em hosts VAX/UNIX, combinada com monitoramento de tráfego por meio de captura de pacotes utilizando `tcpdump`. São realizados experimentos controlados simulando intrusões locais e remotas para avaliar até que ponto o confinamento impede acesso ao sistema de arquivos principal e limita a movimentação lateral do atacante. Os resultados indicam que o uso de “containers” primitivos reduz significativamente a superfície de ataque quando aplicado corretamente, mas apresenta limitações estruturais relevantes. Vulnerabilidades no kernel, erros de configuração e a presença de utilitários privilegiados dentro do ambiente isolado podem permitir fuga do confinamento. Argumenta-se que o isolamento eficaz requer uma combinação de mecanismos: separação de privilégios, minimização de binários disponíveis e monitoramento contínuo. Este artigo conclui que ambientes confinados representam uma direção promissora para segurança operacional em sistemas UNIX, antecipando arquiteturas futuras de isolamento de aplicações. No entanto, sua eficácia depende fortemente de princípios clássicos de segurança de sistemas, como privilégio mínimo e verificação completa, conforme proposto por Saltzer e Schroeder.
- Introduction
O crescimento das redes de computadores durante os anos 1980 transformou profundamente o cenário de segurança em sistemas UNIX. Inicialmente projetados para ambientes de pesquisa relativamente confiáveis, esses sistemas passaram a ser expostos a usuários remotos através de protocolos como Telnet, FTP e SMTP. À medida que a conectividade aumentou, tornou-se evidente que o modelo tradicional de segurança baseado apenas em permissões de arquivos e autenticação de usuários não era suficiente para conter falhas em serviços de rede.
Incidentes como o Morris Worm, observado em novembro de 1988, demonstraram de forma dramática como vulnerabilidades em programas amplamente utilizados poderiam permitir execução remota de código e propagação automatizada em larga escala (EICHIN; ROCHLIS, 1989). O worm explorava diversas fragilidades, incluindo estouros de buffer em serviços de rede e configurações inadequadas de confiança entre máquinas UNIX. Um aspecto particularmente relevante foi a capacidade do worm de executar código com privilégios elevados após comprometer um processo vulnerável.
Esses eventos incentivaram pesquisadores e administradores de sistemas a buscar mecanismos adicionais de contenção. Uma ideia emergente consistia em executar serviços potencialmente perigosos dentro de ambientes isolados, limitando o acesso desses processos ao restante do sistema. Embora o termo “container” ainda não fosse utilizado na literatura técnica da época, o conceito fundamental — encapsular aplicações em ambientes restritos — já estava presente em várias técnicas experimentais.
O mecanismo mais amplamente disponível para esse propósito era a chamada de sistema chroot, introduzida no UNIX para alterar o diretório raiz percebido por um processo (RITCHIE; THOMPSON, 1974). Após a invocação de chroot, o processo e seus descendentes passam a enxergar um subdiretório específico como se fosse a raiz do sistema de arquivos. Na prática, isso permite criar uma espécie de “mini‑sistema” contendo apenas os arquivos necessários para a execução de determinado serviço.
Administradores começaram a aplicar esse mecanismo para restringir serviços como FTP anônimo, compiladores acessíveis remotamente e ambientes de testes para usuários não confiáveis. A premissa era simples: se um atacante explorasse uma vulnerabilidade no serviço, seu acesso ficaria restrito ao ambiente confinado.
Entretanto, o uso de chroot como mecanismo de segurança levantou várias questões fundamentais. Em primeiro lugar, o isolamento fornecido não era originalmente projetado como controle de segurança robusto. Em segundo lugar, diversos aspectos do sistema — como descritores de arquivos abertos, dispositivos especiais e permissões de superusuário — poderiam potencialmente permitir a evasão do confinamento.
Este trabalho investiga sistematicamente o uso de ambientes confinados baseados em chroot como forma primitiva de containerização em sistemas UNIX. O objetivo é analisar:
- quais ameaças esse mecanismo realmente mitiga;
- quais ataques ainda permanecem possíveis;
- quais práticas operacionais tornam o confinamento mais seguro.
Para isso, combinamos análise teórica de modelos de segurança com experimentos práticos realizados em sistemas 4.3BSD executando em hardware VAX. O estudo contribui para compreender os limites do isolamento de processos em sistemas monolíticos e fornece diretrizes para o uso seguro de ambientes confinados em redes interconectadas.
- Background and Related Work
A ideia de isolamento de processos não surgiu com o UNIX. Na verdade, sistemas anteriores já exploravam diferentes formas de separação de execução para garantir segurança e estabilidade. O sistema Multics, desenvolvido nos anos 1960, introduziu um sofisticado modelo de proteção baseado em anéis de privilégio e segmentação de memória (SALTZER; SCHROEDER, 1975). Esse sistema permitia que diferentes níveis de código operassem com diferentes permissões de acesso.
Outro avanço significativo ocorreu com os sistemas de virtualização de máquinas completas, como o IBM VM/370. Nesse modelo, múltiplos sistemas operacionais completos podiam executar simultaneamente em um único hardware físico, cada um dentro de uma máquina virtual isolada (POPEK; GOLDBERG, 1974). A virtualização fornecia forte isolamento, mas exigia recursos computacionais significativos e infraestrutura especializada.
O UNIX seguiu um caminho diferente. Seu modelo de segurança baseava‑se principalmente em:
- separação entre usuário e superusuário
- permissões de leitura, escrita e execução em arquivos
- processos independentes gerenciados pelo kernel
Esse modelo era simples e eficiente, mas não oferecia isolamento forte entre aplicações executadas pelo mesmo usuário.
A chamada de sistema chroot foi introduzida como uma ferramenta administrativa para modificar temporariamente o diretório raiz de um processo. Embora originalmente destinada a tarefas de manutenção e construção de sistemas, ela passou a ser utilizada para criar ambientes restritos.
A semântica de chroot pode ser descrita da seguinte forma. Seja $F$ o sistema de arquivos global e seja $d$ um diretório dentro dele. Após executar:
$$ \text{chroot}(d) $$
o processo passa a resolver caminhos absolutos em relação a $d$ em vez da raiz original. Formalmente, para qualquer caminho absoluto $p$:
$$ p’ = d \oplus p $$
onde $\oplus$ representa a concatenação de caminhos.
Esse mecanismo cria a ilusão de um sistema de arquivos independente, permitindo que processos operem dentro de um subconjunto do sistema real.
Pesquisas anteriores sobre confinamento de programas destacaram a importância de limitar explicitamente os recursos disponíveis a processos potencialmente maliciosos. Lampson (1974) introduziu o conceito de problema do confinamento, que examina como impedir que um programa exfiltre informações ou interfira em outras partes do sistema.
Denning (1976) discutiu mecanismos de monitoramento e controle de acesso para sistemas seguros, enfatizando a necessidade de um monitor de referência confiável dentro do kernel.
Esses princípios foram posteriormente formalizados no Orange Book do Departamento de Defesa dos Estados Unidos, que estabeleceu critérios para sistemas computacionais confiáveis (DOD, 1985).
Apesar dessas contribuições teóricas, implementações práticas de confinamento em sistemas UNIX permaneceram limitadas. O chroot oferece isolamento apenas no nível do sistema de arquivos e não controla explicitamente:
- chamadas de sistema
- uso de dispositivos
- comunicação entre processos
Isso significa que o isolamento depende fortemente da configuração do ambiente.
A Tabela 1 compara diferentes mecanismos de isolamento disponíveis até o final da década de 1980.
| Mecanismo | Nível de isolamento | Custo computacional | Uso típico |
|---|---|---|---|
| Permissões UNIX | Arquivos | Muito baixo | Controle básico de acesso |
| chroot | Sistema de arquivos | Baixo | Confinamento de serviços |
| Multics Rings | Execução e memória | Médio | Sistemas seguros |
| VM/370 | Máquina completa | Alto | Virtualização de sistemas |
Embora a virtualização ofereça isolamento mais forte, o chroot tem a vantagem de ser simples e amplamente disponível em sistemas UNIX.
Essa característica motivou sua adoção crescente como mecanismo de defesa em ambientes conectados à ARPANET.
- Threat Model and Problem Formalization
O objetivo principal deste trabalho é avaliar se ambientes confinados baseados em chroot podem reduzir o impacto de comprometimentos de serviços de rede.
Consideramos um sistema UNIX multiusuário conectado a uma rede TCP/IP. O sistema executa vários serviços acessíveis remotamente, incluindo FTP e Telnet.
O modelo de ameaça assume que um atacante pode:
- enviar dados arbitrários a serviços de rede
- explorar falhas de programação
- obter execução de código dentro do processo vulnerável
Esse cenário corresponde ao observado durante incidentes reais como o Morris Worm (EICHIN; ROCHLIS, 1989).
Formalmente, definimos:
- $S$ = conjunto de serviços de rede
- $V$ = conjunto de vulnerabilidades exploráveis
- $P$ = privilégios obtidos pelo atacante
Sem confinamento, o impacto potencial é:
$$ Impacto = f(P, A) $$
onde $A$ representa os recursos acessíveis do sistema.
Quando o serviço é executado dentro de um ambiente chroot, o conjunto de recursos disponíveis torna‑se $A’$, onde:
$$ A’ \subset A $$
O objetivo é minimizar $A’$ de forma que:
$$ Impacto_{confinado} < Impacto_{normal} $$
No entanto, existem vetores de ataque capazes de escapar do confinamento.
A Tabela 2 resume alguns vetores conhecidos.
| Vetor de ataque | Descrição | Possível mitigação |
|---|---|---|
| Binários setuid | Programas com privilégios elevados | Remover do ambiente |
| Dispositivos especiais | Acesso a /dev |
Minimizar dispositivos |
| Descritores abertos | Arquivos herdados antes do chroot | Fechar descritores |
| Vulnerabilidades do kernel | Falhas no sistema operacional | Atualizações e auditoria |
Esses vetores serão avaliados experimentalmente nas seções seguintes.
- Proposed Methodology
Nossa metodologia baseia‑se na construção de ambientes confinados mínimos para serviços de rede.
O procedimento envolve quatro etapas principais:
- criação de uma árvore de diretórios isolada
- cópia mínima de bibliotecas e binários necessários
- configuração de permissões restritivas
- execução do serviço após chamada
chroot
O objetivo é aplicar o princípio de privilégio mínimo (SALTZER; SCHROEDER, 1975).
Um ambiente típico inclui:
/bin/etc/lib/dev
Cada diretório contém apenas os arquivos estritamente necessários.
Por exemplo, para um servidor FTP anônimo, apenas alguns utilitários são requeridos.
- Implementation
O experimento foi implementado em um sistema VAX 11/780 executando 4.3BSD.
A criação do ambiente confinado seguiu os seguintes passos administrativos:
mkdir /ftp-root
cd /ftp-root
mkdir bin etc dev lib pub
cp /bin/ls bin/
cp /bin/sh bin/
mknod dev/null c 2 2
chmod 666 dev/null
O servidor FTP foi então iniciado dentro do ambiente:
chroot /ftp-root /bin/ftpd
Para monitorar o tráfego de rede durante os experimentos, utilizamos tcpdump, ferramenta desenvolvida no Lawrence Berkeley Laboratory.
tcpdump -i le0 port ftp
Essa captura permitiu observar tentativas de exploração e padrões de tráfego associados.
- Experimental Evaluation
Realizamos experimentos simulando intrusões em serviços executados dentro e fora de ambientes confinados.
A Tabela 3 apresenta os resultados observados.
| Cenário | Acesso ao sistema de arquivos | Escalonamento de privilégio | Persistência |
|---|---|---|---|
| Serviço normal | Completo | Possível | Alta |
| Serviço em chroot mínimo | Restrito | Difícil | Baixa |
| chroot mal configurado | Parcial | Possível | Média |
Os resultados mostram redução significativa no impacto de comprometimentos quando o ambiente é corretamente configurado.
- Case Study
Um caso prático analisado envolveu um servidor FTP anônimo acessível pela rede acadêmica.
Antes da aplicação do confinamento, um usuário malicioso conseguiu explorar um erro de configuração e acessar diretórios do sistema.
Após a implementação do ambiente chroot, tentativas semelhantes resultaram apenas em acesso ao diretório isolado.
Capturas de rede confirmaram múltiplas tentativas de navegação fora da raiz aparente.
- Discussion
Os experimentos indicam que ambientes confinados oferecem benefícios reais de segurança.
Entretanto, o mecanismo não fornece isolamento completo.
Se um processo dentro do chroot obtiver privilégios de superusuário, ele poderá potencialmente manipular descritores ou dispositivos para escapar.
Esse comportamento reforça a importância de minimizar binários privilegiados dentro do ambiente.
- Conclusion and Future Work
Ambientes confinados baseados em chroot representam uma forma inicial de containerização em sistemas UNIX.
Embora não forneçam isolamento completo, eles reduzem significativamente a superfície de ataque quando aplicados corretamente.
Pesquisas futuras devem explorar mecanismos adicionais de isolamento no nível do kernel e controle mais granular de chamadas de sistema.
Esses avanços poderão levar a arquiteturas mais robustas para execução segura de serviços em redes abertas.
- References
DENNING, D. E. A lattice model of secure information flow. Communications of the ACM, 1976. https://doi.org/10.1145/360051.360056
DIFFIE, W.; HELLMAN, M. New directions in cryptography. IEEE Transactions on Information Theory, 1976. https://ieeexplore.ieee.org/document/1055638
DOD. Trusted Computer System Evaluation Criteria (Orange Book). 1985. https://csrc.nist.gov/publications/detail/dod/5200-28-std/final
EICHIN, M.; ROCHLIS, J. With microscope and tweezers: analysis of the Internet worm of 1988. 1989. https://doi.org/10.1109/SP.1989.36348
KARGER, P.; SCHELL, R. Multics security evaluation. 1974. https://apps.dtic.mil/sti/citations/ADA001905
LAMPSon, B. A note on the confinement problem. Communications of the ACM, 1974. https://doi.org/10.1145/361011.361067
MORRIS, R.; THOMPSON, K. Password security: a case history. Communications of the ACM, 1979. https://doi.org/10.1145/359168.359172
NEEDHAM, R.; SCHROEDER, M. Using encryption for authentication in large networks of computers. Communications of the ACM, 1978. https://doi.org/10.1145/359657.359659
POPEK, G.; GOLDBERG, R. Formal requirements for virtualizable third generation architectures. Communications of the ACM, 1974. https://doi.org/10.1145/361011.361073
RITCHIE, D.; THOMPSON, K. The UNIX time-sharing system. Communications of the ACM, 1974. https://doi.org/10.1145/361011.361061
SALTZER, J.; SCHROEDER, M. The protection of information in computer systems. Proceedings of the IEEE, 1975. https://doi.org/10.1109/PROC.1975.9939
TANENBAUM, A. S. Operating Systems: Design and Implementation. 1987. https://archive.org/details/operatingsystemsdesignimplementation
(Additional classic references up to 1989 omitted here for brevity in this output format but assumed included in the full paper.)