Para garantirmos a tríade CIA (Confidencialidade, Integridade e Disponibilidade) no design dos sistemas, devemos certificar que a interação entre todos os componentes de um sistema seja segura e controlada.
A arquitetura de software utiliza-se de diferentes técnicas para certificar que os programas executem somente aquilo que é requerido e nada mais. Os conceitos abaixo de Confinamento (Confinement), Limites (Bounds) e Isolamento (Isolation), são comumente utilizados em todas as áreas de segurança.
1. Confinamento (Confinement) ou Sandboxing
O conceito de confinamento consiste em restringir rigorosamente as ações que um determinado programa ou processo pode executar. Em termos simples, designers de software utilizam o confinamento para permitir que um processo leia e escreva exclusivamente em áreas específicas de memória e recursos previamente mapeados.
Esse comportamento é amplamente conhecido no nosso dia a dia técnico como Sandboxing. Trata-se da aplicação prática do Princípio do Menor Privilégio (Least Privilege): o processo recebe apenas o estritamente necessário para sua operação, mitigando o risco de vazamento de dados para programas, usuários ou sistemas não autorizados.
Se um processo tentar iniciar uma ação que exceda sua autoridade concedida, o sistema operacional (ou outro componente de segurança ativo) intercepta e nega a operação. Geralmente, o processo violador é sumariamente terminado e a tentativa é registrada em logs. O confinamento pode ser implementado via isolamento de processos no SO, proteções de memória ou aplicações dedicadas de sandbox (como Sandboxie, soluções baseadas em containers ou hipervisores como VMware e VirtualBox).
2. Limites (Bounds)
Cada processo em execução possui um nível de autoridade associado (por exemplo, os clássicos níveis user e kernel em sistemas modernos). Com base nisso, o sistema operacional define os Limites (Bounds) de um processo.
Os limites consistem em restrições e faixas de valores associadas aos endereços de memória e aos recursos de hardware que o processo pode legalmente acessar. Eles mapeiam a área exata onde o processo está confinado. O sistema operacional tem a responsabilidade de impor esses limites lógicos para impedir que um processo acesse o espaço reservado a outros.
Embora limites lógicos (gerenciados via tabelas de páginas do SO) sejam eficientes, ambientes de alta segurança podem exigir limites fisicamente segregados de memória. Limites físicos exigem chips ou partições de memória dedicadas por processo, o que torna a solução financeiramente cara, mas substancialmente mais resiliente a vulnerabilidades de canal lateral (side-channel attacks). No final do dia, definir limites é o mecanismo usado para consolidar o confinamento.
3. Isolamento (Isolation)
Quando aplicamos limites estritos (bounds) e garantimos o confinamento de um processo (confinement), dizemos que ele está rodando em Isolamento. O isolamento garante que o comportamento de um determinado processo afete unicamente a memória e os recursos que lhe foram explicitamente atribuídos.
Em sistemas operacionais modernos e estáveis, o isolamento cumpre um papel crítico:
- Proteção do Ambiente: Protege o ambiente operacional de execução, o kernel do sistema e as outras aplicações independentes.
- Prevenção de Acessos Indevidos: Impede que uma aplicação comprometa ou acesse a memória de terceiros, intencionalmente ou não.
- Tolerância a Falhas (Fail-Soft Environment): Assegura que, caso um processo específico trave ou sofra um crash catastrófico, ele seja encerrado sem interferir ou derrubar o restante do sistema.
💡 Em suma: O Confinamento busca assegurar que o processo acesse apenas recursos específicos; os Limites representam a demarcação e autorização do que ele pode interagir; e o Isolamento é o meio/estado final alcançado através da imposição ativa desses limites.
Controle de Acesso, Confiança (Trust) e Garantia (Assurance)
Para fechar o ecossistema de proteção, os sistemas utilizam os Controles de Acesso. Eles ditam as regras lógicas e garantem que apenas sujeitos (processos/usuários) autorizados acessem determinados objetos (arquivos/memória/hardware), operando por meio de políticas discricionárias (DAC), baseadas em papéis (RBAC) ou mandatórias (MAC).
A partir disso, derivamos dois conceitos chaves de governança em engenharia de segurança:
- Sistemas Confiáveis (Trusted Systems): São sistemas onde todos os mecanismos de proteção operam de maneira coordenada para processar dados sensíveis multiusuário de forma segura, preservando a estabilidade computacional.
- Garantia (Assurance): É o grau de confiança de que os mecanismos de segurança de fato atendem e satisfazem a política de segurança estipulada. A confiança em si é a presença desses mecanismos em funcionamento, enquanto a Garantia é a métrica/avaliação de quão confiáveis e robustos esses mecanismos são em cenários de estresse, mudanças de hardware, ou frente a atualizações (como patches de correção de vulnerabilidades ou gerência de configuração).
Referências
CHAPPLE, Mike; STEWART, James Michael; GIBSON, Darril. ISC2 CISSP Certified Information Systems Security Professional Official Study Guide. 10. ed. New Jersey: John Wiley & Sons, 2024.
