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
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.
- 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:
- controle de acesso baseado em usuários e grupos
- separação entre processos privilegiados e não privilegiados
- mecanismos de proteção de memória do hardware
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:
- restrinja a visão do sistema de arquivos
- limite privilégios de execução
- reduza interfaces acessíveis ao núcleo
- minimize o impacto de comprometimentos
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:
- formalização de um modelo de contenção de processos em UNIX
- definição de um modelo de ameaça para serviços confinados
- implementação prática de ambientes isolados baseados em
chroot - avaliação experimental de desempenho e segurança
- estudo de caso realista envolvendo
ftpd
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).
- 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:
- spoofing de endereço IP
- confiança implícita em
.rhosts - predição de números de sequência TCP
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:
sendmailfingerd- autenticação remota
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.
- Threat Model and Problem Formalization
Consideramos um sistema UNIX conectado à Internet executando múltiplos serviços de rede.
Seja:
- $S = {s_1, s_2, …, s_n}$ conjunto de serviços
- $R$ conjunto de recursos do sistema
- $A$ conjunto de ações possíveis por um atacante
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.
- Proposed Methodology
Nossa arquitetura de container leve baseia-se em quatro mecanismos principais:
- chroot filesystem isolation
- separação de privilégios
- ambiente mínimo de execução
- 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:
- processo inicia como root
- executa
chroot() - altera UID para usuário restrito
- 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.
- Experimental Evaluation
Experimentos realizados em:
- VAX 11/780
- Sun-3/60
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 |
- 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.
- Discussion
A contenção baseada em chroot não é perfeita.
Possíveis evasões incluem:
- descritores de arquivo herdados
- chamadas privilegiadas antes do
chroot - binários
setuid
Entretanto, quando combinada com boas práticas administrativas, essa técnica reduz drasticamente o risco sistêmico.
- 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:
- overhead mínimo
- redução significativa de superfície de ataque
- mitigação de compromissos remotos
Trabalhos futuros incluem:
- isolamento de processos
- controle de IPC
- limitação de recursos de CPU e memória
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