02 - Attack Graph Modeling para Priorização
video: https://youtu.be/... no frontmatter da nota.Attack Graph Modeling para Priorização
Nota 02 da subseção 02 do capítulo 21, que transforma a lista plana de exposições em um modelo relacional de caminhos de ataque.
O foco é a análise de grafo como instrumento de priorização: expõe-se o que está no caminho mais curto entre o adversário e o ativo crítico.
Dialoga com a nota de Monitoramento de Superfície de Terceiros desta subseção, com o modelo ATT&CK do capítulo 20 e com a priorização de vulnerabilidades da seção 15.
1. Contexto e Posicionamento na Biblioteca
As listas de exposição produzidas pelo EASM têm uma limitação estrutural: elas são planas. Um bucket público, um servidor de salt desatualizado e um subdomínio órfão aparecem como três itens independentes, cada um com sua severidade, e a fila de correção os trata como tarefas que não se conhecem. A realidade operacional é diferente, porque exposições se combinam: a credencial vazada só importa porque o servidor que a aceita alcança o cofre de segredos, e o cofre alcança o domínio inteiro. O grafo de ataque é o modelo que captura exatamente essa combinação, representando ativos, credenciais e permissões como nós, e os possíveis movimentos do adversário como arestas.
Dentro da biblioteca, esta nota é o motor analítico do capítulo 21: ela recebe as descobertas das notas de EASM, recebe a modelagem de terceiros da subseção anterior e devolve uma ordenação de risco fundamentada em caminhos, e não em severidades isoladas. O conceito de attack path analysis, difundido por plataformas de security graph e por CNAPPs (Cloud Native Application Protection Platforms), responde à pergunta que o CTEM formula na etapa de priorização: se eu só puder corrigir três coisas esta semana, quais três quebram a maior quantidade de caminhos de ataque. O objetivo prático é capacitar o leitor a construir esse modelo em escala mínima viável, com banco de dados de grafo e consultas próprias, e a interpretar a saída das ferramentas comerciais sem aceitá-la como caixa-preta.
Vale fixar a distinção de vocabulário que o mercado usa de forma trocada. O attack graph é a estrutura completa, o conjunto de todos os nós e arestas possíveis do ambiente; o attack path é um caminho concreto dentro desse grafo, da entrada ao alvo; e a attack tree, anterior conceitualmente, é a decomposição lógica de um objetivo específico do adversário, construída à mão para um cenário. Esta nota trata das duas primeiras, porque são as que se sustentam por coleta contínua e se aplicam à priorização de exposições da operação corrente.
2. Anatomia do Grafo: Nós, Arestas e Semântica
Um grafo de ataque é composto por dois elementos, e a qualidade do modelo depende de escolher com cuidado o que vira nó e o que vira aresta. Nós representam entidades do ambiente que têm valor ou que habilitam movimento: ativos, identidades, credenciais, permissões, grupos, segredos e pontos de entrada. Arestas representam relações dirigidas que o adversário pode atravessar: uma credencial pode autenticar em um host, uma permissão pode ler um segredo, uma vulnerabilidade pode executar código em um serviço, uma relação de confiança pode delegar autoridade. Cada aresta deve ter uma justificativa técnica, porque aresta inventada é a principal fonte de grafos mentirosos.
| Tipo de nó | Exemplo concreto | Papel no caminho de ataque |
|---|---|---|
| Ativo exposto | Balanceador com serviço vulnerável na internet | Ponto de entrada potencial |
| Identidade | Conta de serviço do pipeline de deploy | Titular de permissões que o adversário assume |
| Credencial | Token de longa duração em variável de ambiente | Chave que atravessa arestas de autenticação |
| Permissão | Papel que lista e lê segredos no cofre | Habilitador de coleta e escalada |
| Segredo | Credencial do banco de dados no cofre | Ponte para a camada de dados |
| Ativo crítico | Banco com dados de clientes | Alvo final que define impacto |
| Tipo de aresta | Origem e destino | Justificativa técnica típica |
|---|---|---|
| Autenticação | Credencial para identidade em host | Senha, chave SSH, token válido para o mecanismo de login |
| Execução | Ativo exposto para execução no host | Vulnerabilidade com exploit, função serverless manipulável |
| Coleta | Permissão para segredo ou arquivo | Autorização de leitura concedida à identidade |
| Escalada | Identidade para identidade privilegiada | Papel assumível, trust policy permissiva |
| Confiança | Domínio ou conta para domínio ou conta | Federação, confiança de floresta, papel externo |
A semântica dirigida é o que separa grafo de ataque de diagrama de rede. A aresta aponta na direção do movimento possível do adversário, e o mesmo par de nós pode ter arestas nos dois sentidos com justificativas distintas. A modelagem madura anexa a cada aresta atributos que depois alimentam o custo do caminho: exigência de exploit conhecido, necessidade de credencial prévia, probabilidade de detecção e presença de MFA. Sem esses atributos, o grafo diz que o caminho existe; com eles, o grafo diz qual caminho o adversário real preferiria.
O modelo deve alcançar as fronteiras que a nota de terceiros desta subseção mapeia, porque caminhos realistas cruzam organizações. Um nó de ponto de entrada pode ser o servidor do fornecedor que termina em VPN para a sua rede, e a aresta que o liga ao bastião interno merece existir no grafo com justificativa contratual e técnica. O mesmo vale para a fronteira de nuvem: contas de diretório que federam para o provedor, agentes de sincronização de identidade e relações de confiança entre organizações são arestas que a coleta de IAM da própria nuvem entrega prontas, e ignorá-las produz um grafo bonito e otimista demais para ser útil.
3. Priorização por Impacto em Cadeia
A análise de caminhos inverte a lógica do inventário de achados. Em vez de perguntar quão grave é este item isolado, pergunta-se quantos caminhos do ponto de entrada ao ativo crítico passam por este item, e qual é o custo residual do caminho mais fácil depois de corrigi-lo. Um achado mediano que participa de todos os caminhos curtos para o banco de clientes vale mais que um achado crítico num servidor isolado sem rota para nada. Essa é a diferença entre priorizar por severidade e priorizar por topologia, e é a razão pela qual grafos descobrem itens que scanners ignoram: um papel com permissão excessiva não é vulnerabilidade, mas é aresta central do grafo.
O custo de um caminho é a soma dos custos de suas arestas, e cada organização calibra a escala com evidência de adversário real. Arestas com exploit público e sem detecção têm custo baixo; arestas que exigem credencial que só existe em memória de um host monitorado têm custo alto. A métrica central do modelo é a distância do adversário: quantas arestas separam a internet de cada ativo crítico pelo caminho mais barato. Ativos críticos a uma ou duas arestas de custo baixo são o topo da fila, e a correção de qualquer aresta desse caminho reduz o risco do conjunto, o que dá ao time de engenharia um argumento objetivo para sequenciar o trabalho.
A ligação com o adversário é o que transforma o grafo em instrumento de CTEM e não apenas de modelagem de risco. Se os relatórios de inteligência indicam que grupos de ransomware priorizam hipervisores e backups, as arestas que alcançam esses ativos recebem peso adicional; se a organização é alvo de espionagem industrial, os caminhos para repositórios de código e dados de pesquisa dominam a fila. O grafo sem inteligência prioriza risco genérico, o grafo com inteligência prioriza o ataque que a organização realmente está mais perto de sofrer.
O grafo também serve à detecção, e esse uso é frequentemente esquecido. Os nós que participam de caminhos críticos vigiados merecem tratamento de ativo de maior sensibilidade no SIEM: watchlist dedicada, severidade elevada para qualquer alerta que os envolva e regras de detecção específicas para as técnicas que compõem suas arestas. A tabela abaixo resume as métricas que sustentam a operação do modelo ao longo do tempo.
| Métrica | Pergunta que responde | Fonte de medição |
|---|---|---|
| Distância média do adversário | Quantas arestas de custo baixo separam a internet dos ativos críticos | Consulta de caminho no grafo |
| Caminhos para ativo crítico | Quantas rotas distintas alcançam cada alvo priorizado | Contagem de caminhos sob limite de custo |
| Arestas em caminhos críticos | Quantas relações fazem parte de pelo menos um caminho de alto risco | Interseção de arestas com caminhos |
| Caminhos novos desde a última coleta | O que a mudança de ambiente criou de rota inédita | Comparação entre versões do grafo |
| Correções que quebraram caminho | Proporção de correções com efeito topológico comprovado | Reexecução da consulta após correção |
| Idade da coleta | Há quanto tempo o grafo reflete a realidade do ambiente | Carimbo da última extração por fonte |
4. Ferramentas e Implementação
O mercado oferece três camadas de implementação, e a escolha depende de maturidade e orçamento. A primeira camada é fazer você mesmo com banco de dados de grafo, como Neo4j ou Amazon Neptune, alimentado por coletores de inventário de nuvem e de identidade, com consultas Cypher ou Gremlin para caminhos mais curtos. A segunda é a camada de CNAPP e de plataformas de security graph, que constroem o grafo automaticamente a partir de permissões de nuvem, vulnerabilidades e exposição, entregando caminhos prontos com alta taxa de descoberta automática. A terceira é a camada de plataformas dedicadas a attack path management, que complementam o grafo com simulação de exploração e validação de caminho.
| Camada | Exemplos | Ponto forte | Limite prático |
|---|---|---|---|
| Faça você mesmo com grafo | Neo4j, Neptune, coletor próprio de IAM | Controle total do modelo e do custo de aresta | Esforço de engenharia contínuo para manter fresco |
| CNAPP com security graph | Suites de proteção de nuvem das grandes plataformas | Grafo automático de nuvem, identidade e vulnerabilidade | Cobertura centrada em nuvem, modelo pouco customizável |
| Plataforma dedicada de caminhos | Ferramentas de attack path management | Simulação, validação e narrativa executiva | Custo de licença e mais um painel a operar |
A implementação mínima viável cabe em uma semana de engenharia para um ambiente de nuvem único: extrair relações de permissão com a API do provedor, carregar nós e arestas em um grafo, definir três ativos críticos e rodar a consulta de caminhos. O exemplo a seguir mostra a consulta central em Cypher, buscando qualquer caminho de custo limitado da internet ao banco de clientes, e o trecho de coleta que alimenta a aresta de coleta de segredos no AWS.
// Caminhos de ataque da internet ate o banco de clientes com custo total baixo
MATCH path = (internet:PontoEntrada)-[:AUTENTICA|EXECUTA|COLETA|ESCALA*1..5]->(alvo:AtivoCritico {nome: "banco-clientes"})
WHERE reduce(c = 0, rel IN relationships(path) | c + rel.custo) <= 4
RETURN path, reduce(c = 0, rel IN relationships(path) | c + rel.custo) AS custo_total
ORDER BY custo_total ASC
LIMIT 10
// Gargalos: identidades que aparecem no maior numero de caminhos criticos distintos
MATCH p = (:PontoEntrada)-[:AUTENTICA|EXECUTA|COLETA|ESCALA*1..5]->(:AtivoCritico)
UNWIND nodes(p) AS n
WITH n, count(DISTINCT p) AS caminhos
WHERE n:Identidade AND caminhos >= 3
RETURN n.nome AS identidade, caminhos
ORDER BY caminhos DESC
# Coleta de relacoes IAM que viram arestas de coleta e escalada no AWS
aws iam generate-credential-report
aws iam list-roles --output json > roles.json
aws iam list-role-policies --role-name svc-deploy --output json > policies.json
aws secretsmanager list-secrets --output json > secrets.json
A coleta precisa ser agendada como telemetria, não executada como projeto. Uma execução diária ou semanal, conforme a volatilidade do ambiente, versiona o grafo com carimbo de data e permite comparar caminhos entre versões, o que responde a duas perguntas operacionais: o que mudou no raio de ataque desde a última coleta e se a correção entregada realmente removeu o caminho esperado. Sem versionamento, a discussão sobre eficácia de correção fica sem evidência, e a equipe descobre regressões de permissão semanas depois, quando o caminho já foi reexplorado.
5. Exemplo de Grafo Descrito com Caminho Crítico
O exemplo a seguir descreve textualmente um grafo de ataque realista de uma organização com ambiente híbrido, e depois o caminho crítico que a análise revela.
Nos do grafo:
N1 internet (ponto de entrada)
N2 edge-vpn.empresa.com.br (aparelho de borda, CVE de pre-autenticacao)
N3 host-jump01 (10.10.5.20) (servidor de salto Linux)
N4 credencial svc-deploy (token de longa duracao no arquivo de ambiente)
N5 identidade svc-deploy na nuvem (identidade de pipeline)
N6 papel deploy-readonly (lista e le segredos do cofre)
N7 segredo db-clientes (string de conexao no cofre)
N8 banco-clientes (ativo critico)
Arestas (origem, destino, tipo, custo, justificativa):
N1 a N2 EXECUTA 1 CVE de pre-autenticacao com exploit publico
N2 a N3 AUTENTICA 1 mesma rede de gerencia, chave autorizada no bastiao
N3 a N4 COLETA 1 token exposto em variavel de ambiente legivel
N4 a N5 AUTENTICA 1 token valido para o provedor de nuvem
N5 a N6 ESCALA 1 papel vinculado a identidade
N6 a N7 COLETA 1 permissao de leitura do cofre
N7 a N8 AUTENTICA 1 string de conexao valida para o banco
Caminho critico: N1 a N8 com custo 7 e nenhuma aresta com MFA ou deteccao dedicada.
A leitura do caminho crítico produz a fila de correção em ordem de quebra de caminho. Revogar o token de longa duração do N4 e substituí-lo por credencial efêmera de curta vida quebra o grafo em dois e reduz a distância do adversário ao banco para infinito, mesmo sem tocar no aparelho de borda; corrigir apenas a CVE do N2 deixa o caminho intacto por outra porta de entrada. Essa ordem é o oposto do que a lista plana de vulnerabilidades sugeriria, e é exatamente por isso que a modelagem de grafo existe: ela prioriza pela economia do adversário, não pela tabela de severidades.
O plano de correção derivado do exemplo, em ordem de impacto sobre a topologia, fica assim:
- Substituir o token de longa duração por credencial efêmera assumida sob condição de sessão, o que elimina as arestas N4 a N5 e parte o caminho ao meio.
- Isolar a rede de gerência do bastião, exigindo MFA na aresta N2 a N3 e elevando o custo da travessia.
- Corrigir a CVE do aparelho de borda, reduzindo a probabilidade da aresta de entrada, mas sem presumir que a entrada desapareceu.
- Restringir o papel do cofre a leitura por segredo específico, diminuindo o alcance da aresta N6 a N7 caso a identidade seja assumida.
6. Erros Comuns e Pontos de Atenção
- Modelar só vulnerabilidades e esquecer identidade: a maioria dos caminhos modernos atravessa credenciais e permissões, e um grafo sem IAM retrata o ataque de 2010, não o de hoje.
- Arestas sem justificativa técnica: aresta que ninguém consegue explicar com evidência de configuração corrompe a credibilidade do modelo inteiro; toda aresta precisa de fonte verificável.
- Grafo estático em ambiente que muda diariamente: o modelo precisa ser regenerado por coleta contínua, porque caminho válido na segunda-feira pode não existir na quinta, e o contrário também.
- Ignorar o custo das arestas: sem atributos de custo, todos os caminhos de comprimento cinco valem o mesmo, e a priorização perde a relação com o adversário real.
- Buscar completude absoluta antes de operar: o grafo dos vinte ativos críticos da organização já muda decisões; esperar o modelo cobrir tudo é forma elegante de nunca entregar valor.
- Tratar a saída da ferramenta comercial como verdade final: as plataformas inferem relações e erram com confiança; a validação de caminho com o dono do ativo faz parte do ciclo.
- Modelar apenas um provedor de nuvem e declarar vitória: o caminho real costuma cruzar o datacenter, a nuvem e o SaaS de identidade, e o grafo parcial subestima exatamente os caminhos que cruzam fronteiras.
- Excluir fornecedores e relações de terceiros do modelo: a aresta que sai do ambiente do parceiro e entra na sua rede é, nas campanhas de supply chain, a primeira aresta do caminho crítico.
- Publicar o grafo completo sem controle de acesso: o modelo descreve o melhor roteiro de ataque contra a organização, e sua distribuição segue o mesmo cuidado de TLP aplicado a inteligência sensível.
7. Integração com o Restante da Biblioteca
As conexões estruturais desta nota com o restante da biblioteca seguem quatro caminhos:
- Capítulo 05: o escore de priorização por exposição e explorabilidade ganha a dimensão topológica, e a análise de links do capítulo é a técnica que esta nota industrializa sobre infraestrutura própria.
- Capítulo 20: as técnicas ATT&CK podem anotar as arestas, alinhando o grafo ao vocabulário de detecção e ao heatmap de cobertura da seção 15.
- Seção 15: o controle INT.5 orquestra a resposta automatizada sobre os achados de maior centralidade, e o grupo INS fornece o inventário que vira nó do grafo.
- Capítulo 21: a subseção de cloud fornece as fontes de coleta de permissão e configuração, e a subseção de integração consome a fila priorizada em workflows de remediação.
A métrica que fecha o ciclo é a distância média do adversário aos ativos críticos, medida no caminho mais barato e acompanhada mês a mês. A queda dessa distância é o efeito do crescimento da superfície ou do acúmulo de permissões, e a subida é o efeito cumulativo das correções priorizadas pelo grafo. Quando essa métrica entra no reporte executivo ao lado do dwell time, a organização passa a gerenciar exposição pela geometria do ataque, que é a forma como o adversário a experimenta.