03 - Pontuação de Qualidade (Confiabilidade, Confiança, Idade)
video: https://youtu.be/... no frontmatter da nota.Pontuação de Qualidade (Confiabilidade, Confiança, Idade)
Terceira nota do subcapítulo de IOCs no capítulo 03 (Indicadores de Ameaças: IOC, IOA, IOB, IOE).
Compara confiabilidade de fonte, confiança na afirmação e decaimento por idade, e monta o score composto com exemplo numérico.
Implementa os conceitos com o modelo de decaimento do MISP e conecta com o ciclo de vida e a contextualização.
1. Contexto e Posicionamento na Biblioteca
Com milhares de indicadores chegando de dezenas de fontes, a pergunta operacional imediata é em qual deles gastar tempo de triagem e qual pode virar bloqueio automático sem dano. A resposta exige uma pontuação de qualidade: uma medida comparável, preferencialmente de 0 a 100, que resume a probabilidade de o indicador ser verdadeiro, acionável e ainda atual. Sem pontuação, o SOC opera com fila FIFO de lixo e com bloqueios automáticos baseados em fé.
Esta nota decompõe a qualidade em três componentes que se confundem na prática e que precisam ser separados: a confiabilidade da fonte, a confiança na afirmação específica e a idade do indicador, que corrói os dois primeiros com o tempo. O ciclo de vida forneceu os carimbos de tempo; esta nota transforma esses carimbos em números; a contextualização usa o resultado como insumo do gate de publicação. A nota evita fórmulas decorativas: cada fórmula apresentada tem um cálculo numérico completo e um lugar na operação.
2. Três Conceitos que Não São a Mesma Coisa
O erro conceitual mais comum é tratar confiabilidade, confiança e credibilidade como sinônimos. A confiabilidade é propriedade da fonte, e se refere ao histórico de acertos daquela origem em geral. A confiança é propriedade da afirmação específica, e mede quão sólido é o vínculo entre aquele indicador e a malícia alegada, considerando evidência e corroboração. A credibilidade, na tradição militar da escala Admiralty, é a avaliação da informação em si, independente da fonte. A tabela separa os conceitos e mostra onde cada um é registrado.
| Conceito | Pergunta que responde | Registro típico | Variação no tempo |
|---|---|---|---|
| Confiabilidade da fonte | Esta fonte costuma acertar? | Tag de taxonomia por fonte | Lenta, revisada por histórico |
| Credibilidade da informação | Esta informação em si é sólida? | Avaliação do analista | Baixa, definida na criação |
| Confiança na afirmação | Quanto acredito neste vínculo específico? | Campo confidence de 0 a 100 | Sobe com corroboração |
| Idade | Quanto tempo desde a observação? | Carimbo de primeiro visto | Cresce continuamente |
| Score composto | Vale acionar ou bloquear agora? | Campo numérico de 0 a 100 | Decai com a idade |
3. Confiabilidade e Credibilidade da Fonte
A escala Admiralty, herdada da inteligência militar e amplamente usada em CTI, avalia a fonte com letras de A a F e a informação com números de 1 a 6. A combinação B2, por exemplo, significa fonte usualmente confiável e informação provavelmente verdadeira. O valor prático da escala não está na precisão pseudoestatística, e sim em forçar o analista a declarar um julgamento explícito e rastreável no momento da ingestão, em vez de confiança implícita que ninguém consegue auditar depois.
| Nota da fonte | Significado | Nota da informação | Significado |
|---|---|---|---|
| A | Completamente confiável | 1 | Confirmada por outras fontes |
| B | Usualmente confiável | 2 | Provavelmente verdadeira |
| C | Fairmente confiável | 3 | Possivelmente verdadeira |
| D | Normalmente não confiável | 4 | Duvidosa |
| E | Não confiável | 5 | Improvável |
| F | Confiabilidade impossível de julgar | 6 | Veracidade impossível de julgar |
A conversão para números facilita o cálculo do score composto: A vale 100, B vale 80, C vale 60, D vale 40, E vale 20 e F vale 50, com o F no meio porque a ausência de julgamento não deve punir nem premiar. No MISP, a taxonomia admiralty-scale materializa a avaliação como tag no evento, por exemplo admiralty-scale:source-reliability=b, e o histórico de falsos positivos da fonte deve reavaliar a letra em revisões trimestrais, o que transforma a confiabilidade em métrica viva e não em etiqueta eterna.
4. Confiança na Afirmação e Corroboração
A confiança da afirmação começa com a avaliação da fonte e sobe com corroboração independente, quando outra fonte, sem relação com a primeira, observa o mesmo indicador com a mesma semântica. O critério de independência é crítico: cinco feeds que republisham o mesmo fornecedor não são cinco confirmações, são uma. Na prática, rastrear a origem raiz de cada feed evita essa ilusão de consenso.
Uma forma simples e operacional de combinar corroboração é a média ponderada entre o peso da fonte e um bônus de corroboração. Com peso de 70 por cento para a confiabilidade convertida em número, 20 por cento para a credibilidade da informação e bônus de 10 pontos por fonte independente, com teto de duas confirmações, o resultado fica entre 0 e 100 com margem para o bônus. Um indicador de fonte B (80), informação 2 (80) e uma corroboração independente soma 56, mais 16, mais 10, e alcança 82 antes do decaimento. A mesma afirmação com segunda corroboração independente alcança 92, e o teto de 100 protege o cálculo de casos perfeitos.
A tabela abaixo demonstra o cálculo em cenários variados, usando a conversão de letras para números da seção anterior. A leitura por linhas mostra como a mesma informação muda de peso conforme a fonte e a corroboração, justificando políticas de bloqueio diferentes para casos que o olho desatento consideraria iguais.
| Fonte | Informação | Corroborações | Cálculo | Score inicial |
|---|---|---|---|---|
| A | 1 | 2 | 70 + 20 + 20 = 110, limitado a 100 | 100 |
| B | 2 | 1 | 56 + 16 + 10 = 82 | 82 |
| C | 3 | 0 | 42 + 12 + 0 = 54 | 54 |
| D | 4 | 1 | 28 + 8 + 10 = 46 | 46 |
O exemplo deixa claro que fonte D com corroboração isolada ainda pontua menos que fonte C silenciosa, o que é intencional: bônus corrige, mas não resgata origem fraca.
5. Decaimento por Idade
Indicadores envelhecem, e o decaimento por idade modela essa corrosão de forma explícita. O modelo de decaimento do MISP, publicado como refinamento do artigo sobre decaying of indicators, usa uma curva polinomial com quatro parâmetros: o base_score, que é o score no instante da criação; o lifetime, em dias, após o qual o indicador expira; o decay_speed, que controla a concavidade da queda; e o threshold, o piso abaixo do qual o indicador sai da operação. A fórmula do score em função da idade t em dias é a seguinte.
score(t) = base_score * (1 - t/lifetime)^(1/decay_speed)
Um exemplo completo fixa a intuição. Considere um domínio de C2 com base_score 80, lifetime de 30 dias, decay_speed 3 e threshold 30. No dia 10, o score é 80 multiplicado por (1 - 10/30) elevado a 1/3, ou seja, aproximadamente 69,9. No dia 20, cai para aproximadamente 55,5. No dia 28, está em cerca de 37, e cruza o threshold de 30 no dia 28,4, quando a plataforma deixa de exportá-lo. Repare que a curva não é uma reta: quanto maior o decay_speed, mais lenta a queda inicial e mais abrupta a queda final, o que é adequado para indicadores que permanecem bons até morrerem de golpe só.
| Parâmetro | Papel na curva | Valor típico por tipo |
|---|---|---|
| base_score | Ponto de partida da curva | 60 a 95, conforme fonte e corroboração |
| lifetime | Vida útil total em dias | 7 dias para IP de C2; 180 ou mais para hash |
| decay_speed | Formato da queda | 2 a 5 para rede; maior deixa queda tardia |
| threshold | Piso de exportação | 25 a 35 em operações comuns |
A linha do tempo completa do exemplo deixa a curva visível e serve de referência para conferir implementações próprias.
| Idade em dias | Cálculo resumido | Score resultante | Situação operacional |
|---|---|---|---|
| 0 | 80 vezes 1 | 80,0 | Publicado para detecção ativa |
| 5 | 80 vezes 0,833 elevado a 1/3 | 75,3 | Detecção ativa e bloqueio |
| 10 | 80 vezes 0,667 elevado a 1/3 | 69,9 | Detecção ativa e bloqueio |
| 15 | 80 vezes 0,500 elevado a 1/3 | 63,5 | Detecção ativa |
| 20 | 80 vezes 0,333 elevado a 1/3 | 55,5 | Detecção ativa |
| 25 | 80 vezes 0,167 elevado a 1/3 | 44,0 | Detecção com prioridade reduzida |
| 28 | 80 vezes 0,067 elevado a 1/3 | 32,4 | Próximo do threshold |
| 28,4 | cruza o piso de 30 | 30,0 | Sai da exportação, vai a arquivo |
A escolha do formato da curva é uma decisão de política, não um detalhe matemático. A tabela compara três formatos usados no mercado e quando cada um é adequado, evitando que a equipe copie a curva polinomial sem pensar no comportamento desejado.
| Formato | Comportamento | Adequado para |
|---|---|---|
| Degrau (TTL fixo) | Score integral até expirar de uma vez | Hashes e artefatos estáveis |
| Linear | Queda constante desde a criação | Ambientes que preferem simplicidade auditável |
| Polinomial | Queda lenta no início e abrupta no fim | Indicadores de rede que permanecem bons até morrer |
A curva polinomial do MISP favorece o caso mais comum em CTI: o indicador de infraestrutura continua acionável durante a maior parte da vida útil e deixa de ser exportado de forma decidida, sem longo período de meia-confiança que gera alertas ambíguos.
6. Taxa de Falsos Positivos no Score
O terceiro componente empírico do score é a taxa de falsos positivos observada, que corrige a teoria com a realidade do ambiente. A taxa calcula-se dividindo o número de acionamentos julgados falsos positivos pelo total de acionamentos da fonte ou do tipo no período. Uma fonte com 12 falsos positivos em 4000 acionamentos mensais opera com taxa de 0,3 por cento, um número saudável para detecção ativa; a mesma métrica em 12 por 600, ou 2 por cento, é sinal de que a fonte deve sair de bloqueio automático e voltar para alerta ou monitoração.
A política recomendada usa a taxa como freio em três patamares. Abaixo de 0,5 por cento, o tipo pode alimentar bloqueio automático. Entre 0,5 e 2 por cento, apenas alerta com enriquecimento. Acima de 2 por cento, o tipo sai de detecção ativa até revisão da fonte. O cálculo deve ser segmentado por fonte e por tipo de indicador, porque um feed pode ser excelente em hashes e péssimo em IPs, e a média geral esconderia exatamente a parte que machuca o SOC.
Um exemplo segmentado demonstra por que a média esconde o problema. Uma fonte que entrega 3000 hashes com 6 falsos positivos e 1000 IPs com 30 falsos positivos opera com taxa geral de 0,9 por cento, aparentemente aceitável. Segmentada, a taxa de hashes é de 0,2 por cento, apta a bloqueio, enquanto a de IPs é de 3 por cento, motivo de remoção imediata da detecção ativa. Sem a segmentação, o SOC teria mantido o pior segmento em produção baseado na virtude do melhor.
| Segmento da mesma fonte | Acionamentos | Falsos positivos | Taxa | Política resultante |
|---|---|---|---|---|
| Hashes | 3000 | 6 | 0,2 por cento | Bloqueio automático permitido |
| IPs | 1000 | 30 | 3,0 por cento | Remoção da detecção ativa |
| Total agregado | 4000 | 36 | 0,9 por cento | Média enganosa, não usar |
7. Implementação em MISP
O MISP materializa tudo isso no recurso de modelos de decaimento (decaying models), disponível a partir da versão 2.4.114. Cada modelo define os parâmetros da curva e os tipos de atributo aos quais se aplica, e a política de score pode ponderar taxonomias na composição do base_score. O fragmento abaixo mostra um modelo ilustrativo para indicadores de rede voláteis, com o base_score configurável por componente.
{
"DecayingModel": {
"name": "Rede volatil com decaimento acelerado",
"description": "IPs, dominios e URLs com queda rapida apos a criacao",
"version": "1",
"parameters": {
"lifetime": 15,
"decay_speed": 3,
"threshold": 30,
"default_base_score": 80,
"base_score_config": {
"components": ["admiralty", "corroboration", "fp_history"],
"weights": {"admiralty": 0.7, "corroboration": 0.2, "fp_history": 0.1}
},
"polynomial": "polynomial"
},
"attribute_types": ["ip-src", "ip-dst", "domain", "url"]
}
}
Na operação, o fluxo recomendado é: criar o modelo, mapear a taxonomia admiralty-scale para o componente de confiabilidade, exportar apenas atributos acima do threshold e revisar mensalmente a curva contra a taxa de falsos positivos medida. A interface do MISP permite ajustar os parâmetros por modelo sem tocar no código, e o efeito do ajuste deve ser comparado com métricas de acionamento das quatro semanas anteriores, para que a mudança de política seja uma decisão medida e não uma impressão.
Para equipes que preferem governar o score fora da plataforma, o mesmo cálculo pode rodar no pipeline de exportação, com PyMISP lendo os atributos e o modelo aplicado em código próprio. Essa via tem um custo político importante: o score exibido no MISP deixa de ser o score efetivo em produção, e as duas verdades divergentes geram confusão em auditoria. A recomendação é escolher um único local autoritativo para o cálculo, e o modelo nativo tem a vantagem de manter score, idade e exportação no mesmo lugar.
8. Erros Comuns e Pontos de Atenção
A pontuação falha de formas previsíveis, e cada falha abaixo tem correção conhecida e barata quando adotada desde o desenho do processo.
- Usar score como sinônimo de severidade da ameaça, misturando a qualidade do indicador com o dano potencial; são decisões diferentes, uma sobre crer e outra sobre priorizar.
- Contar republicações como corroboração independente, inflando confiança artificialmente; correção: rastrear a origem raiz de cada feed antes de somar confirmações.
- Aplicar uma única curva de decaimento a todos os tipos, expirando hashes bons e eternizando IPs ruins; correção: modelos por classe de indicador, como no MISP.
- Calibrar base_score por impressão, sem histórico de acionamento; correção: usar as taxas de falsos positivos reais como componente explícito do cálculo.
- Deixar o score parar de ser recalculado após a criação, virando etiqueta estática; correção: rotina agendada que recalcula score e threshold diariamente.
- Penalizar fontes E ou F com exclusão imediata, perdendo o ocasional exclusivo de fontes fracas; correção: usar detecção silenciosa e hunt para material de baixa confiança.
9. Integração com o Restante da Biblioteca
O score composto desta nota é o número que a nota de contextualização exige como campo mínimo e que as plataformas aplicam como filtro de exportação. O decaimento é a implementação numérica da política de TTL do ciclo de vida, e a taxa de falsos positivos é o insumo central da avaliação de fontes do compartilhamento e da governança do PLT.4 na seção 15. No SOC, o score alimenta a priorização da fila de triagem e define a fronteira entre bloqueio automático e alerta, decisão que o controle AUT.3 depende para não automatizar erro. Um exercício de implantação recomendado é escolher um único tipo, o IP de C2, e rodar o ciclo completo de pontuação por um mês: definir base_score por fonte, medir falsos positivos semanais, ajustar decay_speed uma única vez no meio do período e comparar o volume de alertas expirados antes e depois. A experiência numérica conquistada nesse piloto estreito vale mais que qualquer política genérica aplicada a todos os tipos de uma vez.