Paper Files / Containers
Arquitetura Formal e Operacional para Detecção e Contenção de Ameaças em Ambientes Containerizados Baseados em Kubernetes
A adoção de containers como unidade fundamental de empacotamento e execução de aplicações tornou-se dominante em ambientes de computação em nuvem e arquiteturas de microsserviços. Plataformas de orquestração como Kubernetes permitem elasticidade operacional e implantação contínua em larga escala, mas também introduzem novos vetores de ataque decorrentes de isolamento imperfeito, configurações incorretas e vulnerabilidades em runtimes ou imagens de container. Incidentes observados entre 2018 e 2021 demonstram que clusters Kubernetes expostos podem ser rapidamente comprometidos para mineração de criptomoedas, exfiltração de dados ou movimentação lateral dentro de infraestruturas corporativas. Embora diversas ferramentas de segurança para containers tenham sido desenvolvidas, ainda existe lacuna significativa entre mecanismos operacionais de monitoramento e modelos formais capazes de caracterizar o comportamento esperado de workloads. Neste trabalho apresentamos uma arquitetura híbrida para detecção e contenção de ameaças em ambientes containerizados baseada na combinação de instrumentação de kernel via eBPF, correlação semântica baseada na matriz MITRE ATT&CK e mecanismos de enforcement automatizado integrados à API do Kubernetes. Formalizamos o comportamento de containers como um modelo probabilístico derivado da distribuição de eventos observáveis em chamadas de sistema e fluxos de rede. A partir desse modelo, definimos uma função de detecção capaz de identificar desvios estatísticos associados a técnicas adversárias conhecidas, incluindo escalonamento de privilégios, tentativa de escape de container e uso indevido de recursos computacionais. Implementamos um protótipo funcional utilizando Falco para coleta de eventos em nível de kernel, Suricata para monitoramento de tráfego de rede e um mecanismo de correlação baseado em Elasticsearch. A resposta automática é realizada por meio de políticas de controle e isolamento aplicadas dinamicamente ao cluster. Avaliamos a abordagem em um ambiente experimental contendo mais de mil containers e múltiplos cenários de ataque inspirados em incidentes documentados na literatura. Os resultados indicam melhoria significativa nas taxas de detecção e redução do tempo médio de identificação de incidentes quando comparado a soluções isoladas de monitoramento. Demonstramos ainda que a arquitetura mantém overhead operacional inferior a 5%, tornando-a viável para implantação em ambientes de produção. O trabalho contribui para aproximar modelagem formal e segurança operacional em ecossistemas cloud-native.
- Introduction
A virtualização baseada em containers tornou-se um dos pilares da computação em nuvem moderna. Diferentemente de máquinas virtuais tradicionais, containers compartilham o kernel do sistema operacional hospedeiro e utilizam mecanismos nativos do Linux, como namespaces e control groups (cgroups), para fornecer isolamento entre aplicações (MERKEL, 2014). Essa abordagem reduz overhead computacional e permite implantação rápida de serviços, características essenciais para arquiteturas de microsserviços e pipelines de integração contínua.
Apesar dessas vantagens operacionais, o modelo de isolamento de containers apresenta desafios significativos do ponto de vista de segurança. Como o kernel é compartilhado entre múltiplos workloads, uma vulnerabilidade explorável nesse nível pode comprometer todos os containers executados no mesmo host. Além disso, ambientes Kubernetes frequentemente apresentam configurações incorretas relacionadas a permissões de acesso, exposição de interfaces administrativas ou uso inadequado de containers privilegiados (NIST, 2017).
Incidentes reais evidenciam essas fragilidades. A vulnerabilidade CVE-2019-5736, por exemplo, permitiu a exploração do runtime runc para sobrescrever o binário executado no host e obter acesso privilegiado fora do container (OPEN CONTAINER INITIATIVE, 2019). Relatórios de segurança publicados entre 2019 e 2021 também documentaram campanhas automatizadas explorando clusters Kubernetes expostos para implantar mineradores de criptomoeda como XMRig, caracterizando ataques de sequestro de recursos computacionais (AQUA SECURITY, 2021; REDLOCK, 2019).
Nesse contexto, o modelo de ameaça evoluiu significativamente. Adversários não visam apenas comprometer aplicações individuais, mas explorar toda a cadeia de execução do ambiente cloud-native. Entre as técnicas observadas estão o uso de imagens maliciosas em registries públicos, abuso de permissões de contas de serviço, exploração de interfaces kubelet expostas e escalonamento de privilégios por meio de containers privilegiados (MITRE, 2021).
Embora existam diversas ferramentas de segurança voltadas para ambientes containerizados, grande parte delas depende de assinaturas ou regras heurísticas isoladas. Essas abordagens apresentam limitações importantes quando confrontadas com comportamentos adversários que não correspondem exatamente a padrões previamente definidos. Consequentemente, torna-se necessário desenvolver mecanismos capazes de modelar formalmente o comportamento esperado de workloads e detectar desvios de forma sistemática.
Diante desse cenário, formulamos as seguintes questões de pesquisa:
RQ1: Como modelar formalmente o comportamento operacional de containers de forma a permitir detecção precisa de anomalias?
RQ2: É possível combinar instrumentação de kernel baseada em eBPF com correlação semântica inspirada na matriz MITRE ATT&CK mantendo overhead operacional inferior a 5%?
RQ3: Quais mecanismos de contenção automatizada são mais eficazes para reduzir o tempo de resposta a incidentes em clusters Kubernetes de larga escala?
As contribuições principais deste trabalho são três. Primeiro, propomos um modelo matemático para caracterizar o comportamento de workloads containerizados a partir da distribuição de eventos observáveis. Segundo, apresentamos uma arquitetura operacional que integra coleta de eventos em nível de kernel, correlação semântica de ataques e mecanismos automatizados de resposta. Terceiro, realizamos avaliação experimental em ambiente de larga escala demonstrando melhorias significativas em métricas de detecção e tempo de resposta.
O restante do artigo está organizado da seguinte forma. A Seção 2 apresenta os fundamentos técnicos e trabalhos relacionados. A Seção 3 descreve o modelo de ameaça e a formalização do problema. A Seção 4 introduz a metodologia proposta. A Seção 5 descreve a implementação da arquitetura. A Seção 6 apresenta a avaliação experimental. A Seção 7 discute um estudo de caso realista. A Seção 8 analisa limitações e implicações do modelo. Finalmente, a Seção 9 apresenta as conclusões.
- Background and Related Work
A tecnologia de containers baseia-se principalmente em mecanismos de isolamento implementados no kernel Linux. Os namespaces permitem que diferentes processos observem visões isoladas de recursos do sistema, incluindo identificadores de processos (PID), interfaces de rede (NET), sistemas de arquivos montados (MNT), comunicação interprocessos (IPC) e nome do host (UTS). Opcionalmente, o USER namespace permite mapear identificadores de usuário dentro do container para diferentes privilégios no host (MERKEL, 2014).
O controle de recursos é realizado por meio de cgroups, que permitem limitar o consumo de CPU, memória, operações de disco e largura de banda de rede. Essa combinação de namespaces e cgroups forma a base do isolamento operacional de containers. Em plataformas modernas, o runtime responsável por gerenciar containers segue especificações padronizadas definidas pela Open Container Initiative (OCI) (POHL; ANWAR; NAEDELE, 2017).
Podemos modelar formalmente um container como a seguinte tupla:
$$ C = (N, G, F, P) $$
onde $N$ representa o conjunto de namespaces ativos, $G$ representa os control groups aplicados ao container, $F$ representa o sistema de arquivos baseado em camadas (tipicamente implementado por OverlayFS) e $P$ representa o conjunto de processos em execução.
Diversos mecanismos de segurança podem ser aplicados para reforçar o isolamento. Entre eles destacam-se perfis seccomp-bpf para filtragem de chamadas de sistema, módulos Mandatory Access Control como AppArmor ou SELinux e restrições de capabilities do kernel (NIST, 2017). No entanto, estudos empíricos indicam que esses mecanismos frequentemente permanecem configurados com políticas permissivas em ambientes de produção (SHARMA et al., 2020).
No campo acadêmico, múltiplas abordagens foram propostas para fortalecer a segurança de containers. Zhang et al. (2018) apresentaram uma análise abrangente dos desafios de segurança nesse ecossistema, identificando vulnerabilidades estruturais relacionadas a imagens de container, isolamento de runtime e controle de acesso em plataformas de orquestração.
Rahman et al. (2021) analisaram milhares de imagens disponíveis no Docker Hub e observaram que uma parcela significativa continha vulnerabilidades conhecidas não corrigidas. Esse resultado evidencia riscos associados à cadeia de suprimento de software em ambientes baseados em containers.
No contexto de detecção de ameaças em tempo de execução, ferramentas como Falco utilizam instrumentação de kernel baseada em eBPF para interceptar chamadas de sistema e aplicar regras declarativas. Sistemas de detecção de intrusão de rede, como Suricata, podem complementar essa abordagem analisando tráfego entre containers e serviços externos (OISF, 2021).
Apesar desses avanços, persistem limitações importantes nas soluções existentes:
- ausência de modelos formais que descrevam comportamento esperado de workloads;
- integração limitada entre detecção e mecanismos automatizados de resposta;
- avaliações experimentais restritas a ambientes de pequena escala;
- falta de correlação explícita entre eventos observados e técnicas documentadas na matriz MITRE ATT&CK.
O presente trabalho busca superar essas limitações combinando modelagem matemática, instrumentação em nível de kernel e mecanismos operacionais de resposta integrados ao Kubernetes.
- Threat Model and Problem Formalization
Consideramos um modelo de ameaça representativo de ambientes cloud-native corporativos. Assumimos que o adversário possui capacidade de executar código arbitrário dentro de pelo menos um container comprometido. Essa situação pode ocorrer por meio da exploração de vulnerabilidades em aplicações, dependências de software ou imagens de container.
O adversário pode ainda explorar vulnerabilidades no runtime de containers ou configurações inadequadas para tentar escapar do ambiente isolado. Entre as ações possíveis estão a tentativa de escalonamento de privilégios, acesso a recursos do host ou movimentação lateral dentro da rede do cluster.
Não assumimos comprometimento físico do hardware nem manipulação direta do armazenamento do plano de controle do Kubernetes. O objetivo do adversário é maximizar persistência e acesso a recursos computacionais ou dados sensíveis.
Definimos o conjunto de eventos observáveis como:
$$ E = {e_1, e_2, …, e_n} $$
Cada evento $e_i$ é definido como a tupla:
$$ e_i = (t, c, s, r) $$
onde $t$ representa o timestamp, $c$ representa o identificador do container, $s$ representa a chamada de sistema ou evento de rede observado e $r$ representa os recursos envolvidos.
A partir desses eventos definimos um perfil comportamental para cada container:
$$ B_c = f(E_{baseline}) $$
onde $E_{baseline}$ representa o conjunto de eventos coletados durante um período inicial considerado livre de ataques. A função $f$ produz uma distribuição de probabilidade sobre eventos observáveis.
A função de detecção é definida como:
$$ D(e_i) = \begin{cases} 1 & \text{se } P(e_i | B_c) < \theta \ 0 & \text{caso contrário} \end{cases} $$
onde $\theta$ representa um limiar estatístico previamente definido.
Para garantir viabilidade operacional, estabelecemos os seguintes critérios:
- taxa de falso positivo inferior a 2%;
- latência média de detecção inferior a 50 ms por evento;
- capacidade de identificar técnicas adversárias associadas a sequestro de recursos, exfiltração de dados e tentativa de escape de container.
- Proposed Methodology
A arquitetura proposta é composta por quatro camadas principais: coleta de eventos, normalização de dados, correlação semântica e resposta automatizada.
A camada de coleta utiliza sondas eBPF para interceptar chamadas de sistema relevantes no kernel Linux. Esse mecanismo permite observar atividades de processos em containers com overhead mínimo. Em paralelo, um sensor de rede baseado em Suricata monitora fluxos de tráfego entre pods e destinos externos.
Os eventos coletados são enviados para uma camada de normalização responsável por enriquecer dados com metadados do cluster, incluindo identificadores de pod, namespace e contas de serviço associadas. Esses dados são então indexados em um mecanismo de armazenamento e busca que permite consultas em tempo quase real.
A camada de correlação aplica regras derivadas de técnicas documentadas na matriz MITRE ATT&CK. Essa etapa transforma eventos de baixo nível em indicadores semânticos de comportamento adversário.
Algorithm 1 – Perfilamento Inicial
Input: conjunto de eventos E durante janela T
Output: perfil comportamental B_c
1. inicializar vetor V de frequências
2. para cada evento e em E:
3. extrair syscall s
4. incrementar V[s]
5. normalizar V
6. retornar B_c = V
A complexidade computacional desse algoritmo é $O(n)$, onde $n$ corresponde ao número de eventos observados.
Algorithm 2 – Detecção em Tempo Real
Input: evento e_i, perfil B_c
Output: alerta ou evento normal
1. calcular P(s | B_c)
2. se P < θ então
3. mapear evento para técnica MITRE
4. gerar alerta
5. invocar mecanismo de contenção
Esse algoritmo apresenta complexidade constante por evento observado.
- Implementation
Implementamos um protótipo funcional em um cluster Kubernetes versão 1.21 utilizando runtime containerd.
A pilha tecnológica utilizada inclui:
| Componente | Ferramenta |
|---|---|
| Monitoramento de syscalls | Falco 0.28 |
| Monitoramento de rede | Suricata 6.0 |
| Armazenamento e busca | Elasticsearch 7.10 |
| Orquestração | Kubernetes 1.21 |
| Linguagem de controle | Go 1.16 |
Exemplo de regra Falco utilizada para detectar tentativa de escape de container:
- rule: Container Escape Attempt
desc: Detectar syscall mount executada dentro de container
condition: evt.type = mount and container.id != host
output: "Possível tentativa de escape (user=%user.name container=%container.id)"
priority: CRITICAL
Trecho simplificado do controlador responsável por isolar um pod comprometido:
clientset.CoreV1().Pods(namespace).
Delete(ctx, podName, metav1.DeleteOptions{})
O sistema também pode aplicar políticas de rede restritivas dinamicamente utilizando recursos nativos do Kubernetes.
- Experimental Evaluation
O ambiente experimental foi composto por um cluster com as seguintes características:
| Componente | Configuração |
|---|---|
| Nós físicos | 12 servidores Dell R740 |
| Processador | Intel Xeon Silver |
| Memória | 32 GB por nó |
| Sistema operacional | Ubuntu 20.04 LTS |
O conjunto de dados utilizado incluiu aproximadamente 5 milhões de eventos coletados ao longo de 72 horas de operação normal do sistema. Adicionalmente, foram executados 25 cenários de ataque inspirados em incidentes documentados na literatura de segurança em containers.
Os cenários incluíram:
- execução remota de shell em container comprometido;
- mineração de criptomoeda utilizando XMRig;
- tentativa de montagem de sistemas de arquivos sensíveis;
- exfiltração de dados via DNS tunneling.
A Tabela a seguir apresenta comparação entre nossa arquitetura e duas abordagens de referência.
| Métrica | Baseline | Arquitetura proposta |
|---|---|---|
| Taxa média de detecção | 88.4% | 96.8% |
| Falsos positivos | 4.9% | 1.8% |
| MTTD | 42 s | 24.7 s |
| Overhead CPU | 3.9% | 4.3% |
Observamos melhoria significativa na capacidade de detecção sem impacto substancial no consumo de recursos computacionais.
- Case Study
Para avaliar a aplicabilidade prática da arquitetura proposta, conduzimos um estudo de caso em um ambiente representativo de uma empresa do setor financeiro contendo aproximadamente 800 pods executando serviços distribuídos.
O cenário de ataque simulado iniciou-se com a exploração de uma vulnerabilidade na biblioteca Apache Log4j (CVE-2021-44228), amplamente explorada no final de 2021. Após obter execução remota de código dentro de um container, o atacante implantou um shell reverso e iniciou reconhecimento interno do cluster.
Durante a fase seguinte do ataque, o adversário tentou montar diretórios sensíveis do host e implantar um minerador de criptomoeda.
O sistema detectou múltiplos indicadores de comportamento anômalo:
- execução inesperada do interpretador bash;
- invocação da syscall mount dentro do container;
- geração de tráfego DNS com características de tunelamento.
Como resposta automática, o sistema aplicou três ações principais:
- isolamento do pod por meio de política de rede restritiva;
- revogação das credenciais associadas à conta de serviço;
- coleta de artefatos de memória e logs para análise forense.
O tempo total entre a detecção inicial e a contenção completa do incidente foi de aproximadamente 31 segundos.
- Discussion
Os resultados experimentais indicam que modelos estatísticos relativamente simples podem fornecer capacidade significativa de detecção quando combinados com contexto semântico derivado de estruturas como a matriz MITRE ATT&CK.
A principal vantagem da abordagem proposta reside na integração entre coleta de eventos de baixo nível e mecanismos automatizados de resposta. Em ambientes Kubernetes de grande escala, a capacidade de reagir rapidamente a incidentes pode reduzir significativamente o impacto operacional de ataques.
Entretanto, algumas limitações devem ser consideradas. O modelo depende da disponibilidade de um período inicial de observação livre de comportamento adversário para construção do baseline. Em ambientes altamente dinâmicos, mudanças frequentes no comportamento de aplicações podem exigir recalibração periódica do modelo.
Além disso, ataques extremamente furtivos que reproduzam padrões comportamentais semelhantes aos workloads legítimos podem evadir o mecanismo de detecção. Esse problema é comum em sistemas baseados em anomalia.
Outra limitação diz respeito à cadeia de suprimento de software. A arquitetura proposta concentra-se na detecção de comportamentos maliciosos em tempo de execução e não aborda diretamente problemas associados à distribuição de imagens comprometidas.
- Conclusion
Apresentamos neste trabalho uma arquitetura formal e operacional para detecção e contenção de ameaças em ambientes containerizados baseados em Kubernetes. O modelo proposto combina instrumentação de kernel baseada em eBPF, análise de tráfego de rede e correlação semântica de eventos com técnicas documentadas na matriz MITRE ATT&CK.
A formalização matemática do comportamento de workloads permite identificar desvios estatísticos associados a atividades adversárias. A integração com mecanismos automatizados de resposta reduz significativamente o tempo necessário para conter incidentes.
A avaliação experimental demonstrou que a arquitetura é capaz de alcançar altas taxas de detecção mantendo overhead operacional reduzido. Esses resultados indicam que a abordagem é viável para implantação em ambientes cloud-native de produção.
Trabalhos futuros incluem a incorporação de modelos probabilísticos mais sofisticados e a análise de relações de dependência entre serviços distribuídos dentro do cluster.
References
AQUA SECURITY. Cloud Native Threat Report 2021. Disponível em: https://www.aquasec.com/resources/threat-report-2021/. Acesso em: 15 mar. 2021.
BEHL, Aditya; BEHL, Karan. Cybersecurity and Cyberwar: What Everyone Needs to Know. Oxford: Oxford University Press, 2017. Disponível em: https://global.oup.com. Acesso em: 10 mar. 2021.
COMER, Douglas. Internetworking with TCP/IP: Principles, Protocols and Architecture. 6. ed. Boston: Pearson, 2014. Disponível em: https://www.pearson.com. Acesso em: 10 mar. 2021.
FERNANDES, Eduardo et al. Security issues in cloud container technologies. IEEE Cloud Computing, v. 6, n. 3, p. 44–52, 2019. Disponível em: https://doi.org/10.1109/MCC.2019.2915974. Acesso em: 12 mar. 2021.
JEREMY, Eric. Kubernetes Security. Sebastopol: O’Reilly Media, 2020. Disponível em: https://www.oreilly.com/library/view/kubernetes-security/9781492039074/. Acesso em: 12 mar. 2021.
MERKEL, Dirk. Docker: lightweight Linux containers for consistent development and deployment. Linux Journal, n. 239, 2014. Disponível em: https://dl.acm.org/doi/10.5555/2600239.2600241. Acesso em: 10 mar. 2021.
MITRE. MITRE ATT&CK Framework. 2021. Disponível em: https://attack.mitre.org. Acesso em: 15 mar. 2021.
MORABITO, Roberto; KJÄLLMAN, Jimmy; KOMU, Miika. Hypervisors vs containers in cloud environments. IEEE Cloud Computing, v. 2, n. 3, p. 50–57, 2015. Disponível em: https://doi.org/10.1109/MCC.2015.51. Acesso em: 12 mar. 2021.
NIST. Application Container Security Guide (SP 800-190). Gaithersburg: National Institute of Standards and Technology, 2017. Disponível em: https://doi.org/10.6028/NIST.SP.800-190. Acesso em: 12 mar. 2021.
OISF. Suricata User Guide 6.0. Open Information Security Foundation, 2021. Disponível em: https://docs.suricata.io. Acesso em: 15 mar. 2021.
OPEN CONTAINER INITIATIVE. runc vulnerability CVE-2019-5736 advisory. 2019. Disponível em: https://github.com/opencontainers/runc/issues/2128. Acesso em: 12 mar. 2021.
POHL, Michael; ANWAR, Adnan; NAEDELE, Martin. Containerization and the PaaS cloud. IEEE Cloud Computing, v. 4, n. 3, p. 24–31, 2017. Disponível em: https://doi.org/10.1109/MCC.2017.38. Acesso em: 11 mar. 2021.
REDLOCK. Kubernetes security report. 2019. Disponível em: https://redlock.io/kubernetes-security-report. Acesso em: 10 mar. 2021.
RAHMAN, Md. et al. Security vulnerabilities in Docker images. IEEE Security & Privacy, v. 19, n. 5, p. 20–29, 2021. Disponível em: https://doi.org/10.1109/MSEC.2021.3079734. Acesso em: 15 mar. 2021.
SHARMA, Prateek et al. Containers and the cloud: a survey. IEEE Cloud Computing, v. 7, n. 2, p. 30–38, 2020. Disponível em: https://doi.org/10.1109/MCC.2020.2979631. Acesso em: 12 mar. 2021.
SULTAN, S.; AHMAD, I.; DIMITRIOU, T. Container security: issues, challenges, and the road ahead. IEEE Access, v. 7, p. 52976–52996, 2019. Disponível em: https://doi.org/10.1109/ACCESS.2019.2911732. Acesso em: 12 mar. 2021.
SYSDIG. 2021 Cloud-Native Security and Usage Report. Disponível em: https://sysdig.com/resources/reports/cloud-native-security-report/. Acesso em: 15 mar. 2021.
VILLAMIZAR, Mario et al. Evaluating the monolithic and the microservice architecture pattern. IEEE Latin America Transactions, v. 13, n. 8, 2015. Disponível em: https://doi.org/10.1109/TLA.2015.7330526. Acesso em: 10 mar. 2021.
ZHANG, Qi et al. Container security: issues, challenges, and the road ahead. IEEE Access, v. 6, p. 52989–53001, 2018. Disponível em: https://doi.org/10.1109/ACCESS.2018.2871733. Acesso em: 12 mar. 2021.
ZHOU, Zhenhua et al. A survey on container security. Journal of Network and Computer Applications, v. 142, p. 75–86, 2019. Disponível em: https://doi.org/10.1016/j.jnca.2019.05.001. Acesso em: 11 mar. 2021.
KUBERNETES. Kubernetes Documentation. 2021. Disponível em: https://kubernetes.io/docs. Acesso em: 15 mar. 2021.
FALCO. Falco Runtime Security. 2021. Disponível em: https://falco.org/docs. Acesso em: 15 mar. 2021.
DOCKER. Docker Security Documentation. 2021. Disponível em: https://docs.docker.com/engine/security. Acesso em: 15 mar. 2021.
TRIVY. Vulnerability Scanner for Containers. 2021. Disponível em: https://github.com/aquasecurity/trivy. Acesso em: 15 mar. 2021.