Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

01 - Técnicas de Ataque a Kubernetes e CI-CD

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

Técnicas de Ataque a Kubernetes e CI-CD

Nota do capítulo 20, dedicado às atualizações do MITRE ATT&CK. Aborda a
consolidação da cobertura de Kubernetes e CI/CD que culminou na v19.2 de agosto de
2026, a primeira release ágil do ATT&CK, centrada em grupos e softwares de
ataques a pipelines. Dialoga com as notas de Hunting em Containers e Kubernetes e
com os controles PRT.4 e DAT.4 do Framework CTH.

1. Contexto e Posicionamento na Biblioteca

A cobertura de Kubernetes e de CI/CD no ATT&CK foi construída em camadas ao longo de várias versões, e a janela da v19.2, publicada em agosto de 2026, é o ponto em que essa cobertura ganhou contexto de ameaça atual. As técnicas de execução em pods, abuso de service accounts e envenenamento de pipeline já estavam catalogadas, com destaques para as adições da v18, como Poisoned Pipeline Execution (T1677) e Container CLI/API (T1059.013). O que a v19.2 trouxe foi a primeira release ágil do framework, atualizando grupos e softwares para capturar a atividade de worms de supply chain que atacam diretamente os fluxos de CI/CD de desenvolvedores.

Para a biblioteca, esta nota conecta o capítulo de atualizações do ATT&CK à prática de proteção de plataformas de execução. Ela alimenta a nota de Hunting em Containers e Kubernetes do capítulo 8, que detalha as hipóteses de caça, e dialoga com PRT.4, que trata de monitoramento de containers e cloud-native, e com DAT.4, que centraliza logs no SIEM. O leitor deve sair da nota entendendo quais técnicas já existiam, o que a v19.2 adicionou em termos de atores e softwares, e como mapear detecção concreta para as técnicas novas.

2. A v19.2 e o Modelo de Releases Ágeis

A v19.2 foi a primeira release ágil do ATT&CK, um modelo de escopo estreito que publica atualizações direcionadas de grupos, softwares e campanhas fora do cadência semestral, quando atividade de ameaça relevante emerge entre versões programadas. Nessa release, o framework adicionou ShinyHunters (G1057), grupo criminal ativo desde pelo menos 2019 que rouba credenciais e dados pessoais para revenda ou extorsão, associado a relatos públicos ao ecossistema conhecido como The Com e a colaborações descritas como Scattered Lapsus Hunters. Também entrou TeamPCP (G1056), grupo cloud-native motivado financeiramente que migrou de ransomware e roubo de criptomoedas para roubo de credenciais orientado a worms e ataques de supply chain de software contra workflows de CI/CD.

No plano de softwares, a v19.2 registrou o ecossistema dos worms associados ao TeamPCP: Shai-Hulud (S9008), Mini Shai-Hulud (S9043), CanisterWorm (S9042) e TeamPCP Cloud Stealer (S9041). Somou-se ainda Kali365 (S9044), um kit de phishing como serviço que usa iscas de copiar e colar, gera códigos de dispositivo sob demanda e rouba tokens OAuth e cookies de sessão por meio de adversary-in-the-middle. A mensagem estrutural é clara: o ATT&CK reconheceu oficialmente que pipelines de CI/CD e ambientes de desenvolvedor se tornaram alvo primário, e que a cadeia de propagação entre pacotes e repositórios é um vetor de escala industrial.

3. Técnicas de Kubernetes no Corpo do ATT&CK

A matriz de Containers do Enterprise concentra as técnicas de Kubernetes, e a combinação delas descreve o ciclo clássico de comprometimento de cluster, do acesso administrativo à fuga para o host. As técnicas abaixo formam o vocabulário mínimo para mapear telemetria de plano de controle, e todas podem ser alimentadas pelo log de auditoria do kube-apiserver, recurso detalhado na seção de telemetria.

Técnica Identificador Comportamento típico do adversário
Container Administration Command T1609 Execução de comandos via kubectl exec ou API do cluster
Container CLI/API T1059.013 Uso de CLI e API de containers como interpretador de comandos
Deploy Container T1610 Criação de pods ou containers para execução de carga
Escape to Host T1611 Fuga do container para execução no nó
Container and Resource Discovery T1613 Enumeração de pods, secrets, nodes e namespaces
Container Orchestration Job T1053.007 Criação de CronJobs para persistência programada
Additional Container Cluster Roles T1098.006 Criação ou alteração de ClusterRoles para ampliar acesso
Unsecured Credentials: Container API T1552.007 Coleta de credenciais expostas via API de container

O abuso de service accounts se materializa nesse vocabulário por dois caminhos complementares. O primeiro é o acesso ao token da service account montado dentro do pod, geralmente lido de arquivos no filesystem do container, que alimenta a enumeração de T1613 e a execução de T1609 com a identidade da conta do pod. O segundo é a manipulação de RBAC via T1098.006, em que o adversário cria papéis de cluster adicionais para o próprio usuário ou conta, perpetuando o acesso mesmo após a troca de credenciais iniciais. Detecção de ambos depende de correlacionar quem chamou a API, com qual verbo e sobre qual recurso, informação que só existe em auditoria de plano de controle.

4. CI/CD, Supply Chain e a Cadeia dos Worms

No recorte de CI/CD, a técnica central é Poisoned Pipeline Execution (T1677), introduzida na v18, que descreve o adversário manipulando pipelines de build e deploy para executar código seu em contexto privilegiado. Ela se combina com Build Image on Host (T1612), em que a imagem é construída no próprio host para evadir controles, e com padrões gerais de supply chain catalogados em Compromise Software Dependencies e Development Tools. A cadeia dos worms de 2025 e 2026, registrada na v19.2, ilustra a composição: pacote malicioso publicado em registro público, executado em máquina de desenvolvedor ou runner de CI, que varre o ambiente em busca de segredos, tokens e workflows, e se autopropaga publicando novas versões infectadas.

A tabela abaixo traduz a cadeia do worm em técnicas ATT&CK, servindo de modelo para mapear campanhas futuras do mesmo gênero. O exercício de mapeamento usa os softwares novos como âncora de inteligência e as técnicas como âncora de detecção.

Etapa da cadeia Comportamento observado Mapeamento ATT&CK
Entrega Publicação de pacote troyano em registro público Compromise Software Dependencies e Development Tools
Execução no runner Script pós-instalação executa no ambiente de build Poisoned Pipeline Execution (T1677)
Coleta Varredura de variáveis, arquivos de config e tokens Unsecured Credentials (T1552); Steal Application Access Token (T1528)
Persistência no repo Alteração de workflows para reinfecção Poisoned Pipeline Execution (T1677)
Exfiltração Publicação de segredos em repositório ou canal externo Exfiltration Over Web Service (T1567)
Movimentação em cloud Uso de tokens roubados para acesso a recursos cloud Valid Accounts (T1078); Serverless Execution (T1648)

5. Telemetria Necessária

Sem telemetria de plano de controle, quase nada do recorte Kubernetes é detectável. O log de auditoria do kube-apiserver é a fonte primária, com eventos de verbos get, list, create, update e delete sobre pods, secrets, roles e clusterroles, e deve ser enviado ao SIEM com retenção compatível com caças. Complementam o quadro os logs de kubelet e de runtime no nó, a telemetria de CI, incluindo logs de workflow, registros de jobs e auditoria de alterações em repositórios, e os logs de registro de imagens, que capturam push e pull de artefatos. A tabela abaixo organiza as fontes por técnica e o componente de dados equivalente no modelo novo do ATT&CK.

Fonte de log Componente de dados típico Técnicas alimentadas
Kube-apiserver audit Pod Modification; Pod Metadata; Cluster Modification T1609, T1610, T1613, T1098.006
Logs de kubelet e runtime Container Metadata; Process Creation no nó T1611, T1059.013
CI workflow e git audit Command Execution; File Metadata T1677, T1552
Registro de imagens Image Metadata; Image Modification T1612, cadeia de supply chain
Cloud audit do provedor Cloud Service Metadata; Instance Metadata T1528, T1648, uso de tokens roubados

6. Exemplo de Mapeamento de Detecção para Técnica Nova

O exemplo seguinte mapeia uma detecção concreta para o abuso de service accounts via manipulação de RBAC, técnica T1098.006. O evento de auditoria Kubernetes relevante é a criação ou alteração de ClusterRoleBinding concedendo o verbo escalonado a uma conta que nunca o teve. O trecho abaixo mostra, simplificado, a estrutura de um evento de auditoria do kube-apiserver correspondente.

{
  "kind": "Event",
  "apiVersion": "audit.k8s.io/v1",
  "stage": "ResponseComplete",
  "verb": "create",
  "objectRef": {
    "resource": "clusterrolebindings",
    "name": "maintenance-admin",
    "apiGroup": "rbac.authorization.k8s.io"
  },
  "requestObject": {
    "roleRef": { "kind": "ClusterRole", "name": "cluster-admin" },
    "subjects": [
      { "kind": "ServiceAccount", "name": "ci-deployer",
        "namespace": "build" }
    ]
  },
  "user": { "username": "system:serviceaccount:build:ci-deployer" }
}

O ponto crítico do evento é a autoelevação: a própria service account do ambiente de build concede a si mesma o papel de cluster-admin, padrão típico de T1098.006 e também sinal para a cadeia de pipeline poisoning, já que runners de CI raramente deveriam administrar RBAC global. A consulta abaixo, em KQL sobre os logs de auditoria ingestados no SIEM, materializa esse raciocínio e pode virar regra de alerta ou caça agendada.

KubeAuditLogs
| where TimeGenerated > ago(1d)
| where Verb in ("create", "update", "patch")
| where ObjectRef_resource == "clusterrolebindings"
| extend Subject = tostring(requestObject.subjects[0].name),
         SubjectKind = tostring(requestObject.subjects[0].kind),
         RoleRef = tostring(requestObject.roleRef.name),
         Caller = tostring(user.username)
| where RoleRef has "admin" and SubjectKind == "ServiceAccount"
| where Caller != "system:kube-controller-manager"
| project TimeGenerated, ClusterName, Caller, Verb, ObjectRef_name,
          Subject, RoleRef
| order by TimeGenerated desc

Para a camada de CI, a detecção complementar observa o runner: execução de script pós-instalação de pacote iniciando processos de rede ou leitura de arquivos de credenciais no agente de build, mapeando T1677 e T1552. A composição das duas camadas, plano de controle e pipeline, é o que fecha o ciclo de detecção descrito pela cadeia de softwares da v19.2, e qualquer uma delas isolada deixa lacuna explorável.

O esqueleto Sigma abaixo modela o sinal de pipeline poisoning no runner, correlacionando a execução de script pós-instalação do gerenciador de pacotes com acesso a arquivos de credenciais e a conexões de saída incomuns, comportamentos que juntos caracterizam a varredura de segredos descrita pela cadeia do worm.

title: Script pos-instalacao com acesso a segredos em runner de CI
logsource:
    product: linux
    service: auditd
detection:
    process:
        comm: 'node'
        exe|endswith: '/npm/npm-cli.js'
    secret_read:
        path|startswith:
            - '/home/runner/.config'
            - '/home/runner/.kube'
    condition: process and secret_read
tags:
    - attack.execution
    - attack.t1677
    - attack.credential_access
    - attack.t1552

7. Erros Comuns e Pontos de Atenção

O erro mais comum é presumir que a v19.2 introduziu técnicas novas de Kubernetes, quando ela introduziu contexto de ameaça sobre técnicas já catalogadas; citar a v19.2 como origem de T1611, por exemplo, é erro factual que desacredita o inventário em auditoria. O segundo erro é auditar apenas o plano de controle e ignorar o nó, porque Escape to Host e abuso de runtime frequentemente deixam poucos rastros na API e muitos no host. O terceiro erro é tratar o token de service account como segredo estático e não monitorar seu uso anômalo por origem, recurso e horário, perdendo o sinal de abuso depois que a conta inicial já foi trocada.

Cuidado também com o ruído de mudança legítima: pipelines de CD criam e atualizam recursos de RBAC constantemente em ambientes bem administrados, então a detecção precisa ancorar em autoelevação e em papéis administrativos concedidos a contas de automação, e não em qualquer alteração de binding. Por fim, registre no inventário qual versão do ATT&CK foi usada no mapeamento da camada de containers, porque a área evolui rápido entre releases e a rastreabilidade evita retrabalho na próxima migração.

8. Integração com o Restante da Biblioteca

Esta nota opera o recorte de containers e CI/CD dentro do capítulo de atualizações e se apoia em três notas da biblioteca para aprofundamento: Hunting em Containers e Kubernetes, do capítulo 8, que transforma as técnicas em hipóteses de caça com consultas prontas, PRT.4, que define o monitoramento cloud-native no Framework CTH, e a nota de Integração CTI-TH-EASM em seu recorte de superfície de execução. As softwares e grupos da v19.2, especialmente Shai-Hulud e TeamPCP, entram nas camadas de priorização do MAP.3.

Para o estudo integrado, o exercício recomendado é mapear o ambiente real da organização contra a tabela de telemetria da seção 5, marcando quais fontes existem hoje, quais precisam ser habilitadas e quais técnicas ficam cegas sem elas. Esse diagnóstico alimenta DAT.1 e DAT.4 e vira roadmap de coleta no formato discutido pelo capítulo 2 da biblioteca.