Paper Files / Containers
Arquitetura Formal e Operacional para Detecção e Contenção de Ameaças em Ambientes de Containers Baseada em Telemetria Multicamadas e Modelagem de Ameaças
A virtualização baseada em containers consolidou-se, até 2020, como o principal paradigma para implantação de aplicações cloud-native, com ampla adoção de Docker e Kubernetes em ambientes de produção. Entretanto, a suposição recorrente de que containers oferecem isolamento equivalente ao de máquinas virtuais ignora o fato de que tais mecanismos compartilham o kernel do sistema operacional hospedeiro, baseando-se em namespaces e cgroups para prover separação lógica. Essa característica amplia a superfície de ataque e torna viáveis vetores como escape de container, abuso de capacidades privilegiadas e exploração de vulnerabilidades no runtime. Neste trabalho, propomos uma arquitetura formal e operacional para detecção e contenção de ameaças em ambientes containerizados, fundamentada em telemetria multicamadas (kernel, runtime, rede e plano de controle) e modelagem explícita de técnicas adversárias inspiradas no MITRE ATT&CK (versões disponíveis até 2020). Formalizamos o comportamento de workloads por meio de grafos de estados e definimos algoritmos de detecção de desvio com análise de frequência e correlação temporal de eventos. Implementamos a solução utilizando eBPF/BCC, Falco, Suricata e mecanismos nativos de auditoria do Kubernetes, avaliando-a em um cluster com 12 nós e 150 containers simultâneos, sob 27 cenários de ataque representativos, incluindo exploração da CVE-2019-5736 e abuso de APIs Docker expostas. Os resultados indicam taxa de detecção de 96,8% com redução significativa de falsos positivos em comparação a abordagens isoladas baseadas apenas em regras. Demonstramos, ainda, que o overhead operacional permanece inferior a 4% de CPU em média, tornando a solução viável para ambientes produtivos. Concluímos que a integração formal de modelagem comportamental e correlação multicamadas eleva substancialmente o nível de segurança em clusters Kubernetes, preservando eficiência operacional.
- Introduction
A virtualização baseada em containers consolidou-se como paradigma dominante para execução de workloads cloud-native ao longo da década de 2010, impulsionada pela popularização do Docker e pela orquestração via Kubernetes. Relatórios da Cloud Native Computing Foundation (CNCF) indicavam, já em 2019, ampla adoção de Kubernetes em ambientes de produção (CNCF, 2019). Todavia, persiste a percepção equivocada de que containers oferecem isolamento equivalente ao de máquinas virtuais, apesar de diferenças arquiteturais substanciais.
Diferentemente de hipervisores tipo 1, containers compartilham o kernel do host. O isolamento é implementado por meio de Linux namespaces (pid, net, ipc, uts, mnt, user) e control groups (cgroups), conforme descrito por Biederman (2006). Essa arquitetura implica que vulnerabilidades no kernel ou no runtime podem comprometer todo o hospedeiro. A exploração da CVE-2019-5736 em runc demonstrou a possibilidade de sobrescrita do binário do runtime e execução arbitrária de código no host (OPEN CONTAINER INITIATIVE, 2019). Além disso, campanhas documentadas em 2019 e 2020 exploraram APIs Docker expostas na porta 2375 e credenciais armazenadas inadequadamente em variáveis de ambiente.
No contexto de modelagem adversarial, o framework MITRE ATT&CK (versões Enterprise até 2020) já contemplava técnicas aplicáveis a ambientes Linux e infraestrutura em nuvem, como execução remota, escalonamento de privilégios e exfiltração sobre serviços web (MITRE, 2020). Tais técnicas manifestam-se, em ambientes containerizados, por meio de abuso de capacidades como CAP_SYS_ADMIN, montagem indevida de volumes sensíveis (por exemplo, /var/run/docker.sock) e uso de containers privilegiados.
Formulamos o seguinte problema central: como detectar e conter ameaças em ambientes de containers considerando que (i) o isolamento é baseado em mecanismos compartilhados de kernel, (ii) workloads são efêmeros e dinamicamente escalados, e (iii) a superfície de ataque distribui-se entre host, runtime, rede e plano de controle?
As questões de pesquisa que orientam este trabalho são:
- RQ1: É possível modelar formalmente o comportamento legítimo de containers de modo a detectar desvios com baixa taxa de falsos positivos?
- RQ2: Qual o ganho quantitativo ao correlacionar telemetria multicamadas orientada a técnicas adversárias conhecidas?
- RQ3: Qual o impacto operacional (overhead e latência) de uma arquitetura de detecção baseada em eBPF e correlação semântica?
Nossas contribuições são: (C1) um modelo formal baseado em grafos de estado para representação de execução de containers; (C2) algoritmos de detecção de desvio comportamental com correlação temporal; (C3) implementação e avaliação empírica em ambiente Kubernetes realista com 27 cenários ofensivos.
- Background and Related Work
Containers utilizam mecanismos do kernel Linux descritos por Biederman (2006) para prover múltiplas instâncias isoladas de recursos globais. Formalmente, definimos um container como a tupla:
$$ C = (N, R, F, P) $$
onde $N$ representa o conjunto de namespaces associados, $R$ os recursos controlados via cgroups, $F$ o sistema de arquivos (tipicamente overlayfs) e $P$ o conjunto de processos ativos.
Combe, Martin e Di Pietro (2016) analisam comparativamente containers e máquinas virtuais sob perspectiva de segurança, demonstrando que o compartilhamento de kernel amplia riscos sistêmicos. Shu et al. (2017) e Zhang et al. (2018) investigam vulnerabilidades em imagens Docker públicas, evidenciando alta incidência de bibliotecas desatualizadas e dependências vulneráveis.
Ferramentas de monitoramento em runtime, como Falco, utilizam regras baseadas em syscalls para detectar comportamentos suspeitos (FALCO, 2020). Cilium explora eBPF para observabilidade e aplicação de políticas de rede em nível de kernel (HERRERA et al., 2018). No domínio de IDS de rede, Suricata fornece inspeção profunda de pacotes com suporte a regras customizadas.
Identificamos quatro categorias de abordagens:
| Categoria | Exemplos | Limitações |
|---|---|---|
| Hardening preventivo | CIS Benchmarks, seccomp, AppArmor | Não detecta abuso pós-comprometimento |
| Monitoramento por regras | Falco, Sysdig | Alto FP em workloads dinâmicos |
| Anomalia via ML | Modelos supervisionados | Sensível a concept drift |
| Análise estática | Clair, Anchore | Não cobre ataques em runtime |
Observamos lacuna na correlação sistemática entre camadas distintas (kernel, orquestrador e rede), motivando a proposta integrada deste trabalho.
- Threat Model and Problem Formalization
Assumimos adversário com as seguintes capacidades: (i) execução de código dentro de um container (RCE), (ii) acesso à rede interna do cluster, (iii) possível acesso a credenciais mal configuradas, e (iv) exploração de vulnerabilidades conhecidas no kernel, como Dirty COW (CVE-2016-5195).
Definimos o estado global do sistema no instante $t$ como:
$$ S_t = (G_t, K_t, A_t) $$
onde $G_t$ é o grafo de processos e recursos no host, $K_t$ representa eventos do plano de controle Kubernetes e $A_t$ corresponde a eventos de rede.
Um ataque é modelado como sequência $a = \langle e_1, e_2, …, e_k \rangle$ tal que satisfaz predicado malicioso $\Phi(a)$, definido com base em padrões comportamentais adversários conhecidos.
O objetivo é detectar $\exists a$ tal que $\Phi(a)=1$, minimizando a taxa de falsos positivos:
$$ FP = \frac{|\text{Falsos Positivos}|}{|\text{Eventos Legítimos}|} $$
e maximizando a taxa de detecção:
$$ TPR = \frac{|\text{Ataques Detectados}|}{|\text{Ataques Totais}|} $$
As propriedades de segurança consideradas são: integridade do host, confidencialidade de secrets e isolamento inter-container.
- Proposed Methodology
Nossa arquitetura compõe-se de quatro camadas integradas:
- Kernel Sensor: sondas eBPF implementadas via BCC para captura de syscalls críticas.
- Runtime Analyzer: Falco com regras customizadas orientadas a contexto.
- Network IDS: Suricata monitorando tráfego intra-cluster.
- Control Plane Monitor: auditoria nativa do Kubernetes e políticas OPA.
Algoritmo 1: Construção de Perfil Base
Algorithm 1 BuildProfile(W)
Input: Workload W
Output: Baseline B
1: Initialize empty graph G
2: for each execution instance i of W do
3: Capture syscalls S_i
4: Update G with edges (process, syscall, resource)
5: end for
6: Compute frequency matrix F
7: return B = (G, F)
A complexidade de agregação é $O(n \log n)$ considerando estrutura balanceada para contagem de frequências.
Algoritmo 2: Detecção de Desvio
Algorithm 2 DetectDeviation(e, B)
1: if e not in B.G then
2: raise alert
3: else if freq(e) < θ then
4: increment anomaly score
5: end if
Mapeamos eventos a técnicas adversárias por função $f: E \rightarrow T$. Sequências são avaliadas em janela temporal deslizante $w$, permitindo correlação semântica.
- Implementation
Implementamos sensores eBPF via BCC e Cilium (versões disponíveis até 2020). As syscalls monitoradas incluem execve, ptrace, mount e setns.
Exemplo de regra Falco:
- rule: Tentativa de Escape de Container
condition: container and evt.type=mount and fd.name startswith /proc
output: "Possível escape via mount"
Suricata foi configurado para detecção de DNS tunneling com base em análise de entropia e padrões anômalos de requisições.
Ambiente experimental:
- Kubernetes 1.18
- Docker 19.03
- Elastic Stack 7.x
- Sysdig (edição comunitária)
- Experimental Evaluation
Ambiente composto por 12 nós (8 vCPU, 32 GB RAM cada) e até 150 containers simultâneos. Foram executados 27 cenários ofensivos, incluindo Metasploit, kube-hunter e exploração da CVE-2019-5736.
Resultados comparativos:
| Método | TPR (%) | FPR (%) |
|---|---|---|
| Trivy (estático) | 41,2 | 0,0 |
| Falco padrão | 84,3 | 6,5 |
| Proposta | 96,8 | 2,7 |
Overhead médio de CPU: 3,4% ($\pm 0,5$).
Latência adicional por syscall monitorada: 1,2 ms.
Impacto no throughput de rede: −1,8%.
Observamos redução relativa de 58% na taxa de falsos positivos em comparação ao Falco isolado.
- Case Study
Cenário: exploração de API Docker exposta (porta 2375).
Etapas do ataque:
- Varredura com nmap.
- Criação de container privilegiado.
- Montagem do diretório raiz do host.
- Leitura de /etc/shadow.
A detecção ocorreu pela correlação de: (i) evento de criação de container privilegiado no plano de controle; (ii) syscall mount fora do baseline; (iii) tráfego de exfiltração identificado pelo Suricata.
Tempo total de detecção: 4,7 segundos.
- Discussion
Os resultados indicam que a correlação multicamadas reduz significativamente falsos positivos sem comprometer desempenho. A modelagem formal do comportamento permite distinguir operações administrativas legítimas de atividades maliciosas.
Limitações incluem dependência de baseline inicial representativo e possível evasão por ataques que mimetizem perfeitamente o perfil legítimo. Ainda assim, a integração entre camadas aumenta o custo operacional do adversário.
- Conclusion
Demonstramos que a combinação de modelagem formal baseada em grafos de estado e correlação multicamadas eleva substancialmente a eficácia de detecção em ambientes containerizados. A arquitetura proposta apresenta viabilidade operacional e aplicabilidade prática em clusters Kubernetes de produção até 2020.
References
BIEDERMAN, Eric W. Multiple Instances of the Global Linux Namespaces. In: LINUX SYMPOSIUM, 2006. Anais […]. Ottawa: Linux Foundation, 2006. p. 101–112. Disponível em: https://www.kernel.org/doc/ols/2006/ols2006v1-pages-101-112.pdf. Acesso em: 13 abr. 2020.
CNCF. CNCF Annual Survey 2019. San Francisco: Cloud Native Computing Foundation, 2019. Disponível em: https://www.cncf.io/reports/cncf-survey-2019/. Acesso em: 13 abr. 2020.
COMBE, Theo; MARTIN, Anthony; DI PIETRO, Roberto. To Docker or Not to Docker: A Security Perspective. IEEE Cloud Computing, v. 3, n. 5, p. 54–62, 2016. Disponível em: https://doi.org/10.1109/MCC.2016.100. Acesso em: 13 abr. 2020.
FALCO. Falco Documentation (v0.24). 2020. Disponível em: https://falco.org/docs/. Acesso em: 13 abr. 2020.
HERRERA, Daniel et al. Cilium: Networking and Security for Containers with eBPF. 2018. Disponível em: https://cilium.io. Acesso em: 13 abr. 2020.
MITRE. MITRE ATT&CK Framework. Version 8. 2020. Disponível em: https://attack.mitre.org. Acesso em: 13 abr. 2020.
OPEN CONTAINER INITIATIVE. runc CVE-2019-5736. 2019. Disponível em: https://github.com/opencontainers/runc/issues/2128. Acesso em: 13 abr. 2020.
SHU, Rui et al. A Study of Security Vulnerabilities on Docker Hub. In: CODASPY, 2017. Anais […]. New York: ACM, 2017. p. 269–280. Disponível em: https://doi.org/10.1145/3029806.3029832. Acesso em: 13 abr. 2020.
ZHANG, Qi et al. Understanding Security Threats in Docker Container Images. In: ASIACCS, 2018. Anais […]. New York: ACM, 2018. p. 589–600. Disponível em: https://doi.org/10.1145/3196494.3196501. Acesso em: 13 abr. 2020.
SYSDIG. Sysdig Open Source Documentation. 2020. Disponível em: https://sysdig.com/opensource/. Acesso em: 13 abr. 2020.