← Voltar aos artigos

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)

ContainersPT

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.

  1. 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:

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:

  1. Como construir ambientes de confinamento baseados em mecanismos existentes do UNIX.
  2. Quais ameaças podem ser mitigadas por esses ambientes.
  3. 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.

  1. 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:

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:

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:

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.

  1. 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:

Classes de Ameaça

As principais ameaças consideradas incluem:

  1. 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.

  2. Escalonamento de privilégios
    Um processo comprometido tenta obter privilégios de superusuário.

  3. Acesso indevido a arquivos sensíveis
    Arquivos como /etc/passwd ou diretórios de usuários podem ser alvo.

  4. 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:

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:

Um contêiner eficaz reduz significativamente $F$ e $D$, mantendo apenas o mínimo necessário.

  1. 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.

  1. 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:

  1. Criação de árvore de diretórios isolada

  2. Cópia mínima de bibliotecas e executáveis

  3. Execução do serviço dentro do ambiente chroot

  4. 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.

  1. 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:

  1. mudança de UID
  2. chamada chroot
  3. 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.

  1. 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.

  1. 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:

Essas direções podem levar ao desenvolvimento de arquiteturas mais robustas de execução isolada em sistemas multiusuário.

  1. 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/