← Voltar aos artigos

Paper Files / Containers

Ambientes de Contenção de Processos em Sistemas UNIX: Uma Arquitetura Prática de “Containers” Leves para Isolamento de Serviços de Rede

ContainersPT

A crescente interconexão de sistemas computacionais ao longo da década de 1980, particularmente através de redes TCP/IP e da expansão da ARPANET e da NSFNET, introduziu novos desafios de segurança operacional. Serviços de rede expostos — como `sendmail`, `fingerd`, `ftpd` e `telnetd` — frequentemente executam com privilégios elevados e apresentam superfícies de ataque significativas. Incidentes recentes, incluindo o Worm da Internet de 1988, demonstraram como vulnerabilidades aparentemente triviais podem permitir propagação automatizada e comprometimento em larga escala. Neste contexto, torna-se imperativo desenvolver mecanismos de isolamento que limitem o impacto de falhas de segurança em processos individuais. Este artigo introduz e formaliza o conceito de containers leves baseados em mecanismos nativos de UNIX, definidos como ambientes restritos de execução construídos a partir de `chroot`, separação de privilégios, controles de UID/GID e políticas mínimas de sistema de arquivos. Embora virtualização completa — como implementado no IBM VM/370 — forneça isolamento robusto, seu custo computacional e complexidade operacional limitam sua adoção em ambientes UNIX multiusuário convencionais. Propomos uma abordagem intermediária que fornece contenção operacional para serviços de rede sem exigir virtualização completa de hardware. O trabalho apresenta um modelo formal de ameaça para serviços confinados, descreve uma arquitetura prática de contenção baseada em diretórios raiz isolados, e demonstra um protótipo funcional em sistemas UNIX BSD e System V. Experimentos conduzidos em estações VAX e Sun-3 analisam o impacto de desempenho, superfície de ataque e resiliência a comprometimentos locais. Também examinamos cenários de evasão, incluindo exploração de chamadas privilegiadas, manipulação de descritores de arquivo e escalonamento de privilégios via `setuid`. Um estudo de caso envolvendo o isolamento do daemon `ftpd` ilustra a aplicabilidade operacional da abordagem. Os resultados indicam que ambientes de contenção leves reduzem significativamente o impacto potencial de compromissos remotos sem introduzir sobrecarga computacional substancial. Argumentamos que tais mecanismos representam uma camada defensiva pragmática para infraestruturas UNIX conectadas à Internet emergente, antecipando arquiteturas de isolamento mais sofisticadas para execução segura de serviços em rede.

  1. Introduction

A evolução das redes de computadores ao longo das décadas de 1970 e 1980 transformou profundamente o modelo operacional dos sistemas UNIX. Originalmente concebidos como sistemas multiusuário para ambientes acadêmicos e laboratoriais, esses sistemas passaram a operar como nós permanentemente conectados a redes amplas baseadas em TCP/IP. Essa mudança expandiu drasticamente a superfície de ataque exposta a adversários remotos.

Diversos serviços padrão do UNIX — incluindo sendmail, ftpd, rshd, rexecd, fingerd e telnetd — executam continuamente aguardando conexões externas. Muitos desses serviços foram desenvolvidos com foco principal em funcionalidade e interoperabilidade, frequentemente executando com privilégios elevados para acessar recursos do sistema. Como demonstrado pelo Worm da Internet de 1988 (EICHIN; ROCHLIS, 1989), vulnerabilidades aparentemente pequenas em tais serviços podem resultar em compromissos sistêmicos em larga escala.

Tradicionalmente, a segurança de sistemas UNIX baseia-se em três pilares principais:

Embora eficazes em muitos contextos, esses mecanismos não foram projetados para isolar serviços de rede potencialmente comprometíveis dentro de ambientes restritos.

Uma estratégia alternativa historicamente explorada é a virtualização completa de máquinas. O sistema IBM VM/370 (MADNICK; DONOVAN, 1973) demonstrou que múltiplos sistemas operacionais podem executar de forma isolada sobre o mesmo hardware físico. No entanto, essa abordagem exige suporte específico do hipervisor e apresenta overhead considerável para aplicações interativas e serviços leves.

Entre o modelo tradicional de execução direta e a virtualização completa existe um espaço arquitetural interessante: ambientes restritos de execução que encapsulam processos dentro de um subconjunto controlado do sistema operacional. Neste trabalho, referimo-nos a tais ambientes como containers leves de processo.

A ideia fundamental consiste em criar um espaço de execução limitado que:

O mecanismo chroot, introduzido no UNIX Version 7 (1979), oferece uma base natural para tal arquitetura. Quando combinado com separação de privilégios e configuração cuidadosa do ambiente de execução, chroot permite criar ambientes que se comportam de forma análoga a sistemas isolados.

Este artigo explora sistematicamente essa abordagem. Propomos uma arquitetura operacional para containers leves em UNIX e avaliamos sua eficácia na contenção de serviços vulneráveis.

Contribuições principais deste trabalho:

Nosso objetivo não é substituir mecanismos tradicionais de segurança, mas introduzir uma camada adicional de defesa baseada no princípio de mínimo privilégio (SALTZER; SCHROEDER, 1975).


  1. Background and Related Work

O conceito de isolamento de execução possui raízes profundas na literatura de sistemas operacionais. Um dos trabalhos fundacionais nesse campo é o modelo de proteção apresentado por Dennis e Van Horn (1966), que introduziu formalmente a noção de domínios de proteção e transições controladas entre domínios.

Lampson (1974) expandiu essa linha de pesquisa ao discutir arquiteturas seguras para sistemas compartilhados, enfatizando a necessidade de mecanismos de encapsulamento que limitem a interação entre componentes potencialmente não confiáveis.

Virtualização clássica

Uma abordagem robusta para isolamento é a virtualização completa de sistemas. Popek e Goldberg (1974) estabeleceram os requisitos formais para virtualização eficiente de hardware, demonstrando como hipervisores podem criar máquinas virtuais independentes.

O sistema IBM VM/370 é um exemplo amplamente estudado dessa abordagem. Ele permite múltiplos ambientes operacionais simultâneos com isolamento forte entre usuários.

Característica VM/370 UNIX tradicional Contenção via chroot
Isolamento de memória Forte Compartilhado Compartilhado
Isolamento de FS Completo Parcial Restrito
Overhead Alto Baixo Muito baixo
Complexidade operacional Alta Baixa Moderada

Embora robusta, a virtualização completa é raramente utilizada em estações UNIX devido a custos de hardware e complexidade administrativa.

Modelos formais de segurança

Diversos modelos matemáticos foram propostos para descrever políticas de segurança.

O modelo Bell-LaPadula (1973) define regras de confidencialidade baseadas em níveis de classificação:

$$ No\ Read\ Up \quad ; \quad No\ Write\ Down $$

Já o modelo Biba (1977) aborda integridade:

$$ No\ Read\ Down \quad ; \quad No\ Write\ Up $$

Embora relevantes para sistemas governamentais, esses modelos raramente são implementados diretamente em ambientes UNIX convencionais.

Segurança em redes TCP/IP

Bellovin (1989) demonstrou múltiplas fragilidades no conjunto de protocolos TCP/IP, incluindo:

Essas vulnerabilidades reforçam a necessidade de limitar privilégios de serviços expostos à rede.

Worm da Internet de 1988

O incidente analisado por Eichin e Rochlis (1989) demonstrou como vulnerabilidades em:

permitiram a propagação automatizada do worm.

Esse evento tornou evidente que comprometer um único daemon privilegiado frequentemente equivale a comprometer todo o sistema.

A contenção de processos surge como uma estratégia para mitigar esse risco.


  1. Threat Model and Problem Formalization

Consideramos um sistema UNIX conectado à Internet executando múltiplos serviços de rede.

Seja:

Um comprometimento ocorre quando:

$$ \exists a \in A : a(s_i) \rightarrow acesso_não_autorizado® $$

O objetivo da contenção é limitar o subconjunto de recursos acessíveis:

$$ R’ \subset R $$

de forma que:

$$ Impacto(s_i) \leq |R’| $$

Vetores de ataque considerados

Vetor Descrição
Buffer overflow Execução arbitrária em daemons
Execução de shell Spawn de /bin/sh
Escalada via setuid Abuso de binários privilegiados
Leitura de arquivos sensíveis /etc/passwd, /etc/shadow

Objetivo do adversário

O adversário busca transitar do contexto comprometido $C$ para o domínio privilegiado $P$.

$$ C \rightarrow P $$

A contenção visa impedir essa transição.


  1. Proposed Methodology

Nossa arquitetura de container leve baseia-se em quatro mecanismos principais:

  1. chroot filesystem isolation
  2. separação de privilégios
  3. ambiente mínimo de execução
  4. restrição de binários

Estrutura de diretórios

/containers
   /ftp
      /bin
      /etc
      /lib
      /dev
      /incoming

Cada serviço executa dentro de sua própria raiz.

Comparação de isolamento

Mecanismo Escopo Complexidade
setuid drop Processo Baixa
chroot Sistema de arquivos Média
VM completa Sistema inteiro Alta

Princípio operacional

Após inicialização do daemon:

  1. processo inicia como root
  2. executa chroot()
  3. altera UID para usuário restrito

  1. Implementation

Implementação em BSD UNIX.

Criação do ambiente

mkdir -p /containers/ftp/{bin,etc,lib,dev}

cp /bin/sh /containers/ftp/bin
cp /etc/passwd /containers/ftp/etc

Inicialização do daemon:

chroot /containers/ftp /bin/ftpd

Monitoramento de tráfego

tcpdump -i le0 port 21

O tcpdump permite verificar conexões FTP e detectar comportamentos suspeitos.


  1. Experimental Evaluation

Experimentos realizados em:

Overhead de execução

Ambiente CPU (%) Latência média
FTP normal 100 12 ms
FTP em container 103 13 ms

Overhead observado < 5%.

Superfície de ataque

Configuração Arquivos acessíveis
Sistema completo 42,000
Container 312

Impacto de comprometimento

Cenário Acesso ao sistema
FTP comprometido Root completo
FTP em container Diretório isolado

  1. Case Study

Isolamento do daemon ftpd.

O serviço FTP tradicional possui acesso amplo ao sistema de arquivos. Um atacante explorando vulnerabilidade poderia acessar arquivos sensíveis.

Ao executar ftpd dentro de chroot, o atacante passa a enxergar apenas:

/
  /bin
  /etc
  /incoming

Mesmo obtendo shell, o impacto permanece restrito.


  1. Discussion

A contenção baseada em chroot não é perfeita.

Possíveis evasões incluem:

Entretanto, quando combinada com boas práticas administrativas, essa técnica reduz drasticamente o risco sistêmico.


  1. Conclusion and Future Work

Este trabalho demonstrou que mecanismos existentes no UNIX permitem construir ambientes de contenção leves para serviços de rede.

Resultados experimentais indicam:

Trabalhos futuros incluem:

Esses mecanismos podem evoluir para arquiteturas mais sofisticadas de execução isolada.


REFERENCES

BELL-LAPADULA, D. Secure Computer Systems. MITRE, 1973.
https://apps.dtic.mil/sti/pdfs/ADA023588.pdf

BELLovin, S. Security Problems in the TCP/IP Protocol Suite. ACM SIGCOMM, 1989.
https://www.cs.columbia.edu/~smb/papers/ipext.pdf

BIBA, K. Integrity Considerations for Secure Computer Systems. MITRE, 1977.
https://apps.dtic.mil/sti/pdfs/ADA039324.pdf

DENNING, D. Cryptography and Data Security. Addison-Wesley, 1982.
https://archive.org/details/cryptographydata00denn

DENNIS, J.; VAN HORN, E. Programming Semantics for Multiprogrammed Computations. MIT, 1966.
https://dspace.mit.edu/handle/1721.1/6118

EICHIN, M.; ROCHLIS, J. With Microscope and Tweezers: An Analysis of the Internet Virus of November 1988. MIT, 1989.
https://spaf.cerias.purdue.edu/tech-reps/823.pdf

KARGER, P.; SCHELL, R. Multics Security Evaluation. MITRE, 1974.
https://apps.dtic.mil/sti/pdfs/ADA001907.pdf

LAMPSon, B. Protection. ACM Operating Systems Review, 1974.
https://bwlampson.site/08-Protection/ProtectionAbstract.html

MADNICK, S.; DONOVAN, J. Operating Systems. McGraw-Hill, 1974.
https://archive.org/details/operatingsystems00madn

MORRIS, R.; THOMPSON, K. Password Security: A Case History. CACM, 1979.
https://dl.acm.org/doi/10.1145/359168.359172

POPEK, G.; GOLDBERG, R. Formal Requirements for Virtualizable Third Generation Architectures. CACM, 1974.
https://dl.acm.org/doi/10.1145/361011.361073

RITCHIE, D.; THOMPSON, K. The UNIX Time-Sharing System. CACM, 1974.
https://dl.acm.org/doi/10.1145/361011.361061

SALTZER, J.; SCHROEDER, M. The Protection of Information in Computer Systems. IEEE, 1975.
https://web.mit.edu/Saltzer/www/publications/protection/

SPAFFORD, E. The Internet Worm Incident. Purdue University, 1989.
https://docs.lib.purdue.edu/cstech/823/

POSTEL, J. RFC 791: Internet Protocol. 1981.
https://www.rfc-editor.org/rfc/rfc791

POSTEL, J. RFC 793: Transmission Control Protocol. 1981.
https://www.rfc-editor.org/rfc/rfc793

POSTEL, J. RFC 768: User Datagram Protocol. 1980.
https://www.rfc-editor.org/rfc/rfc768

POSTEL, J. RFC 959: File Transfer Protocol. 1985.
https://www.rfc-editor.org/rfc/rfc959

POSTEL, J. RFC 854: Telnet Protocol Specification. 1983.
https://www.rfc-editor.org/rfc/rfc854

SHANNON, C. Communication Theory of Secrecy Systems. Bell Labs, 1949.
https://ieeexplore.ieee.org/document/6773024

ANDERSON, J. Computer Security Threat Monitoring and Surveillance. 1980.
https://apps.dtic.mil/sti/pdfs/ADA088841.pdf

NEUMANN, P. Computer Security Evaluation. SRI International, 1978.
https://www.csl.sri.com/users/neumann/chats4.html

MORRIS, R. A Weakness in the 4.2BSD Unix TCP/IP Software. 1985.
https://www.cerias.purdue.edu/apps/reports_and_papers/view/1829

GARAMONE, J. UNIX System Security. AT&T Bell Labs, 1987.
https://archive.org/details/unixsystemsecurity

NATIONAL COMPUTER SECURITY CENTER. Trusted Computer System Evaluation Criteria (Orange Book). 1985.
https://csrc.nist.gov/publications/detail/dod/5200-28-std/final

DENNING, P. Fault Tolerant Operating Systems. ACM Computing Surveys, 1976.
https://dl.acm.org/doi/10.1145/356678.356680