Capítulo 29 — Segurança de TO, IoT e sistemas ciberfísicos: medição
Mapa da aula
Aula 29 publicada. Mapa, exemplo, EX085.
flowchart TD
N0["29.1 A cobertura precisa de um plano"]
N1["29.2 Atividade versus resultado"]
N2["29.3 Honestidade dos detectores"]
N3["Nota prática"]
N4["29.1b Amostragem e comparações entre coortes"]
N5["Nota de campo — linhas de metodologia nos gráficos"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX085"]
Desenho lógico
flowchart LR
N0["29.1 A cobertura precisa de um plano"]
N1["29.2 Atividade versus resultado"]
N2["29.3 Honestidade dos detectores"]
N3["Nota prática"]
N4["29.1b Amostragem e comparações entre coortes"]
N5["Nota de campo — linhas de metodologia nos gráficos"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX085"]
[29.1 A cobertura precisa de um plano]
|
v
[29.2 Atividade versus resultado]
|
v
[29.3 Honestidade dos detectores]
|
v
[Nota prática]
|
v
[29.1b Amostragem e comparações entre coortes]
|
v
[Nota de campo — linhas de metodologia nos gráficos]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX085]
Objetivos de aprendizagem
Você vai (1) definir a cobertura com um denominador; (2) separar as métricas de atividade das métricas de resultado; (3) avaliar detectores por classe de ataque e com intervalos (lições de Urbina/Giraldo).
29.1 A cobertura precisa de um plano
A cobertura do ATT&CK for ICS é o observado intersectado com o planejado sobre o planejado, não o observado sobre todas as técnicas. Sem um plano, a cobertura é vaidade.
Na ABP, Lena escreve o plano das técnicas a testar antes de cada avaliação, e o painel de cobertura conta apenas essas. As técnicas observadas fora do plano são relatadas à parte. O número de 31 das 44 técnicas planejadas observadas significa algo porque as 44 foram escolhidas antecipadamente e o guia de planejamento é publicado com o painel. O plano é fixado antes dos testes.
29.2 Atividade versus resultado
Atividade: quadros decodificados, ferramentas executadas. Resultado: remediações verificadas, alcançabilidade do SIS ainda falsa, taxa de alarmes falsos na taxa de base da planta. Conduza pelos resultados.
O relatório mensal do CNHP feito por Lena começa pelos resultados: remediações verificadas por novo teste, se o SIS-B continua inalcançável a partir do L4 e a taxa de alarmes falsos do detector na taxa de base da ABP. As contagens de atividade, como quadros decodificados, aparecem apenas num apêndice de capacidade. Conduzir pela atividade premiaria rodar mais ferramentas, e não corrigir mais problemas. Os resultados são o que o gerente da planta financia.
29.3 Honestidade dos detectores
Relate os intervalos de alarmes falsos, o atraso de detecção e a classe de ataque. Um detector de banda que perde ataques furtivos sobre o resíduo não equivale a um CUSUM que os pega — o laboratório torna isso visível.
# Lab 27 - residual CUSUM vs band on batch reactor level (synthetic)
import random
def run(seed, atk, det, k=0.8, h=6.0):
rng=random.Random(seed); true=est=50.0; s=0.0; alarm=None
for t in range(500):
inflow=1.0+rng.gauss(0,0.05)+(0.08 if atk and t>=250 else 0)
true+=inflow-0.02*true
lvl=true+rng.gauss(0,0.3); fm=inflow+rng.gauss(0,0.02)
if atk and t>=250: lvl=50+rng.gauss(0,0.3)
if atk=="B" and t>=250: fm=1.0+rng.gauss(0,0.02)
est+=fm-0.02*est
hit=abs(lvl-50)>2.0 if det=="band" else False
if det=="cusum":
s=max(0.0,s+abs(lvl-est)-k); hit=s>h
if hit and alarm is None: alarm=t
return alarm
for det in ("band","cusum"):
fa=sum(run(i,None,det) is not None for i in range(60))
for atk in ("A","B"):
hits=[a-250 for a in (run(i,atk,det) for i in range(60)) if a is not None and a>=250]
print(f"{det} class{atk} FA={fa}/60 det={len(hits)}/60 mean_delay={sum(hits)/len(hits) if hits else float('nan'):.1f}")
Saída esperada:
band classA FA=0/60 det=0/60 mean_delay=nan
band classB FA=0/60 det=0/60 mean_delay=nan
cusum classA FA=0/60 det=60/60 mean_delay=24.8
cusum classB FA=0/60 det=0/60 mean_delay=nan
Caso sintético — Ashford Batch Plant. O CNHP relata a cobertura das técnicas planejadas e os alarmes falsos/atraso dos detectores por classe — não um único "percentual seguro".
O relatório piloto de Lena para a ABP lista os resultados por classe de ataque. Cada classe tem o seu próprio intervalo de alarmes falsos e o seu atraso médio, para que um leitor veja que o CUSUM pegou os ataques furtivos sobre o resíduo que o detector de banda perdeu.
29.4 Erros e limites
Denominadores tirados de outra planta invalidam a métrica. Ataques sintéticos não são o adversário.
Lena nunca toma emprestado um denominador do plano de outro site, porque as técnicas, os ativos e os processos da ABP são diferentes. Se for necessária uma comparação com outra planta, os dois sites precisam usar as mesmas regras de planejamento, e o relatório diz isso. Ela também declara em cada relatório que os ataques sintéticos representam classes escolhidas, não o comportamento de um adversário real, para que os leitores não superestimem os números de detecção. As duas ressalvas aparecem em todo relatório.
Nota prática
Ponha a fórmula e o id da planta na legenda de todo widget do painel. Um widget do painel do CNHP sem fórmula é decoração e é removido na revisão.
29.1b Amostragem e comparações entre coortes
Se você amostrar 50 de 500 ativos, diga isso e não escale as constatações como se tivesse visitado os 500. Comparar a cobertura entre janelas exige as mesmas regras de planejamento. Publique o guia de planejamento ao lado do painel de cobertura, para que 71% em março signifique o mesmo tipo de denominador que 71% em setembro.
A seleção da amostra é registrada com a sua semente ou regra, para que os mesmos ativos possam ser revisitados no novo teste. Prefira métricas que subestimam o sucesso, como contar uma correção apenas depois do novo teste.
O guia de planejamento da ABP é publicado ao lado do painel.
Nota de campo — linhas de metodologia nos gráficos
Quando o CNHP mudou as regras de planejamento em junho, os gráficos no estilo Pulse ganharam uma linha vertical rotulada methodology_id=2026-06. A liderança parou de comparar os 80% de maio com os 70% de julho como se tivessem o mesmo denominador. A honestidade na legenda do gráfico evitou uma falsa narrativa de declínio.
Exercícios
- EX085 — Fórmula. Escreva a fórmula da cobertura e explique um denominador ruim. Rubrica: 3 = denominador planejado + exemplo do mau uso de todo o ICS; 2 = fórmula; 1 = vaidade; 0 = nada.
- EX086 — Laboratório. Compare banda e CUSUM na classe A numa frase. Rubrica: 3 = o CUSUM detecta, a banda não, alarmes falsos 0 nos dois na amostra; 2 = parcial; 1 = errado; 0 = nada.
- EX087 — Subestimar. Um desenho que subestima o sucesso. Rubrica: 3 = exigir novo teste antes de encerrar; 2 = parcial; 1 = vago; 0 = nada.
Síntese
Planeje o denominador; meça os resultados; avalie os detectores por classe, com intervalos.
Continue estudando — capítulo 29 de 50
← Capítulo 28 · Índice de capítulos do curso · Capítulo 30 →
Siga para a próxima lição escrita.