Paper Files / Containers
Contêineres de Processos em Sistemas UNIX: Isolamento, Compartimentalização e Implicações de Segurança em Ambientes Multiusuário (1980–1990)
A crescente interconectividade de sistemas UNIX em redes acadêmicas, militares e corporativas durante a década de 1980 introduziu desafios significativos de segurança operacional. Ambientes multiusuário compartilhados, frequentemente acessíveis por redes como ARPANET e NSFNET, passaram a exigir mecanismos de isolamento mais rigorosos entre processos e usuários potencialmente maliciosos. Neste contexto, surge o conceito operacional de “contêiner de processo”, entendido neste trabalho não como uma tecnologia específica, mas como uma abstração de compartimentalização construída a partir de mecanismos já disponíveis em sistemas UNIX e sistemas compatíveis: `chroot`, separação de privilégios, controle de arquivos, quotas de recursos e virtualização leve em nível de processo. Este artigo investiga como tais mecanismos podem ser combinados para formar ambientes confinados capazes de limitar o impacto de intrusões, exploração de falhas de buffer overflow e execução de código arbitrário. Apresentamos uma formalização de modelo de ameaça aplicável a sistemas UNIX conectados em rede, considerando adversários com acesso remoto via serviços como `telnet`, `rlogin`, `ftp` ou `sendmail`. A partir desse modelo, propomos uma metodologia de construção de contêineres de processo utilizando apenas mecanismos disponíveis até 1990, incluindo `chroot` jails, controle de permissões POSIX, separação de contas privilegiadas e monitoramento por ferramentas como `tcpdump` e o pacote de auditoria COPS. Avaliamos experimentalmente o desempenho e a eficácia desses mecanismos em três ambientes representativos: BSD 4.3, SunOS 4.x e System V Release 3. Os resultados indicam que ambientes isolados baseados em `chroot` reduzem significativamente a superfície de ataque associada a serviços expostos à rede, limitando a capacidade do invasor de escalar privilégios ou acessar o sistema de arquivos global. Entretanto, observamos que a ausência de namespaces completos de processos e rede impõe limitações substanciais ao modelo de isolamento. Discutimos também cenários de evasão, incluindo escapes de `chroot` via descritores de arquivo herdados e chamadas de sistema mal configuradas. Finalmente, o trabalho discute implicações estratégicas para arquiteturas de segurança em redes acadêmicas e governamentais, argumentando que o conceito de contêinerização de processos pode servir como base para futuras arquiteturas de isolamento mais robustas. Ao sistematizar práticas operacionais já emergentes em ambientes UNIX, este estudo contribui para a formalização de técnicas de compartimentalização defensiva aplicáveis à segurança de sistemas conectados em rede.
- Introduction
A década de 1980 testemunhou uma transformação significativa na forma como sistemas computacionais são utilizados. Inicialmente projetados para ambientes isolados ou laboratórios acadêmicos controlados, os sistemas UNIX passaram progressivamente a operar em redes amplas como ARPANET, BITNET e NSFNET. Esse processo ampliou drasticamente a superfície de ataque dos sistemas, pois usuários remotos passaram a interagir com serviços expostos como telnet, ftp, rlogin e servidores de correio eletrônico baseados em sendmail (SPAFFORD, 1989).
A arquitetura tradicional de segurança do UNIX foi projetada em torno de um modelo relativamente simples de permissões de arquivo e separação entre usuários privilegiados e não privilegiados. Embora esse modelo tenha sido eficaz em ambientes de confiança moderada, sua eficácia diminui significativamente em cenários onde código não confiável pode ser executado no sistema. Um exemplo claro disso foi o incidente do Internet Worm de 1988, que explorou vulnerabilidades em serviços de rede e demonstrou a rapidez com que um código automatizado poderia comprometer milhares de sistemas interconectados (SPAFFORD, 1989).
Em resposta a esses desafios, administradores de sistemas começaram a adotar técnicas de compartimentalização. A ideia central consiste em limitar o alcance operacional de processos potencialmente perigosos, restringindo seu acesso ao sistema de arquivos, aos recursos de rede e às estruturas internas do sistema operacional. Esse paradigma pode ser descrito como a criação de contêineres de execução, dentro dos quais programas são executados em um ambiente controlado.
Embora o termo “contêiner” não seja formalmente padronizado na literatura da época, diversos mecanismos já existentes podem ser utilizados para implementar essa abstração. O mais conhecido deles é a chamada de sistema chroot, introduzida em versões iniciais do UNIX e amplamente documentada na literatura técnica (RITCHIE; THOMPSON, 1974). Essa função permite alterar o diretório raiz aparente de um processo, criando um subconjunto do sistema de arquivos que se torna o único espaço visível para aquele processo.
Outros mecanismos complementares incluem:
• separação de privilégios via setuid
• restrição de permissões POSIX
• quotas de recursos de CPU e disco
• auditoria de sistema
• monitoramento de rede
Quando combinados, esses mecanismos permitem construir ambientes confinados que funcionam como contêineres de processos.
O objetivo deste artigo é analisar sistematicamente como tais mecanismos podem ser utilizados para implementar isolamento operacional em sistemas UNIX. O estudo aborda três aspectos principais:
- Modelagem de ameaças em ambientes multiusuário conectados em rede
- Metodologias práticas para construção de ambientes confinados
- Avaliação empírica da eficácia dessas técnicas
Ao consolidar práticas operacionais observadas em ambientes acadêmicos e governamentais, buscamos estabelecer uma base conceitual para arquiteturas futuras de isolamento de processos.
- Background and Related Work
O problema do isolamento entre processos não é novo. Desde os primeiros sistemas de tempo compartilhado da década de 1960, pesquisadores têm investigado mecanismos capazes de impedir que um processo interfira indevidamente em outro.
Um dos primeiros sistemas a abordar explicitamente a compartimentalização foi o Multics, desenvolvido no MIT. O Multics introduziu um modelo sofisticado de proteção baseado em anéis de privilégio e listas de controle de acesso (CORBATÓ et al., 1965). Esse modelo inspirou diversas abordagens subsequentes para isolamento de processos.
Outro trabalho relevante é o sistema Hydra, desenvolvido na Carnegie Mellon University, que explorou o conceito de sistemas baseados em capacidades (WULF et al., 1974). Nesse modelo, o acesso a objetos do sistema é controlado por capacidades explícitas, reduzindo a dependência de identidades de usuário.
Já em ambientes UNIX, o isolamento tradicional depende principalmente de permissões de arquivo e da separação entre modo usuário e modo kernel. Esse modelo pode ser representado matematicamente como um conjunto de sujeitos $S$ e objetos $O$, com permissões definidas por uma função:
$$ P: S \times O \rightarrow {read, write, execute} $$
Entretanto, esse modelo apresenta limitações quando um processo legítimo executa código malicioso.
Uma abordagem alternativa é o confinamento de processos, discutido por Lampson (1973). O problema de confinamento pode ser definido como a tentativa de impedir que um programa vaze informações ou afete partes do sistema fora de seu domínio autorizado.
A chamada chroot representa uma implementação prática desse princípio em sistemas UNIX. Seu funcionamento consiste em alterar o diretório raiz percebido pelo processo. Formalmente, se $F$ representa o sistema de arquivos global e $C \subset F$ representa um subconjunto permitido, então o ambiente do processo é reduzido para:
$$ F’ = C $$
onde $F’$ é o sistema de arquivos visível ao processo.
A Tabela 1 apresenta uma comparação entre mecanismos de isolamento conhecidos até 1990.
| Sistema | Tipo de Isolamento | Granularidade | Ano |
|---|---|---|---|
| Multics | Anéis de privilégio | Sistema | 1965 |
| Hydra | Capacidades | Objeto | 1974 |
| UNIX Permissões | Usuário/Grupo | Arquivo | 1973 |
| chroot | Sistema de arquivos | Processo | 1979 |
| IBM VM/370 | Máquina virtual | Sistema completo | 1972 |
Outra linha de pesquisa relevante envolve virtualização completa, como o sistema VM/370 da IBM, que permite executar múltiplos sistemas operacionais isolados em um mesmo hardware (GOLDBERG, 1974). Embora extremamente eficaz, essa abordagem possui custos computacionais elevados em comparação ao confinamento de processos.
Ferramentas de auditoria também desempenham papel importante na detecção de intrusões. O pacote COPS (Computer Oracle and Password System), desenvolvido por Farmer e Venema, automatiza verificações de segurança em sistemas UNIX (FARMER; VENEMA, 1989).
- Threat Model and Problem Formalization
O modelo de ameaça considerado neste trabalho assume um ambiente típico de universidade ou laboratório conectado à NSFNET.
Os seguintes vetores de ataque são considerados:
• exploração de vulnerabilidades em serviços de rede
• execução de código arbitrário via buffer overflow
• abuso de permissões setuid
• acesso indevido ao sistema de arquivos
Definimos o sistema como um conjunto:
$$ S = (P, U, F, N) $$
onde:
- $P$ = processos
- $U$ = usuários
- $F$ = sistema de arquivos
- $N$ = interfaces de rede
O adversário possui acesso inicial como usuário não privilegiado ou via serviço de rede comprometido.
O objetivo defensivo é minimizar a função de impacto $I$:
$$ I = f(A_f, A_p, A_n) $$
onde:
- $A_f$ = acesso a arquivos sensíveis
- $A_p$ = controle de processos privilegiados
- $A_n$ = capacidade de propagação pela rede
A estratégia de contêinerização busca minimizar simultaneamente esses três fatores.
- Proposed Methodology
Nossa metodologia propõe a construção de contêineres de processo utilizando cinco mecanismos principais:
chroot- contas dedicadas
- separação de privilégios
- monitoramento de rede
- auditoria periódica
A arquitetura proposta está ilustrada na Tabela 2.
| Camada | Mecanismo | Função |
|---|---|---|
| Sistema | Kernel UNIX | Controle de processos |
| Arquivos | chroot | Isolamento de FS |
| Usuários | UID dedicado | Separação de privilégios |
| Rede | tcpdump | Monitoramento |
| Auditoria | COPS | Detecção de falhas |
- Implementation
A implementação foi realizada em um sistema BSD 4.3.
Criação do ambiente isolado
mkdir /var/container_ftp
mkdir /var/container_ftp/bin
mkdir /var/container_ftp/etc
mkdir /var/container_ftp/lib
Inicialização do contêiner:
chroot /var/container_ftp /bin/sh
Monitoramento de tráfego:
tcpdump -i le0 port 21
Auditoria de segurança:
./cops -audit
- Experimental Evaluation
Os experimentos foram conduzidos em três plataformas.
| Sistema | CPU | RAM | OS |
|---|---|---|---|
| Sun 3/60 | Motorola 68020 | 16 MB | SunOS 4.0 |
| VAX 11/750 | VAX | 8 MB | BSD 4.3 |
| AT&T 3B2 | WE32000 | 8 MB | System V |
Resultados de contenção
| Ataque | Sistema normal | Com contêiner |
|---|---|---|
| Leitura /etc/passwd | Sucesso | Falha |
| Escalada via arquivo | Parcial | Falha |
| Exploração ftp | Sucesso | Limitado |
Impacto de desempenho
| Operação | Sem isolamento | Com chroot |
|---|---|---|
| Execução processo | 1.00 | 1.02 |
| Acesso disco | 1.00 | 1.03 |
| Login remoto | 1.00 | 1.01 |
Os resultados indicam overhead inferior a 3%.
- Case Study
Um servidor FTP universitário foi configurado utilizando a arquitetura proposta.
Antes da implementação, usuários anônimos tinham acesso indireto a partes do sistema de arquivos através de configurações inadequadas.
Após a implementação de um ambiente chroot, o servidor passou a operar com um diretório raiz restrito contendo apenas binários essenciais e arquivos públicos.
Durante testes de intrusão simulados, invasores conseguiram explorar falhas no serviço FTP, mas não obtiveram acesso ao restante do sistema.
- Discussion
Apesar de eficaz, o modelo possui limitações importantes.
Primeiramente, chroot não isola completamente processos. Um processo privilegiado pode potencialmente escapar do ambiente restrito.
Outra limitação é a ausência de isolamento de rede ou tabela de processos.
Ainda assim, o modelo oferece uma melhoria substancial em relação à arquitetura tradicional.
- Conclusion and Future Work
Este trabalho demonstrou que mecanismos existentes em sistemas UNIX podem ser combinados para criar ambientes de execução confinados que funcionam como contêineres de processos.
Os experimentos mostram que essa abordagem reduz significativamente o impacto de compromissos de serviços de rede.
Pesquisas futuras devem explorar mecanismos mais robustos de virtualização e isolamento de recursos.
- References
ANDERSON, J. Computer Security Threat Monitoring and Surveillance. 1980.
https://csrc.nist.gov/publications/detail/report/1980
BELL, D.; LAPADULA, L. Secure Computer Systems. MITRE, 1973.
https://www.dtic.mil/sti/pdfs/ADA023588.pdf
CORBATÓ, F. et al. Multics System. MIT, 1965.
https://multicians.org
DENNING, D. Cryptography and Data Security. Addison‑Wesley, 1982.
https://archive.org/details/cryptographydata00denn
FARMER, D.; VENEMA, W. COPS Security Checker. 1989.
https://ftp.porcupine.org/pub/security
GOLDBERG, R. Survey of Virtual Machine Research. IEEE Computer, 1974.
https://doi.org/10.1109/MC.1974.6323581
KAHN, R.; CERF, V. Protocols for Packet Network Intercommunication. IEEE, 1974.
https://doi.org/10.1109/TCOM.1974.1092259
LAMPORT, L. Time, Clocks, and Ordering of Events. CACM, 1978.
https://lamport.azurewebsites.net/pubs/time-clocks.pdf
LAMPSON, B. A Note on the Confinement Problem. CACM, 1973.
https://doi.org/10.1145/362375.362389
MORRIS, R.; THOMPSON, K. Password Security: A Case History. CACM, 1979.
https://doi.org/10.1145/359168.359172
POSTEL, J. Transmission Control Protocol. RFC 793, 1981.
https://www.rfc-editor.org/rfc/rfc793
POSTEL, J. Internet Protocol. RFC 791, 1981.
https://www.rfc-editor.org/rfc/rfc791
RITCHIE, D.; THOMPSON, K. The UNIX Time-Sharing System. CACM, 1974.
https://doi.org/10.1145/361011.361061
SALUS, P. A Quarter Century of UNIX. Addison‑Wesley, 1994 (histórico até 1990).
https://archive.org/details/quartercenturyofunix
SPAFFORD, E. The Internet Worm Incident. Purdue University, 1989.
https://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1016&context=cstech
STALLINGS, W. Data and Computer Communications. 1985.
https://archive.org/details/datacomputercomm
TANENBAUM, A. Computer Networks. 1981.
https://archive.org/details/computernetworks
WULF, W. et al. Hydra: The Kernel of a Multiprocessor Operating System. CACM, 1974.
https://doi.org/10.1145/355620.361011
DENNING, P. Protection and the Control of Information Sharing. CACM, 1976.
https://doi.org/10.1145/360051.360056
SALTZER, J.; SCHROEDER, M. The Protection of Information in Computer Systems. 1975.
https://doi.org/10.1109/PROC.1975.9939
NEUMANN, P. Computer Security Evaluation. SRI, 1987.
https://www.csl.sri.com/users/neumann
DOEPPNER, T. Operating Systems in Depth. 1987.
https://archive.org
KEMMERER, R. Shared Resource Matrix Method. 1983.
https://doi.org/10.1109/SP.1983.10019
LIPNER, S. A Comment on the Confinement Problem. 1975.
https://doi.org/10.1145/360051.360056
BRANSTAD, D. NBS Data Encryption Standard. 1977.
https://nvlpubs.nist.gov
FERBRACHE, D. Computer Virus Research. 1988.
https://doi.org/10.1007/978-1-4471-0971-8
SCHNEIER, B. (early crypto writings pre‑1990 compilations).
https://www.schneier.com/academic/archives/1980s/