Paper Files / Containers
Mecanismos de “Contêineres” de Processos em Sistemas UNIX: Isolamento, Confinamento e Implicações de Segurança em Ambientes Multiusuário (Perspectiva de 1989)
O crescimento de sistemas conectados em rede e o uso intensivo de máquinas UNIX em ambientes acadêmicos, militares e corporativos durante a década de 1980 introduziram desafios significativos relacionados ao isolamento de processos e à contenção de intrusões. Em sistemas multiusuário tradicionais, processos executados por diferentes usuários compartilham o mesmo kernel, espaço de recursos e dispositivos, o que amplia o impacto potencial de vulnerabilidades de software ou erros de configuração. Este trabalho investiga o conceito de “contêineres” de processos — entendido neste contexto como mecanismos de confinamento lógico que restringem processos a subconjuntos controlados de recursos do sistema. Diferentemente da virtualização completa proposta em arquiteturas como IBM VM/370, o enfoque apresentado baseia‑se em primitivas já presentes em sistemas UNIX e sistemas similares, incluindo `chroot`, separação de UID/GID, limites de recursos, políticas de controle de acesso e segmentação de sistemas de arquivos. A pesquisa examina como tais mecanismos podem ser combinados para formar ambientes isolados capazes de executar serviços de rede potencialmente vulneráveis sem comprometer o restante do sistema. São discutidos modelos de ameaça relevantes para redes TCP/IP emergentes, incluindo exploração de falhas em serviços `inetd`, escalonamento de privilégios e acesso indevido a arquivos sensíveis. A partir desses cenários, propomos uma metodologia de confinamento baseada em três camadas: restrição de sistema de arquivos, redução de privilégios e monitoramento de atividade. Implementações experimentais foram conduzidas em sistemas baseados em 4.3BSD rodando em hardware VAX e Sun‑3, avaliando o impacto de diferentes estratégias de confinamento em desempenho e segurança. Os resultados indicam que a utilização sistemática de ambientes confinados pode reduzir significativamente a superfície de ataque sem introduzir sobrecarga operacional proibitiva. Também analisamos limitações estruturais desses mecanismos, particularmente o fato de que todos os processos ainda dependem de um único kernel. Conclui‑se que o modelo de contêineres de processos — embora ainda primitivo em relação a sistemas de virtualização completos — representa uma abordagem prática e economicamente viável para fortalecer a segurança de serviços de rede em sistemas UNIX contemporâneos. Este estudo contribui para a compreensão de técnicas de isolamento que podem servir como base para futuras arquiteturas de execução segura em sistemas operacionais multiusuário.
- Introduction
A década de 1980 testemunhou uma expansão acelerada do uso de sistemas UNIX e redes TCP/IP em universidades, centros de pesquisa e organizações governamentais. Sistemas que anteriormente operavam de forma isolada passaram a ser interconectados, frequentemente oferecendo serviços de rede como telnet, ftp, smtp e rlogin. Essa conectividade ampliou significativamente a superfície de ataque disponível para intrusos, uma preocupação já apontada em relatórios clássicos sobre segurança computacional (WARE, 1970; ANDERSON, 1972).
A arquitetura tradicional do UNIX privilegia simplicidade e compartilhamento eficiente de recursos. Todos os processos executam sobre um único kernel e utilizam o mesmo conjunto de chamadas de sistema. Embora mecanismos como permissões de arquivos e separação de usuários ofereçam proteção básica, eles não foram originalmente projetados para lidar com adversários ativos explorando vulnerabilidades de software. Uma falha em um serviço privilegiado pode permitir que um atacante comprometa todo o sistema.
Nesse contexto, surge a necessidade de técnicas de confinamento de processos que limitem o impacto de falhas de software. O princípio fundamental consiste em restringir um processo a um subconjunto de recursos do sistema — arquivos, dispositivos e interfaces de rede — de modo que qualquer comportamento inesperado permaneça contido. Essa ideia tem raízes em pesquisas anteriores sobre controle de acesso e proteção de sistemas, como os modelos de proteção propostos por Lampson (1973) e os princípios de projeto seguro descritos por Saltzer e Schroeder (1975).
Embora a virtualização completa ofereça isolamento forte, como demonstrado em sistemas IBM VM/370 (POPEK; GOLDBERG, 1974), ela frequentemente exige suporte de hardware e pode introduzir complexidade operacional significativa. Em contraste, sistemas UNIX já possuem mecanismos que podem ser combinados para criar ambientes confinados mais leves. Entre eles destacam‑se:
chroot, que altera a raiz aparente do sistema de arquivos para um processo.- Separação de identidades de usuário (UID/GID).
- Limitação de recursos do sistema.
- Controle de acesso baseado em permissões.
Este trabalho utiliza o termo contêiner de processos para descrever a combinação desses mecanismos com o objetivo de criar ambientes isolados de execução. Embora esse conceito ainda não esteja formalizado como uma tecnologia específica, sua aplicação prática pode aumentar substancialmente a resiliência de serviços de rede.
O objetivo desta pesquisa é investigar:
- Como construir ambientes de confinamento baseados em mecanismos existentes do UNIX.
- Quais ameaças podem ser mitigadas por esses ambientes.
- Qual é o impacto operacional e de desempenho dessa abordagem.
Para responder a essas questões, desenvolvemos uma metodologia de implementação e conduzimos experimentos em sistemas UNIX amplamente utilizados em 1989. O estudo também analisa limitações estruturais e implicações de segurança desses mecanismos.
- Background and Related Work
A literatura sobre segurança de sistemas operacionais estabelece diversas bases conceituais relevantes para o estudo de isolamento de processos. O relatório RAND de Ware (1970) foi um dos primeiros a identificar riscos sistêmicos associados ao compartilhamento de recursos computacionais em ambientes multiusuário. Posteriormente, Anderson (1972) apresentou um estudo abrangente sobre ameaças e contramedidas em sistemas de tempo compartilhado.
Modelos de Proteção
Lampson (1973) introduziu o conceito de matriz de controle de acesso, representando formalmente a relação entre sujeitos e objetos do sistema. Essa matriz pode ser descrita matematicamente como:
$$ A: S \times O \rightarrow P $$
onde:
- $S$ representa o conjunto de sujeitos (usuários ou processos),
- $O$ representa o conjunto de objetos (arquivos, dispositivos),
- $P$ representa o conjunto de permissões possíveis.
Esse modelo fornece uma base teórica para mecanismos de controle de acesso implementados em sistemas operacionais.
Saltzer e Schroeder (1975) estabeleceram princípios fundamentais de projeto seguro, incluindo:
- Privilégio mínimo
- Economia de mecanismo
- Separação de privilégios
- Fail‑safe defaults
Esses princípios são diretamente relevantes para o conceito de contêineres de processos.
Sistemas com Isolamento Forte
Alguns sistemas operacionais experimentais exploraram isolamento mais rigoroso. MULTICS, por exemplo, introduziu segmentação avançada de memória e controle refinado de acesso (ORGANICK, 1972). Outro exemplo importante é o sistema VM/370 da IBM, que permitia múltiplas máquinas virtuais executando simultaneamente (MADNICK; DONOVAN, 1974).
A teoria de virtualização foi formalizada por Popek e Goldberg (1974), que definiram os requisitos para a construção de máquinas virtuais seguras e eficientes.
| Sistema | Ano | Técnica de isolamento | Nível de isolamento |
|---|---|---|---|
| MULTICS | 1969 | Segmentação e anéis de proteção | Alto |
| IBM VM/370 | 1972 | Virtualização completa | Muito alto |
| UNIX | 1974 | Permissões e usuários | Moderado |
| UNIX + chroot | ~1979 | Confinamento de sistema de arquivos | Moderado |
Segurança em Sistemas UNIX
O UNIX foi originalmente projetado com simplicidade como prioridade (RITCHIE; THOMPSON, 1974). O modelo de segurança baseia‑se principalmente em:
- Identidade de usuário (UID)
- Identidade de grupo (GID)
- Permissões de arquivos
Contudo, esse modelo apresenta limitações. Um processo com privilégios elevados pode acessar praticamente qualquer recurso do sistema.
A chamada de sistema chroot foi introduzida em versões posteriores do UNIX como ferramenta administrativa para alterar a raiz aparente de um processo. Embora originalmente destinada a tarefas de manutenção e construção de sistemas, ela também pode ser utilizada para criar ambientes confinados.
Monitoramento de Rede
Ferramentas como tcpdump, desenvolvida por Van Jacobson e colaboradores na Universidade da Califórnia em Berkeley no final da década de 1980, permitem observar tráfego de rede diretamente a partir da interface de rede. Isso fornece visibilidade essencial para detectar comportamentos anômalos em serviços confinados.
Exemplo de captura básica:
tcpdump -i le0 tcp port 23
Esse comando captura tráfego Telnet em uma interface Ethernet le0.
- Threat Model and Problem Formalization
Para analisar a eficácia de contêineres de processos, é necessário definir explicitamente o modelo de ameaça considerado.
Assumimos um ambiente típico de rede acadêmica ou corporativa em 1989, com os seguintes elementos:
- Servidores UNIX executando serviços
inetd. - Conectividade TCP/IP.
- Usuários locais com contas legítimas.
- Possibilidade de acesso remoto via
telnetouftp.
Classes de Ameaça
As principais ameaças consideradas incluem:
-
Exploração de falhas em serviços de rede
Um erro de programação em um daemon pode permitir execução arbitrária de código. -
Escalonamento de privilégios
Um processo comprometido tenta obter privilégios de superusuário. -
Acesso indevido a arquivos sensíveis
Arquivos como/etc/passwdou diretórios de usuários podem ser alvo. -
Movimento lateral dentro do sistema
Formalmente, podemos representar o impacto potencial de uma intrusão como:
$$ I = \sum_{r \in R} w_r \cdot a_r $$
onde:
- $R$ representa o conjunto de recursos do sistema,
- $a_r$ indica acesso não autorizado ao recurso $r$,
- $w_r$ representa o peso ou criticidade desse recurso.
O objetivo de um contêiner de processos é minimizar o conjunto de recursos acessíveis.
Superfície de Ataque
A superfície de ataque de um processo pode ser aproximada como:
$$ S = F + N + D $$
onde:
- $F$ = arquivos acessíveis
- $N$ = interfaces de rede
- $D$ = dispositivos do sistema
Um contêiner eficaz reduz significativamente $F$ e $D$, mantendo apenas o mínimo necessário.
- Proposed Methodology
A metodologia proposta consiste em três camadas de confinamento.
Camada 1: Restrição do Sistema de Arquivos
A chamada chroot permite alterar a raiz do sistema de arquivos visível para um processo.
Exemplo de configuração:
mkdir -p /containers/ftp/{bin,etc,dev,lib}
cp /bin/sh /containers/ftp/bin
cp /etc/passwd /containers/ftp/etc
chroot /containers/ftp /bin/sh
Após a execução, o processo não consegue acessar arquivos fora da nova raiz.
| Diretório | Função | Necessário |
|---|---|---|
| /bin | Executáveis básicos | Sim |
| /etc | Arquivos de configuração | Sim |
| /dev | Dispositivos mínimos | Sim |
| /home | Dados de usuários | Opcional |
Camada 2: Redução de Privilégios
Serviços confinados devem executar com UID dedicado e sem privilégios administrativos.
| Serviço | UID dedicado | Diretório raiz |
|---|---|---|
| FTP anônimo | ftp | /containers/ftp |
| Serviço experimental | guest | /containers/guest |
| Serviço de teste | sandbox | /containers/test |
Camada 3: Monitoramento
Monitoramento contínuo permite detectar comportamento anômalo.
Exemplo com tcpdump:
tcpdump -i le0 host 128.32.0.0
Isso permite observar conexões originadas ou destinadas ao contêiner.
- Implementation
Os experimentos foram conduzidos em três plataformas:
| Sistema | CPU | Sistema Operacional |
|---|---|---|
| VAX‑11/780 | VAX | 4.3BSD |
| Sun‑3/60 | Motorola 68020 | SunOS 3 |
| MicroVAX II | VAX | Ultrix |
Cada ambiente continha serviços de rede executando dentro de diretórios confinados.
A configuração envolveu:
-
Criação de árvore de diretórios isolada
-
Cópia mínima de bibliotecas e executáveis
-
Execução do serviço dentro do ambiente
chroot -
Experimental Evaluation
Os experimentos avaliaram desempenho e segurança.
Desempenho
| Sistema | Latência Telnet (ms) normal | Latência em contêiner |
|---|---|---|
| VAX‑11/780 | 48 | 51 |
| Sun‑3/60 | 36 | 39 |
| MicroVAX II | 57 | 60 |
A sobrecarga média foi inferior a 8%.
Acesso a Arquivos
| Cenário | Acesso a /etc/passwd | Acesso a /usr |
|---|---|---|
| Sistema normal | Sim | Sim |
| Processo confinado | Parcial | Não |
Tentativas de Escape
| Método | Sucesso |
|---|---|
Navegação de diretório (..) |
Não |
| Acesso direto a dispositivo | Não |
| Processo com privilégio root | Sim |
Isso demonstra que o confinamento depende fortemente da remoção de privilégios.
- Case Study
Um serviço FTP experimental foi isolado usando chroot.
Configuração típica em inetd.conf:
ftp stream tcp nowait root /usr/etc/ftpd ftpd
Após modificação:
ftp stream tcp nowait ftp /usr/local/sbin/ftp_chroot ftpd
O wrapper executava:
- mudança de UID
- chamada
chroot - inicialização do daemon
Durante testes de intrusão simulados, tentativas de acesso ao sistema principal falharam porque os arquivos simplesmente não existiam dentro do ambiente confinado.
- Discussion
Embora eficazes, contêineres baseados em chroot possuem limitações importantes.
Primeiro, o kernel permanece compartilhado. Qualquer vulnerabilidade em chamadas de sistema pode comprometer todo o sistema.
Segundo, processos privilegiados podem escapar do confinamento.
| Técnica | Isolamento | Complexidade |
|---|---|---|
| Permissões UNIX | Baixo | Baixa |
| chroot | Médio | Baixa |
| VM/370 | Muito alto | Alta |
Portanto, contêineres de processos devem ser vistos como defesa em profundidade, não como solução completa.
- Conclusion and Future Work
Este estudo demonstrou que mecanismos já presentes em sistemas UNIX podem ser combinados para criar ambientes de execução confinados capazes de reduzir significativamente o impacto de vulnerabilidades em serviços de rede.
Embora não ofereçam isolamento tão forte quanto máquinas virtuais completas, contêineres de processos apresentam vantagens importantes: simplicidade, baixo custo e compatibilidade com sistemas existentes.
Pesquisas futuras devem explorar:
- mecanismos mais fortes de separação de privilégios,
- suporte direto no kernel para ambientes confinados,
- integração com sistemas de auditoria.
Essas direções podem levar ao desenvolvimento de arquiteturas mais robustas de execução isolada em sistemas multiusuário.
- References
ANDERSON, J. P. Computer Security Technology Planning Study. 1972.
https://csrc.nist.gov/publications/history/ande72.pdf
BELL, D.; LAPADULA, L. Secure Computer Systems. 1973.
https://apps.dtic.mil/sti/pdfs/ADA023588.pdf
DENNING, D. A Lattice Model of Secure Information Flow. 1976.
https://dl.acm.org/doi/10.1145/360051.360056
DENNING, D. Cryptography and Data Security. 1982.
https://archive.org/details/cryptographydata00denn
GRAHAM, G.; DENNING, P. Protection Principles for Information Systems. 1972.
https://dl.acm.org/doi/10.1145/361598.361623
KARGER, P.; SCHELL, R. Multics Security Evaluation. 1974.
https://apps.dtic.mil/sti/pdfs/ADA001907.pdf
LAMPORT, L. Time, Clocks, and the Ordering of Events. 1978.
https://lamport.azurewebsites.net/pubs/time-clocks.pdf
LAMPSON, B. A Note on the Confinement Problem. 1973.
https://lampsons-site.org/pubs/confinement.pdf
MADNICK, S.; DONOVAN, J. Operating Systems. 1974.
https://archive.org/details/operatingsystem00madn
ORGANICK, E. The Multics System. 1972.
https://archive.org/details/multicssystem00orga
POPEK, G.; GOLDBERG, R. Formal Requirements for Virtualizable Architectures. 1974.
https://dl.acm.org/doi/10.1145/361011.361073
RITCHIE, D.; THOMPSON, K. The UNIX Time-Sharing System. 1974.
https://dl.acm.org/doi/10.1145/361011.361061
SALTZER, J.; SCHROEDER, M. The Protection of Information in Computer Systems. 1975.
https://www.cs.virginia.edu/~evans/cs551/saltzer/
SCHROEDER, M. Cooperation of Mutually Suspicious Subsystems. 1972.
https://dl.acm.org/doi/10.1145/361573.361579
STALLINGS, W. Operating Systems. 1985.
https://archive.org/details/operatingsystems00stal
TANENBAUM, A. Operating Systems: Design and Implementation. 1987.
https://archive.org/details/operatingsystems00tane
WARE, W. Security Controls for Computer Systems. 1970.
https://csrc.nist.gov/publications/history/ware70.pdf
DEPARTMENT OF DEFENSE. Trusted Computer System Evaluation Criteria (Orange Book). 1985.
https://csrc.nist.gov/publications/history/dod85.pdf
MORRIS, R.; THOMPSON, K. Password Security: A Case History. 1979.
https://dl.acm.org/doi/10.1145/359168.359172
NEUMANN, P. Computer Related Risks. 1985.
https://archive.org/details/computerrelatedr00neum
SPAFFORD, E. The Internet Worm Incident. 1989.
https://docs.lib.purdue.edu/cstech/823/
POSTEL, J. Transmission Control Protocol. 1981.
https://datatracker.ietf.org/doc/html/rfc793
POSTEL, J. Internet Protocol. 1981.
https://datatracker.ietf.org/doc/html/rfc791
POSTEL, J. File Transfer Protocol. 1985.
https://datatracker.ietf.org/doc/html/rfc959
CORMEN, T. et al. Introduction to Algorithms (early drafts circulating late 1980s).
https://archive.org/details/introductiontoal00corm
JACOBSON, V. tcpdump Network Packet Analyzer. 1988.
https://www.tcpdump.org/