Paper Files / Containers
Contêineres de Segurança em 1986: Isolamento por chroot, VMs de Mainframe e Compartimentação segundo o TCSEC
TheDesignOfTheUnixOperatingSystem BELL, D. E.; LAPADULA, L. J. Secure Computer Systems: Mathematical Foundations. MITRE Technical Report MTR-2547, 1973. Disponível em: https://csrc.nist.gov/publications/detail/miscellaneous/1973/secure-computer-systems-mathematical-foundations/final BIBA, K. J. Integrity Considerations for Secure Computer Systems. MTR-3153, MITRE, 1977. Disponível em: https://csrc.nist.gov/publications/detail/miscellaneous/1977/integrity-considerations-for-secure-computer-systems/final SHOCH, J. F.; HUPP, J. A. The "Worm" Programs—Early Experience with a Distributed Computa
- Introduction
A pressão por isolamento confiável em sistemas multiusuário vem crescendo com a popularização de UNIX em VAX, Sun e outros workstations, bem como com o uso estabelecido de máquinas virtuais em mainframes IBM. Em 1986, organizações acadêmicas, governamentais e industriais conectadas à ARPANET e a redes locais baseadas em Ethernet utilizam intensamente serviços remotos, como rlogin, rsh, rexec, FTP e SMTP via sendmail, o que amplia a superfície de ataque e expõe administradores e operadores a riscos de abuso de privilégios, adulteração de dados e indisponibilidade (ALLMAN, 1983; RITCHIE; THOMPSON, 1974; RFC 791, 1981; RFC 793, 1981). A ausência de fronteiras rígidas entre contas e serviços em UNIX de uso geral, combinada com o acúmulo de binários setuid e práticas permissivas, fomenta cenários de comprometimento. Já em mainframes, a consolidação de controles como RACF provê um arcabouço robusto de autenticação e autorização, porém com custos de administração e de recursos (IBM, 1976).
Este artigo formaliza e explora o conceito operacional de “contêiner” em 1986 como a confluência de três mecanismos históricos: (i) chroot(8), introduzindo um diretório-raiz alternativo para processos UNIX, criando um espaço de arquivos aparente restrito; (ii) máquinas virtuais em CP-67/VM/370, as quais proporcionam particionamento forte de hardware e software; e (iii) compartimentação mandatória guiada pelo TCSEC (DoD 5200.28-STD, “Orange Book”), que, embora tipicamente discutida para sistemas de classe B e A (como SCOMP e Multics), também oferece princípios úteis para compartimentação operacional (DOD, 1983; HONEYWELL, 1985; LAMSPON, 1973; SALTZER; SCHROEDER, 1975). A ideia de contêiner aqui não depende de inovações inexistentes; ao contrário, é uma síntese prática de técnicas reais e disponíveis em 1986 para reduzir o acoplamento e a confiança implícita entre componentes de um sistema.
A motivação central é equilibrar segurança e desempenho. Enquanto virtualização de mainframe tende a oferecer forte isolamento por meio de hipervisores e monitor de referência bem auditados (POPEK; GOLDBERG, 1974; IBM, 1972), o custo de tal abordagem pode ser proibitivo para cada serviço de rede ou para cada conjunto de usuários. Já o chroot, quando corretamente orquestrado com permissões, setuid setgid comedidos, shells restritos e supervisão via syslogd, fornece redução significativa da superfície de ataque a um custo operacional baixo em plataformas UNIX amplamente difundidas (4.3BSD, SunOS 3.x) (LEFFLER et al., 1984; 4.3BSD, 1986).
Este trabalho contribui com: (1) um modelo de ameaça alinhado ao período, destacando vetores plausíveis e documentados; (2) uma metodologia reprodutível de construção e operação de contêineres com chroot e com VMs de mainframe, incluindo procedimentos de hardening e auditoria; (3) uma avaliação experimental com medidas de overhead e efetividade em cenários realistas; e (4) um estudo de caso em ambiente universitário, típico de 1986, com serviços multiusuário intensivos. Nossa análise ancora-se em princípios perenes – como menor privilégio, separação de privilégios e economia de mecanismos – e em padrões do Orange Book, oferecendo um roteiro prático para administradores que buscam aumentar segurança sem inviabilizar a operação (SALTZER; SCHROEDER, 1975; DOD, 1983).
- Background and Related Work
Os fundamentos de segurança de sistemas computacionais foram articulados desde a década de 1970, com ênfase nos conceitos de monitor de referência, menor privilégio e isolamento (ANDERSON, 1972; LAMPSON, 1971; SALTZER; SCHROEDER, 1975). O estudo seminal de Lampson sobre proteção e confinamento enuncia requisitos para evitar que processos exfiltrem informação por canais não autorizados (LAMPSON, 1973). Essas ideias foram implementadas em diversas arquiteturas e sistemas operacionais de pesquisa e produção, incluindo Multics, sistemas baseados em capacidades (Hydra, CAP), e hipervisores de mainframe (MULTICS, 1970s; WULF et al., 1974; NEEDHAM; HERBERT, 1980).
A formalização da virtualização por Popek e Goldberg estabeleceu critérios para um VMM eficiente e seguro, e norteou projetos como CP-67 e VM/370 (POPEK; GOLDBERG, 1974; IBM, 1972). No ambiente IBM, mecanismos como RACF (1976), e equivalentes como ACF2 e TopSecret, passaram a oferecer controles granulares de acesso, auditoria e separação entre domínios de usuário e de aplicação (IBM, 1976). Essa linha de defesa, ao nível do hipervisor e de monitoria centralizada, delineia “contêineres” de carga de trabalho fortemente isolados, adequados para cenários de alta criticidade ou de multi-tenancy pesado.
Em UNIX, a evolução de proteção transitou de permissões tradicionais (rwx, uid/gid) e binários setuid para noções de confinamento mais estritas, como o chroot(8), presente em BSD desde o início dos anos 1980 (4.2BSD/4.3BSD). O chroot redefine a raiz de um processo, restringindo sua visão de sistema de arquivos ao subárvore especificada. Embora não substitua um sistema de rotulagem mandatória como em Multics, é ferramenta valiosa para compartimentação operacional (4.3BSD, 1986; LEFFLER et al., 1984). O sendmail, por exemplo, foi historicamente apontado como alvo proeminente devido à sua complexidade e exposição na rede, motivando práticas de isolamento e de redução de privilégios (ALLMAN, 1983).
Em termos normativos, o “Orange Book” (DoD 5200.28-STD) consolidou classes de sistemas confiáveis (C1, C2, B1, B2, B3, A1) e seus requisitos, incluindo controles de acesso, auditoria e modelagem formal (DOD, 1983). SCOMP, um sistema A1, representa a materialização máxima desse ideal, com kernel de segurança verificado, enquanto VAX VMM Security Kernel esboça abordagens similares em plataformas VAX (HONEYWELL, 1985; KARGER; SAFFORD, 1984). Ainda que a maioria das instalações acadêmicas e corporativas de 1986 esteja distante de um sistema A1, os princípios do Orange Book permeiam boas práticas e inspiram arquiteturas de “contêiner” adaptadas à realidade operacional.
Na literatura de segurança aplicada, destaca-se a análise de senhas e de confiabilidade de mecanismos de autenticação (MORRIS; THOMPSON, 1979), o impacto de vírus e autorreplicação nas noções de confinamento (COHEN, 1984), e a reflexão sobre confiança nos compiladores e toolchains (THOMPSON, 1984). Esses trabalhos reforçam a importância de reduzir TCBs (Trusted Computing Base) e delimitar fronteiras: contêineres, no sentido adotado aqui, são instâncias práticas desse objetivo, mesmo sem o formalismo e o rigor de um kernel verificado.
Numa perspectiva de redes, a padronização de IP e TCP (RFC 791 e 793, ambos de 1981) e a difusão de sockets Berkeley no 4.2BSD (1983) trouxeram um ambiente fértil à execução de serviços distribuídos, ao custo de novas superfícies de ataque (RFC 791, 1981; RFC 793, 1981; LEFFLER et al., 1984). Com a ausência generalizada de criptografia ponta a ponta e a dependência de confiança entre hosts, torna-se crítico isolar processos de serviço, registrar eventos com syslogd e minimizar privilégios. O presente trabalho enraíza-se nesse mosaico histórico para definir e validar contêineres como disciplina operacional em 1986.
- Threat Model and Problem Formalization
Adotamos um modelo de ameaça alinhado ao ambiente de 1986, considerando adversários internos (usuários locais e operadores maliciosos) e externos (agentes remotos via ARPANET ou redes locais). O atacante dispõe de:
- Acesso remoto a serviços como rlogin, rsh, rexec, FTP e SMTP.
- Conhecimento de vulnerabilidades usuais em configurações UNIX, incluindo binários setuid expostos, diretórios com permissões amplas e serviços superusuário mal configurados.
- Capacidade de exploração de confiança transitiva (hosts.equiv, .rhosts), e abuso de scripts e filtros em MTA (sendmail).
- Potencial de acesso físico limitado (troca de mídia, consoles), dependendo do contexto organizacional.
O objetivo do atacante é escalar privilégios, movimentar-se lateralmente e exfiltrar dados. Em termos de superfície de ataque específica a contêineres:
-
Em chroot(8):
- Root pode invocar chroot novamente, potencialmente revertendo confinamento se combinado com erro operacional (4.3BSD, 1986).
- Dispositivos no /dev do chroot, se mal configurados (p.ex., discos brutos), permitem escapar das fronteiras lógicas.
- Diretores de trabalho ou descritores abertos fora do chroot podem ser usados para evasão quando permissões e sequência de chamadas não forem estritamente controladas.
- Binários setuid dentro do chroot podem fornecer canais de escalada.
-
Em VMs (VM/370):
- Escapes de VMs são raros sob o modelo de Popek–Goldberg, mas configurações administrativas inadequadas (RACF fraco, autorizações amplas) reduzem isolamento efetivo (IBM, 1976; POPEK; GOLDBERG, 1974).
Formalizamos o risco organizacional como: $$ R = \sum_{i=1}^{n} p_i \cdot I_i $$ onde $p_i$ é a probabilidade estimada de exploração do vetor $i$ e $I_i$ é o impacto correspondente (ponderado por confidencialidade, integridade e disponibilidade). Para contêineres, definimos:
-
Métrica de isolamento efetivo: $$ \mathcal{I} = 1 - \frac{|E_c \cap E_s|}{|E_s|} $$ onde $E_s$ é o conjunto de efeitos adversos alcançáveis no sistema anfitrião sem contêiner, e $E_c$ é o conjunto sob contêiner. Quanto mais próximo de 1, melhor o isolamento.
-
Custo operacional: $$ \mathcal{C} = \alpha \cdot O_{CPU} + \beta \cdot O_{IO} + \gamma \cdot O_{ADM} $$ com $O_{CPU}$ e $O_{IO}$ como overheads mensurados e $O_{ADM}$ como custo de administração, e $\alpha,\beta,\gamma$ pesos estabelecidos pela política local.
Problema: projetar um contêiner (via chroot ou VM) que maximize $\mathcal{I}$ e minimize $\mathcal{C}$ sob restrições de compatibilidade com serviços existentes (p.ex., sendmail, ftpd), e em conformidade com princípios do Orange Book (DOD, 1983). A segurança desejada abrange:
- Separação de contas e dados por serviço/usuário.
- Redução e controle estritos de binários setuid.
- Journalização adequada por syslogd e trilhas de auditoria no RACF.
- Minimização do TCB dentro do contêiner.
Assumimos sistemas 4.3BSD e SunOS 3.x para ambientes UNIX e VM/370 com RACF para mainframe. Não assumimos presença de criptografia no transporte ou IDS especializados, em consonância com o cenário tecnológico vigente.
- Proposed Methodology
Nossa metodologia integra práticas em UNIX e mainframe, estruturadas em fases:
- Planejamento e particionamento de serviços:
- Enumerar serviços expostos (rlogind, rshd, ftpd, fingerd, sendmail).
- Associar cada serviço a um contêiner chroot com UID/GID dedicados e um shell restrito ou daemon mínimo.
- Para cargas críticas ou multiusuário denso, mapear para VMs distintas em VM/370 com perfis RACF próprios.
- Definir políticas de logging por serviço via syslog(3), com arquivos segregados por contêiner.
- Construção de raízes mínimas (UNIX chroot):
- Criar diretório-raiz do contêiner (p.ex., /containers/ftp).
- Popular com binários estritamente necessários (cp estático quando possível), bibliotecas correspondentes, /etc mínimo (passwd, group restritos), e /dev contendo apenas dispositivos essenciais (null, zero, tty, console se indispensável).
- Criar usuários/grupos sem shell completo e sem senha de login, quando possível (apenas para execução do daemon).
- Desativar e remover binários setuid desnecessários; manter somente o estritamente requerido pelo serviço (idealmente nenhum).
- Endurecimento de permissões e capabilities operacionais:
- Aplicar permissões conservadoras no diretório raiz e subdiretórios (evitar escrita em diretórios com exec).
- Configurar um wrapper setuid pequeno (se, e somente se, necessário) para troca controlada de UID ao iniciar o daemon, seguido de chroot e setuid efetivo para o usuário não privilegiado, com close de descritores herdados e chdir seguro.
- Em System V (ou shells compatíveis), empregar shell restrito (rsh “restricted shell”) para contas que exigem interação limitada.
- Integração de auditoria:
- Usar syslogd com facility/priority apropriadas; armazenar logs do contêiner em partições ou diretórios distintos e com rotação periódica.
- Em mainframe, habilitar auditoria obrigatória no RACF para eventos críticos (logon, acesso a datasets sensíveis, operações especiais).
- Segmentação por VM (mainframe):
- Criar contas de VM separadas por domínio funcional (desenvolvimento, produção, acadêmico) com perfis RACF mínimos.
- Empregar dispositivos virtuais dedicados e delimitar canais de comunicação entre VMs (p.ex., minidisks, links virtuais) conforme necessidade operacional.
- Verificação e teste:
- Medir baseline de desempenho fora do contêiner e comparar com medições internas.
- Executar testes de penetração condizentes com 1986: verificação de setuid, tentativas de travessia de diretórios, manipulação de TTY e testes de acesso a /dev.
- Validar trilhas de auditoria e a capacidade de responder a incidentes (correlação manual de syslogs e relatórios RACF).
A filosofia norteadora permanece a dos princípios clássicos (SALTZER; SCHROEDER, 1975): reduzir TCB, aplicar menor privilégio e projetar caminhos de controle e auditoria claros. Em particular, o contêiner chroot não é por si só uma barreira absoluta a root; portanto, a metodologia inclui prescrever que o processo entre no chroot com privilégios mínimos, caindo para UID não privilegiado antes de aceitar qualquer entrada de rede, e evitando manter descritores ou diretórios abertos fora do contêiner.
- Implementation
Implementamos a metodologia em dois ambientes: (A) 4.3BSD em VAX-11/780 e SunOS 3.x em Sun-3/160, isolando ftpd e fingerd; e (B) VM/370 com RACF, segregando cargas acadêmicas e administrativas.
A. UNIX chroot
- Criação de raiz mínima:
- Diretório raiz: /containers/ftp
- Subdiretórios: bin, etc, dev, usr/bin, var/log, tmp
- /etc mínimo com passwd e group contendo apenas o usuário “ftp” (sem senha), e group com GID específico.
- /dev com null e tty criados via MAKEDEV.
- População de binários:
- Copiar /bin/sh (se necessário), /bin/ls, /usr/bin/ftp daemons e dependências de bibliotecas (em sistemas estáticos, preferível compilar estático).
- Ajustar permissões: remover bits setuid desnecessários, setar umask estrita.
- Sequência de inicialização do serviço:
- Um wrapper root inicia, executa chdir para a nova raiz, chroot para /containers/ftp, fecha descritores herdados, e faz setuid/setgid para “ftp” antes de aceitar conexões.
Exemplo reprodutível de preparação de um contêiner chroot no 4.3BSD:
Preparação do contêiner FTP
mkdir -p /containers/ftp/{bin,dev,etc,usr/bin,var/log,tmp}
chmod 0755 /containers/ftp
chown root:wheel /containers/ftp
Dispositivos padrões
( cd /containers/ftp/dev && sh /dev/MAKEDEV std tty console )
Usuário e grupo mínimos (editar manualmente)
echo 'ftp::2001:2001:FTP Daemon:/nonexistent:/bin/false' >> /etc/passwd
echo 'ftp::2001:' >> /etc/group
cp /etc/passwd /containers/ftp/etc/passwd
cp /etc/group /containers/ftp/etc/group
Binários estritamente necessários (ex.: ls para debug local, remover depois)
cp /bin/ls /containers/ftp/bin/ls
cp /bin/sh /containers/ftp/bin/sh
chmod 0555 /containers/ftp/bin/ls /containers/ftp/bin/sh
Logs dedicados
touch /containers/ftp/var/log/ftp.log
chmod 0640 /containers/ftp/var/log/ftp.log
chown root:wheel /containers/ftp/var/log/ftp.log
Iniciar daemon em chroot com usuário "ftp"
Exemplo: wrapper de inicialização via /etc/rc.local
chroot /containers/ftp /bin/sh -c 'exec su -s /bin/sh - ftp -c "/usr/libexec/ftpd -l"'
Configuração de syslog(3)/syslogd(8) para logs do contêiner:
/etc/syslog.conf
auth.notice /var/log/authlog
daemon.info /var/log/daemon.log
local0. /containers/ftp/var/log/ftp.log
.err /dev/console
B. VM/370 com RACF
No ambiente IBM, definimos contêineres como VMs independentes, cada qual com minidisks próprios e perfis RACF mínimos. Atribuímos usuários e grupos conforme domínios, e habilitamos auditoria para operações sensíveis.
Exemplo de comandos TSO/RACF:
/ Definição de usuário de serviço /
ADDUSER USERFTP DFLTGRP(FTPG) OWNER(SECADM) PASSWORD(X7Y9Z1) REVOKE
ADDGROUP FTPG SUPGROUP(SYS1)
/ Dataset profile mínimo e permissão /
ADDSD 'SYS.FTP.DATA' UACC(NONE) OWNER(SECADM)
PERMIT 'SYS.FTP.DATA' ID(USERFTP) ACCESS(READ)
/ Auditoria obrigatória de eventos críticos /
SETROPTS AUDIT(DATASET(ALL(READ,UPDATE,ALTER)) SUCCESS(ALL) FAILURES(ALL))
Este arranjo assegura separação dura entre ambientes, com trilhas de auditoria consolidadas pelo RACF. A comunicação entre VMs é explicitamente autorizada por minidisks ou canais virtuais específicos, conforme necessidade funcional.
- Experimental Evaluation
Avaliamos a eficácia e o custo dos contêineres em três dimensões: desempenho (CPU, I/O), isolamento efetivo (redução de efeitos adversos), e administrabilidade (operações de rotina).
Ambiente de teste:
- VAX-11/780 rodando 4.3BSD (1986), 8MB RAM.
- Sun-3/160 (MC68020 @ 16 MHz) rodando SunOS 3.x.
- Mainframe IBM com VM/370 e RACF ativo.
- Cargas: serviços ftpd e fingerd em UNIX; processamento batch simples em VM/370.
Procedimentos:
- Medir tempo de execução de operações de I/O sequencial (dd), listagem de diretórios e criação de processos (fork/exec) dentro e fora do chroot.
- Contar binários setuid expostos por contêiner versus sistema anfitrião.
- Induzir falhas típicas (arquivos de configuração ausentes, diretórios com permissões brandas) e observar a contenção do dano.
Resultados de desempenho (médias de 10 execuções):
| Plataforma | Operação | Fora de contêiner | Em chroot (UNIX) | VM/370 (equiv.) |
|---|---|---|---|---|
| VAX-11/780 | dd if=/dev/zero of=/tmp/x bs=8k count=1024 | 1.00x (baseline) | 1.02x | 1.10x |
| VAX-11/780 | fork/exec 1000 vezes | 1.00x | 1.03x | 1.08x |
| Sun-3/160 | ls -lR em /usr (50k entradas) | 1.00x | 1.01x | 1.07x |
Observamos overhead marginal para chroot (1–4%), dominado por verificações adicionais de caminho e por layouts de diretório mais profundos. Em VM/370, o overhead adicional se explica pelo custo intrínseco de virtualização e de I/O virtual, embora permaneça aceitável para consolidação de cargas.
Redução de superfície (exemplo no VAX-11/780):
- Sistema anfitrião: 38 binários setuid detectados.
- Contêiner FTP: 0 binários setuid após hardening.
- Contêiner finger: 1 binário setuid necessário (caso legado), monitorado via syslog.
| Métrica | Anfitrião | Contêiner FTP | Contêiner finger |
|---|---|---|---|
| Binários setuid | 38 | 0 | 1 |
| Dispositivos em /dev | 82 | 4 | 5 |
| Arquivos graváveis por “outro” | 120 | 3 | 4 |
Isolamento efetivo (estimado pela métrica $\mathcal{I}$) sob três cenários de falha:
| Cenário de falha | Efeitos fora (|E_s|) | Efeitos no contêiner (|E_c ∩ E_s|) | Isolamento $\mathcal{I}$ | |—|—:|—:|—:| | ftpd lê arquivo sensível do sistema | 5 | 1 | 0.80 | | Configuração incorreta de permissões em /tmp | 7 | 2 | 0.71 | | Bibliotecas ausentes causando queda do serviço | 3 | 1 | 0.67 |
Esses resultados indicam ganhos sólidos em contenção de dano, especialmente quando o contêiner elimina binários setuid e restringe /dev ao mínimo. Em VM/370, os cenários equivalentes resultaram em isolamentos próximos a 1, refletindo a barreira dura entre VMs.
Administrabilidade:
- Em UNIX, a criação e manutenção de contêineres exige disciplina na atualização de binários e bibliotecas dentro da raiz alternativa, porém o uso de tar/rdist pode automatizar parte do fluxo.
- Em VM/370, a administração RACF e de minidisks requer pessoal treinado, porém oferece visibilidade e controle centralizados.
Limitações observadas:
- chroot não impede root de reconfigurar o ambiente; o processo deve abandonar privilégios antes de aceitar entrada.
- Dispositivos excessivos em /dev (p.ex., discos brutos) são riscos críticos; sua exclusão é mandatória.
- Caminhos de log mal projetados podem vazar informações se apontarem para fora do chroot.
- Case Study
Implementamos a abordagem em um campus universitário com aproximadamente 1.500 contas estudantis e 80 contas de pessoal técnico, conectados à ARPANET e a uma LAN Ethernet. Os desafios incluíam: (i) serviços finger e FTP frequentemente alvos de abuso; (ii) scripts e filtros de mail executando em contexto privilegiado; (iii) convivência de cargas departamentais heterogêneas no mainframe e em servidores UNIX.
A arquitetura proposta:
- Servidor UNIX A (VAX-11/780): contêineres chroot para ftpd, fingerd e um ambiente de compilação de estudantes (shell restrito “rsh” System V para turmas introdutórias), com logs segregados via syslogd.
- Servidor UNIX B (Sun-3/160): contêiner chroot para MTA (sendmail) com redução agressiva de privilégios; filas e spools localizados na raiz do contêiner.
- Mainframe: VMs distintas para “Acadêmico” e “Administrativo”, com perfis RACF que impedem acesso cruzado a datasets; auditoria obrigatória de logon e de acesso a dados sensíveis.
Resultados após 90 dias:
- Redução de 60% em incidentes de alteração não autorizada em diretórios compartilhados (medido por tickets internos e logs).
- Queda de 75% em falhas de serviço atribuíveis a dependências ausentes, graças a raízes mínimas controladas e processos de atualização padronizados (rdist de imagens do contêiner).
- Diminuição de 40% no tempo médio de resposta a incidentes, viabilizada por logs por serviço e por trilhas RACF claras.
Desafios:
- Resistência inicial de usuários avançados às restrições de shell em turmas introdutórias; mitigamos com documentação e exceções justificadas.
- Esforço adicional de empacotamento de bibliotecas em alguns daemons; solucionado com inventário estático e testes automatizados simples (scripts sh).
- Necessidade de políticas formais de rotação e retenção de logs, alinhadas às recomendações do Orange Book para auditoria.
Este estudo ilustra que, mesmo sem kernels verificados ou mecanismos mandatórios formais, a disciplina de contêineres em 1986 oferece benefícios tangíveis de segurança e operação, sobretudo quando aliada a práticas rigorosas de administração e auditoria.
- Discussion
A síntese de chroot em UNIX e VMs de mainframe como formas complementares de contêinerização é coerente com os princípios de proteção clássicos e com as restrições tecnológicas de 1986. Em UNIX, o chroot fornece separação de espaço de arquivos e facilita um TCB reduzido para cada serviço, o que está em linha com a “economia de mecanismos” (SALTZER; SCHROEDER, 1975). Quando combinado com a remoção de binários setuid, com a criação seletiva de /dev e com a queda de privilégios precoce, o contêiner resiste a uma classe relevante de ataques práticos (abuso de permissões, exploração de serviços de rede). No entanto, a falta de isolamento do kernel e a habilidade intrínseca de root para redefinir o ambiente tornam essas medidas insuficientes caso o processo mantenha privilégios ou possa reobtê-los.
Nas plataformas IBM, VMs oferecem barreira forte, alinhada às condições de virtualização de Popek–Goldberg (POPEK; GOLDBERG, 1974), e a disciplina do RACF materializa o monitor de referência para controle de acesso (IBM, 1976). O custo operacional maior é justificado para domínios de alta criticidade, enquanto UNIX chroot atende à necessidade de isolamento leve e flexível em servidores de rede.
Do ponto de vista de modelos formais, podemos mapear contêineres a domínios de segurança conforme Bell–LaPadula (BELL; LAPADULA, 1973) e Biba (BIBA, 1977), desde que os fluxos intercontêineres sejam rigidamente mediado por processos com rótulos apropriados (ainda que de modo informal, em 1986). A ausência de rotulagem nativa em UNIX comum limita a aplicação estrita desses modelos, mas a prática de pipelines controlados e de MTA confinados reduz significativamente os canais não autorizados.
Uma consideração notável é a ameaça de vírus e cargas autorreplicantes (COHEN, 1984), que, embora ainda pouco prevalentes em ambientes UNIX em comparação a micros, reforçam a vantagem de TCBs reduzidos: um vírus que comprometa um serviço isolado terá movimento lateral dificultado. A reflexão de Thompson (1984) sobre confiança em compiladores alerta para a necessidade de construir contêineres a partir de toolchains confiáveis – idealmente, provenientes de fontes verificadas e auditadas.
Limitações e riscos residuais:
- chroot não “sela” a visão de processos: sem controle de descritores herdados e sem abandono precoce de privilégios, escapes são factíveis. A recomendação é tornar o contêiner server-owned por UID não privilegiado antes do accept() de sockets.
- Dispositivos de bloco e caracteres devem ser tratados como itens de alto risco; o MAKEDEV deve criar apenas o estritamente necessário (null, tty, console sob condições).
- A sincronização de atualizações entre contêineres exige disciplina de distribuição; ferramentas como rdist auxiliam, mas demandam governança.
Apesar dessas limitações, os ganhos operacionais são significativos, como mostram os resultados. Em especial, a redução de setuid e a segregação de logs por serviço oferecem visibilidade e controle que, no cenário de 1986, são determinantes para uma resposta a incidentes eficaz.
- Conclusion and Future Work
Este trabalho definiu e validou, no contexto histórico de 1986, o uso de “contêineres” como disciplina prática de segurança: chroot em UNIX para isolamento leve e VMs em mainframe para isolamento forte, ambos orientados por princípios do Orange Book e pela literatura clássica de proteção. Nossas implementações demonstraram overhead marginal em UNIX e isolamento substancial, com melhorias claras na redução de superfície de ataque e no tempo de resposta a incidentes. O estudo de caso universitário reforça a aplicabilidade em ambientes multiusuário e com serviços de rede intensivos.
Direções futuras, compatíveis com o estado da arte vigente:
- Inicialização mais segura de contêineres UNIX: wrappers mínimos em C que garantam fechamento de descritores, chdir e chroot na ordem correta, e queda de privilégios antes de qualquer operação de rede.
- Ampliação de auditoria e correlação: padronização de facilities syslog por serviço e scripts para sumarização periódica, combinados com revisões manuais regulares.
- Mapeamento mais formal de fluxos entre contêineres segundo Bell–LaPadula e Biba, ainda que sem suporte de rótulos no kernel, usando proxy-processes explicitamente mediadores.
- Estudos de desempenho mais extensos em hardware adicional (p.ex., VAX-11/750, Sun-3/50), e avaliação de cargas de compilação e I/O em lote.
A combinação de isolamento por chroot e por VMs, sustentada por administração rigorosa e por princípios clássicos, oferece um caminho pragmático para elevar o nível de segurança operacional em 1986, sem exigir tecnologias inexistentes ou dispendiosas além da realidade da época.
Figure 1: Árvore de Ameaças para Comprometimento de Compartimentos de Segurança
graph TD
A[Comprometimento do Sistema] --> B[Explorar Serviço de Rede]
A --> C[Escalada de Privilégio Local]
A --> D[Quebra de Isolamento]
B --> B1[Overflow de Buffer em Daemon]
B --> B2[Credenciais Fracas]
B --> B3[Exploração de Worm]
C --> C1[Bug em Setuid]
C --> C2[Manipulação de Arquivos de Configuração]
C --> C3[Injeção de Comandos em Scripts]
D --> D1[Fuga de chroot]
D --> D2[Falha em VM de Mainframe]
D --> D3[Erro de Compartimentação TCSEC]
B1 --> E[Acesso Não Autorizado]
C1 --> E
D1 --> E
Figure 2: Arquitetura de Isolamento com chroot, VM de Mainframe e Compartimentos TCSEC
flowchart LR
U[Usuários Externos] --> R[Roteador com Filtragem de Pacotes]
R --> H[Host UNIX]
subgraph Host UNIX
A1[Serviço de Rede]
A2[Serviço FTP]
A3[Serviço Correio]
end
A1 --> C1[Ambiente chroot]
A2 --> C2[Ambiente chroot]
H --> M[Mainframe IBM com VM/370]
subgraph VM/370
V1[Máquina Virtual A]
V2[Máquina Virtual B]
V3[Máquina Virtual C]
end
M --> T[Controle de Acesso TCSEC]
T --> S1[Compartimento Confidencial]
T --> S2[Compartimento Secreto]
T --> S3[Compartimento Público]
Figure 3: Sequência de Ataque por Overflow e Contenção por Isolamento
sequenceDiagram
participant A as Atacante
participant N as Rede
participant D as Daemon de Rede
participant C as Ambiente chroot
participant K as Kernel UNIX
participant L as Logs de Auditoria
A->>N: Envia pacote malformado
N->>D: Entrega requisição
D->>D: Overflow de buffer
D->>C: Execução dentro do chroot
C->>K: Solicita acesso ao sistema
K-->>C: Acesso restrito ao diretório isolado
K->>L: Registro de evento suspeito
L-->>K: Armazenamento para análise forense
Figure 4: Evolução de Técnicas de Isolamento e Controle de Acesso
gantt
title Evolução de Mecanismos de Isolamento até 1986
dateFormat YYYY
section Sistemas de Virtualização
CP-67 e VM inicial :1967, 1972
VM/370 em produção :1972, 1986
section Sistemas Operacionais
MULTICS Compartimentação :1969, 1980
UNIX chroot introduzido :1979, 1986
section Padrões de Segurança
Modelo Bell-LaPadula :1973, 1986
Publicação TCSEC (Orange Book):1985, 1986
section Monitoramento
Sistemas de Auditoria UNIX :1980, 1986
Protótipos de IDS (Haystack) :1986, 1986
Figure 5: Distribuição de Mecanismos de Isolamento em Ambientes Avaliados
pie
title Distribuição de Técnicas de Isolamento (Laboratórios e Instituições)
"VM de Mainframe (VM/370)" : 45
"chroot em UNIX" : 25
"Compartimentação TCSEC" : 20
"Controle de Acesso Discricionário" : 10
Table 1: Comparação de Mecanismos de Isolamento
| Mecanismo | Nível de Isolamento | Overhead de CPU (%) | Complexidade de Administração (1–5) | Ano de Introdução |
|---|---|---|---|---|
| chroot (UNIX) | Médio | 2 | 2 | 1979 |
| VM/370 (Mainframe) | Alto | 12 | 4 | 1972 |
| Compartimentação TCSEC | Alto | 6 | 5 | 1985 |
| Controle de Acesso Discricionário | Baixo | 1 | 2 | 1970 |
Table 2: Resultados de Experimentos de Contenção de Ataques
| Cenário de Ataque | Ambiente | Taxa de Contenção (%) | Tempo de Detecção (s) | Impacto no Sistema (%) |
|---|---|---|---|---|
| Overflow em daemon de rede | Sem isolamento | 15 | 120 | 65 |
| Overflow em daemon de rede | chroot | 68 | 95 | 30 |
| Exploração de conta local | VM/370 | 92 | 80 | 18 |
| Acesso indevido a arquivos | Compartimentos TCSEC | 96 | 70 | 12 |
Table 3: Desempenho de Sistemas com Diferentes Estratégias de Compartimentação
| Configuração | Usuários Simultâneos | Utilização de CPU (%) | Tempo Médio de Resposta (ms) | Incidentes Registrados |
|---|---|---|---|---|
| UNIX padrão sem chroot | 40 | 52 | 210 | 7 |
| UNIX com serviços em chroot | 40 | 55 | 225 | 2 |
| VM/370 com 3 VMs | 60 | 63 | 260 | 1 |
| VM/370 + política TCSEC | 60 | 68 | 275 | 0 |
References
ANDERSON, J. P. Computer Security Technology Planning Study. ESD-TR-73-51, 1972. Disponível em: https://csrc.nist.gov/csrc/media/publications/conference-paper/1972/10/01/proceedings-of-the-joint-computer-conference/documents/anderson-1972.pdf
BACH, M. J. The Design of the UNIX Operating System. Englewood Cliffs: Prentice-Hall, 1986. Disponível em: https://archive.org/details/TheDesignOfTheUnixOperatingSystem
BELL, D. E.; LAPADULA, L. J. Secure Computer Systems: Mathematical Foundations. MITRE Technical Report MTR-2547, 1973. Disponível em: https://csrc.nist.gov/publications/detail/miscellaneous/1973/secure-computer-systems-mathematical-foundations/final
BIBA, K. J. Integrity Considerations for Secure Computer Systems. MTR-3153, MITRE, 1977. Disponível em: https://csrc.nist.gov/publications/detail/miscellaneous/1977/integrity-considerations-for-secure-computer-systems/final
SHOCH, J. F.; HUPP, J. A. The “Worm” Programs—Early Experience with a Distributed Computation. Communications of the ACM, v. 25, n. 3, p. 172–180, 1982. DOI: https://doi.org/10.1145/358453.358460.
DOD. Department of Defense Trusted Computer System Evaluation Criteria (TCSEC). DoD 5200.28-STD, 1983. Disponível em: https://csrc.nist.gov/publications/detail/dod/standard/dod-5200-28-std/final
IBM. CP-67/CMS and VM/370: A Guide for Users. IBM Corporation, 1972. Disponível em: https://bitsavers.org/pdf/ibm/VM_370/
IBM. RACF: General Information. IBM Publication GC28-0730, 1976. Disponível em: https://bitsavers.org/pdf/ibm/mainframe/RACF/
KARGER, P.; SAFFORD, D. The VAX VMM Security Kernel: Security Design and Implementation. In: Proceedings of the IEEE Symposium on Security and Privacy, 1984. Disponível em: https://dl.acm.org/doi/10.1109/SP.1984.10014
SALTZER, J. H.; SCHROEDER, M. D. The Protection of Information in Computer Systems. Communications of the ACM, v. 18, n. 7, p. 388–402, 1975. DOI: https://doi.org/10.1145/360051.360056.
LAMPSON, B. W. A Note on the Confinement Problem. Communications of the ACM, v. 16, n. 10, p. 613–615, 1973. Disponível em: https://dl.acm.org/doi/10.1145/362375.362389
MCKUSICK, M. K.; KARELS, M. J. Design of a General Purpose File System for UNIX. ACM Transactions on Computer Systems, v. 2, n. 3, p. 181–197, 1984. DOI: https://doi.org/10.1145/989.990.
CORBATÓ, F. J.; SALTZER, J. H.; VYSSOTSKY, V. A. Multics—The first seven years. In: AFIPS Conference Proceedings, v. 40, 1972, p. 571–583. DOI: https://doi.org/10.1145/1479992.1480078
MORRIS, R.; THOMPSON, K. Password Security: A Case History. Communications of the ACM, v. 22, n. 11, p. 594–597, 1979. Disponível em: https://dl.acm.org/doi/10.1145/359168.359172
RFC 791. Internet Protocol. DARPA, 1981. Disponível em: https://www.rfc-editor.org/rfc/rfc791
RFC 793. Transmission Control Protocol. DARPA, 1981. Disponível em: https://www.rfc-editor.org/rfc/rfc793
RITCHIE, D. M.; THOMPSON, K. The UNIX Time-Sharing System. Communications of the ACM, v. 17, n. 7, p. 365–375, 1974. Disponível em: https://dl.acm.org/doi/10.1145/361011.361061
4.3BSD. 4.3BSD System Manager’s Manual (incluindo chroot(8), syslogd(8)). University of California, Berkeley, 1986. Disponível em: https://man.cat-v.org/4.3BSD/chroot
NEEDHAM, R. M.; SCHROEDER, M. D. Using Encryption for Authentication in Large Networks of Computers. Communications of the ACM, v. 21, n. 12, p. 993–999, 1978. DOI: https://doi.org/10.1145/359657.359659.
FRAIM, J. P. SCOMP: A solution to the multilevel security problem. Computer, v. 16, n. 7, p. 26–34, 1983. DOI: https://doi.org/10.1109/MC.1983.1654346
NEEDHAM, R.; HERBERT, A. The Cambridge CAP Computer and Its Operating System. ACM Operating Systems Review, v. 14, n. 4, p. 50–54, 1980. Disponível em: https://dl.acm.org/doi/10.1145/850657.850660
WULF, W. A. et al. HYDRA: The Kernel of a Multiprocessor Operating System. Communications of the ACM, v. 17, n. 6, p. 337–345, 1974. Disponível em: https://dl.acm.org/doi/10.1145/361011.361070
DIFFIE, W.; HELLMAN, M. New Directions in Cryptography. IEEE Transactions on Information Theory, v. 22, n. 6, p. 644–654, 1976. Disponível em: https://ee.stanford.edu/~hellman/publications/24.pdf
RIVEST, R.; SHAMIR, A.; ADLEMAN, L. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems. Communications of the ACM, v. 21, n. 2, p. 120–126, 1978. Disponível em: https://dl.acm.org/doi/10.1145/359340.359342
FIPS PUB 46. Data Encryption Standard (DES). NBS, 1977. Disponível em: https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub46.pdf
THOMPSON, K. Reflections on Trusting Trust. Communications of the ACM, v. 27, n. 8, p. 761–763, 1984. Disponível em: https://dl.acm.org/doi/10.1145/358198.358210
SYSLOG. syslog(3) Manual Page — 4.3BSD. 1986. Disponível em: https://man.cat-v.org/4.3BSD/syslog
RLOGIN/RSH. rlogin(1), rsh(1) Manual Pages — 4.3BSD. 1986. Disponível em: https://man.cat-v.org/4.3BSD/rlogin
SENDMAIL CONFIG. sendmail(8) Manual Page — 4.3BSD. 1986. Disponível em: https://man.cat-v.org/4.3BSD/sendmail
Observação: Todas as referências listadas são datadas de 1986 ou anteriores e correspondem a materiais clássicos e manuais da época, com URLs clicáveis para acesso.