# DS0031 — Cluster
## Descrição
Um cluster é um conjunto de recursos de computação em contêineres gerenciados em conjunto, mas com nós separados para executar diferentes tarefas e aplicações. No contexto moderno de DevOps e cloud-native, clusters Kubernetes são a manifestação mais comum desta fonte de dados — agrupando nós de trabalho (*worker nodes*) que executam pods, gerenciados por um plano de controle (*control plane*) composto por API Server, etcd, Scheduler e Controller Manager.
A segurança de clusters representa um dos desafios mais complexos do panorama atual de infraestrutura cloud-native. A superfície de ataque inclui: o API Server exposto (frequentemente na internet sem autenticação adequada), RBAC mal configurado que concede privilégios excessivos a service accounts, pods com capacidades de segurança elevadas (`privileged: true`, `hostPID`, `hostNetwork`), e imagens de contêiner com vulnerabilidades conhecidas. Grupos como [[g0139-teamtnt]] e [[g0032-lazarus-group]] têm histórico documentado de comprometer clusters Kubernetes mal configurados para cryptomining em escala e persistência em infraestrutura de pesquisa.
No Brasil, a adoção acelerada de Kubernetes — especialmente em fintechs, e-commerce e startups — superou a capacidade das equipes de segurança de acompanhar as especificidades de hardening desta plataforma. A maioria dos incidentes documentados envolveu clusters com API Server acessível públicamente sem autenticação, ou service accounts com permissões de `cluster-admin` atribuídas indevidamente.
## Pipeline de Coleta
```mermaid
graph TB
A["⚙️ Kubernetes API Server<br/>Control Plane do Cluster<br/>EKS · AKS · GKE · kubeadm"] --> B["📋 Audit Logs K8s<br/>pods/creaté · exec<br/>clusterrolebindings/creaté"]
A --> C["🔬 Runtime Security<br/>Falco · Tetragon eBPF<br/>Sysdig · Aqua Security"]
B --> D["📦 Aggregador de Logs<br/>CloudWatch · Fluentd<br/>Elastic Beats"]
C --> D
D --> E["📦 SIEM / Plataforma<br/>Sentinel · Splunk · Elastic"]
E --> F["🚨 Alertas de Cluster<br/>Pod privilegiado · RBAC abuse<br/>Cryptomining · Exec em pod"]
```
## Componentes de Dados
| Componente | ID | Descrição | Uso Principal |
|---|---|---|---|
| Pod Creation | [[dc0019-pod-creation\|DC0019]] | Criação de novo pod no cluster via API ou controlador | Detectar deploy de pods maliciosos para cryptomining ou persistência |
| Pod Modification | [[dc0030-pod-modification\|DC0030]] | Alterações em pods existentes: imagem, variáveis, volumes | Detectar injeção de código ou modificação de configuração de segurança |
| Pod Enumeration | [[dc0037-pod-enumeration\|DC0037]] | Listagem de pods, namespaces e recursos do cluster | Detectar reconhecimento interno após acesso inicial ao API Server |
## Como Coletar
### Kubernetes API Server Audit Logs
A fonte primária para DS0031 são os **Kubernetes Audit Logs** — registros detalhados de cada chamada à API do cluster:
```yaml
# Exemplo de política de auditoria (audit-policy.yaml)
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
# Registrar criação de pods em nível Request
- level: Request
resources:
- group: ""
resources: ["pods"]
verbs: ["creaté", "updaté", "patch", "delete"]
# Registrar acesso a secrets em nível Metadata
- level: Metadata
resources:
- group: ""
resources: ["secrets", "configmaps"]
```
**Eventos críticos a monitorar:**
- `pods/creaté` — especialmente em namespaces não padrão ou com imagens não aprovadas
- `pods/exec` — execução de comandos em pods existentes (T1609)
- `clusterrolebindings/creaté` — escalação de privilégios RBAC
- `namespaces/creaté` — criação de namespace para ocultar workloads maliciosos
- `serviceaccounts/creaté` com posterior `rolebinding`
### Serviços Gerenciados de Kubernetes
- **AWS EKS:** Control Plane Logs via CloudWatch Logs — habilitar `audit`, `api`, `authenticator`, `controllerManager`, `scheduler`.
- **Azure AKS:** Diagnósticos via Azure Monitor — `kube-audit` e `kube-audit-admin`.
- **GKE:** Cloud Audit Logs habilitados por padrão para operações de admin; Data Access Logs requerem configuração.
### Runtime Security
- **Falco:** Detecção em tempo real de comportamento anômalo em nível de syscall dentro de pods — regras para shell spawning, acesso a `/etc/shadow`, leitura de tokens de service account.
- **Tetragon (Cilium):** Observabilidade de segurança em nível de kernel com eBPF — contexto de processo enriquecido com metadados Kubernetes.
- **Sysdig Secure / Aqua Security / Prisma Cloud:** Soluções comerciais com runtime protection e detecção de anomalias para ambientes Kubernetes.
### Ferramentas de Postura (CSPM)
- **kube-bench:** Verifica conformidade do cluster com CIS Kubernetes Benchmark.
- **Trivy / Grype:** Escaneamento de vulnerabilidades em imagens e manifests.
- **Polaris / OPA Gatekeeper:** Validação de políticas de segurança em admission time.
## Técnicas Detectadas
| ID | Técnica | Como DS0031 Detecta |
|---|---|---|
| T1613 | [[t1613-container-and-resource-discovery\|T1613 — Container and Resource Discovery]] | Listagem massiva de pods, namespaces, services via API por service account não reconhecida |
| T1610 | [[t1610-deploy-container\|T1610 — Deploy Container]] | Criação de pod com imagem externa não aprovada, especialmente com `privileged: true` |
| T1609 | [[t1609-container-administration-command\|T1609 — Container Administration Command]] | Evento `pods/exec` em namespace de produção por usuário/SA sem autorização histórica |
| T1053.007 | [[t1053-007-container-orchestration-job\|T1053.007 — Container Orchestration Job]] | CronJob criado com schedule suspeito (ex: `* * * * *`) em namespace não monitorado |
| T1098.006 | [[t1098-006-additional-container-cluster-roles\|T1098.006 — Additional Container Cluster Roles]] | Criação de ClusterRoleBinding concedendo `cluster-admin` a service account de aplicação |
## Gaps de Cobertura Brasil/LATAM
**Audit logs do Kubernetes desabilitados por padrão:** Em instalações bare-metal com kubeadm e em alguns serviços gerenciados com configuração padrão, os audit logs do API Server não são habilitados. Sem este dado, nenhuma das técnicas acima é detectável via plano de controle — toda detecção recai sobre runtime (Falco), que muitos ambientes também não possuem.
**EKS Control Plane Logs não ativados:** A maioria dos clusters EKS no Brasil opera sem os Control Plane Logs habilitados no CloudWatch, apesar do custo irrisório. Esta é consistentemente uma das falhas mais graves encontradas em avaliações de segurança de startups e scale-ups brasileiras.
**RBAC excessivamente permissivo como norma:** Análises de clusters Kubernetes em empresas brasileiras revelam frequentemente service accounts com `cluster-admin`, namespaces sem Network Policies e pods com `hostPath` mounts irrestrito. Essa postura torna trivial a escalação de privilégios pós-comprometimento — mas a detecção via DS0031 ainda é válida se audit logs estiverem ativos.
**Falco ausente em produção:** O runtime security via Falco é quase inexistente em ambientes de produção brasileiros fora de grandes empresas tech. Sem detecção em nível de syscall, shells spawned dentro de pods comprometidos não geram alertas.
**Imagens sem escaneamento de vulnerabilidades:** Pipelines CI/CD brasileiros raramente integram escaneamento de imagens (Trivy, Grype). Imagens com CVEs críticos conhecidas chegam a produção sem alerta — DS0031 detecta a *execução*, mas não a *presença* da vulnerabilidade antes da exploração.
## Referências
- [[_detections|Central de Detecções RunkIntel]]
- [[dc0019-pod-creation|DC0019 — Pod Creation]]
- [[dc0030-pod-modification|DC0030 — Pod Modification]]
- [[dc0037-pod-enumeration|DC0037 — Pod Enumeration]]
- [[ds0030-instance|DS0030 — Instance]]
- [[ds0032-container|DS0032 — Container]]
- [MITRE ATT&CK — DS0031 Cluster](https://attack.mitre.org/datasources/DS0031/)
- [Kubernetes Audit Logging](https://kubernetes.io/docs/tasks/debug/debug-cluster/audit/)
- [Falco — Runtime Security](https://falco.org/)