← Voltar aos artigos

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

ContainersPT

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.

  1. 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:

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.

  1. 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.

  1. 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.

  1. Proposed Methodology

Nossa arquitetura compõe-se de quatro camadas integradas:

  1. Kernel Sensor: sondas eBPF implementadas via BCC para captura de syscalls críticas.
  2. Runtime Analyzer: Falco com regras customizadas orientadas a contexto.
  3. Network IDS: Suricata monitorando tráfego intra-cluster.
  4. 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.

  1. 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:

  1. 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.

  1. Case Study

Cenário: exploração de API Docker exposta (porta 2375).

Etapas do ataque:

  1. Varredura com nmap.
  2. Criação de container privilegiado.
  3. Montagem do diretório raiz do host.
  4. 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.

  1. 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.

  1. 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.