Capítulo 23 — Infraestrutura crítica e segurança setorial: avaliação
Mapa da aula
Aula 23 publicada. Mapa, exemplo, EX067.
flowchart TD
N0["23.1 O que testar"]
N1["23.2 Regras de engajamento"]
N2["23.3 Regras de afirmação"]
N3["23.4 Dos resultados ao trabalho"]
N4["23.6 Atividade prática: avalie os controles"]
N5["Síntese do capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX067"]
Desenho lógico
flowchart LR
N0["23.1 O que testar"]
N1["23.2 Regras de engajamento"]
N2["23.3 Regras de afirmação"]
N3["23.4 Dos resultados ao trabalho"]
N4["23.6 Atividade prática: avalie os controles"]
N5["Síntese do capítulo"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX067"]
[23.1 O que testar]
|
v
[23.2 Regras de engajamento]
|
v
[23.3 Regras de afirmação]
|
v
[23.4 Dos resultados ao trabalho]
|
v
[23.6 Atividade prática: avalie os controles]
|
v
[Síntese do capítulo]
|
v
[Exemplo resolvido] --> [Exercício EX067]
Objetivos de aprendizagem e conexão
Depois deste capítulo, você deve ser capaz de:
- planejar testes seguros e autorizados que mostrem se os controles funcionam como pretendido;
- escrever regras de engajamento para testes num ambiente operacional;
- relatar a eficácia de cada controle com contagens, intervalos e medidas de tempo, usando uma regra de afirmação declarada;
- transformar os resultados da avaliação em trabalho de melhoria e em novos testes.
Os Capítulos 18 e 19 implementaram controles e regras. Este capítulo pergunta se eles funcionam. O guia técnico do NIST de testes de segurança descreve o planejamento, a condução e o relato de testes, incluindo a necessidade de autorização e de regras de engajamento (NIST SP 800-115). Nos serviços críticos, a ênfase está em testes que sejam seguros para o processo físico.
23.1 O que testar
Teste cada controle contra a evidência que o seu cartão promete (Capítulo 18). Para os controles detectivos, injete um evento de teste seguro que deveria produzir o alerta: uma rajada deliberada de logins malsucedidos a partir de um endereço de teste; um fluxo de teste marcado de uma estação de trabalho de teste para uma porta de teste num CLP sobressalente; um heartbeat de teste pausado. Para os controles preventivos, tente a ação impedida de forma controlada: uma mensagem com um MAC errado; uma conexão a partir de uma zona não permitida. Para os controles de recuperação, execute uma restauração cronometrada (Capítulo 16).
23.2 Regras de engajamento
Antes de qualquer teste, escreva e obtenha a assinatura das regras de engajamento: finalidade; sistemas no escopo (por identificador) e explicitamente fora do escopo; ações permitidas; janela de tempo; quem está no local ou de plantão; plano de comunicação (quem é avisado antes, durante e depois); condições de parada (qualquer comportamento inesperado do processo interrompe o teste de imediato); como os eventos de teste são marcados para que respondedores e operadores os reconheçam; e como os resultados são guardados. Na zona das estações, prefira testes em equipamentos sobressalentes ou de laboratório, ou no lado do relay do conduíte, e nunca envie tráfego de teste a um controlador em produção sem o acordo explícito da operação para aquele controlador e aquele horário.
23.3 Regras de afirmação
Decida antes de testar que resultado contará como "eficaz". Uma regra de afirmação pode ser: o limite inferior de Wilson de 95 % da taxa de detecção é pelo menos 0,70 e a mediana do tempo até o alerta cumpre a meta. Fixar a regra de antemão afasta a tentação de escolher depois uma interpretação lisonjeira. A lição do Capítulo 9 se aplica: números pequenos de testes dão intervalos largos, então "8 de 8 detectados" pode ainda não cumprir a regra.
O 8 de 8 da Regra C é o caso: um histórico perfeito cujo limite inferior, 0,68, fica abaixo de 0,70.
23.4 Dos resultados ao trabalho
Cada controle "ainda não demonstrado" precisa ou de melhoria (corrigir a regra, a fonte, a configuração), ou de mais testes (se o problema for só o tamanho da amostra). Registre a data do próximo teste. Cada controle "demonstrado eficaz" é testado de novo num calendário, porque os controles se degradam.
O Laboratório 23 separa os seus quatro controles assim. A Regra C precisa apenas de mais testes: um sucesso a mais chegaria justo a 0,70 (0,701), e um segundo daria uma margem (0,722). A Regra B precisa primeiro de melhoria, exportando para o SIEM os fluxos do switch de estação que faltam, e depois de um novo teste. A FIM precisa das duas coisas: verificações mais frequentes nos arquivos críticos, e depois mais testes. A restauração de backup precisa da chave de decifração acrescentada ao runbook, e depois de novos exercícios.
23.5 Exemplo resolvido: os testes de controle de um trimestre (sintético)
O Laboratório 23 aplica a regra de afirmação a seis controles. Dois são demonstrados eficazes: a Regra A detectou 12 de 12 testes de força bruta, com mediana de 2 minutos (limite inferior 0,76), e o relay rejeitou todos os 40 testes de falha de MAC (limite inferior 0,91). Quatro ainda não estão demonstrados, por motivos diferentes:
- Regra B (Modbus corporativo→estação) detectou apenas 7 de 10. A investigação mostra que as três falhas foram fluxos de teste para um CLP num switch de estação cujos fluxos não são exportados para o SIEM — uma lacuna de fonte, e não uma falha da regra.
- Regra C (estação em silêncio) detectou 8 de 8, com mediana de 16 minutos contra uma meta de 20 minutos, mas o limite inferior é 0,68. Aqui o único problema é o tamanho da amostra: um teste bem-sucedido a mais cumpriria a regra por pouco, e dois a cumpririam com margem.
- FIM detectou 4 de 6 mudanças não aprovadas, com mediana de 1.440 minutos, porque a verificação de integridade roda uma vez por dia. Ela precisa tanto de melhoria (verificações mais frequentes nos arquivos críticos) quanto de mais testes.
- Restauração de backup cumpriu a sua meta 9 de 10 vezes; o limite inferior 0,60 fica abaixo de 0,70. A única falha foi a falta de uma chave de decifração no runbook de restauração — uma questão de processo corrigível.
23.6 Atividade prática: avalie os controles
Laboratório 23 (salve como lab23.py, execute com python3 lab23.py):
# Lab 23 - evaluating whether the service's controls work, not only whether they exist (offline, standard library only)
# Claim rule used here: 'shown effective' needs the 95% Wilson lower bound >= 0.70 and the time target met.
# Synthetic results of a quarter of control tests at Fallowmere. Each test injects a safe, authorized test event.
import math
tests = { # control: (test events injected, detected/blocked as specified, median minutes to alert)
"brute-force alert (rule A)": (12, 12, 2),
"corp->station Modbus alert (rule B)": (10, 7, 4),
"station-silent alert (rule C)": (8, 8, 16),
"MAC rejection at relay": (40, 40, None),
"FIM unapproved-change alert": (6, 4, 1440),
"backup restore within 4 h": (10, 9, None),
}
def wilson_low(k, n, z=1.96):
p = k / n; d = 1 + z*z/n; c = (p + z*z/(2*n)) / d; h = z*math.sqrt(p*(1-p)/n + z*z/(4*n*n)) / d
return c - h
target = {"FIM unapproved-change alert": 60, "station-silent alert (rule C)": 20}
for name, (n, k, mins) in tests.items():
lo = wilson_low(k, n)
late = name in target and mins is not None and mins > target[name]
verdict = "shown effective" if lo >= 0.70 and not late else "not yet shown"
print(f"{name:<36} {k:>2}/{n:<2} low95={lo:.2f} median {'-' if mins is None else mins:>4} min {verdict}{' (too slow)' if late else ''}")
Saída esperada (Python 3.13.5):
brute-force alert (rule A) 12/12 low95=0.76 median 2 min shown effective
corp->station Modbus alert (rule B) 7/10 low95=0.40 median 4 min not yet shown
station-silent alert (rule C) 8/8 low95=0.68 median 16 min not yet shown
MAC rejection at relay 40/40 low95=0.91 median - min shown effective
FIM unapproved-change alert 4/6 low95=0.30 median 1440 min not yet shown (too slow)
backup restore within 4 h 9/10 low95=0.60 median - min not yet shown
Os dois controles eficazes são a Regra A, 12 de 12 com limite inferior 0,76, e a verificação de MAC do relay, 40 de 40 com limite inferior 0,91. Para cada um dos quatro ainda não demonstrados, escreva uma linha: o motivo (Regra B, uma lacuna de fonte; Regra C, tamanho da amostra; FIM, verificações diárias e poucos testes; restauração, uma lacuna no runbook), a próxima ação e a data do próximo teste. Não arredonde o 0,68 da Regra C para 0,70.
23.7 Erros comuns e limites
- Testar sem regras de engajamento escritas, ou com escopo pouco claro.
- Eventos de teste não marcados, que assim disparam uma resposta real — ou eventos reais descartados como testes.
- Regras de afirmação escolhidas depois de ver os resultados.
- Relatar "8/8 = 100 %" sem intervalo.
- Tratar "ainda não demonstrado" como "falhou", ou como "está bem".
- Testes em controladores em produção sem o acordo da operação.
Os testes mostram como os controles respondem aos eventos de teste que você projetou. Adversários reais e falhas reais podem ser diferentes; varie os testes ao longo do tempo e inclua cenários de incidentes ocorridos em outros lugares.
Exercícios — capítulo 23
EX067 — Regras de engajamento. Objetivo: autorizar um teste seguro. Entradas: um teste da Regra B usando uma estação de trabalho de teste e o CLP Arlen 300 sobressalente do laboratório da FSTS, mais um fluxo de teste para o CLP da PS-04 durante uma visita ao local. Restrições: todos os elementos do Capítulo 23 ("Regras de engajamento"). Etapas: escreva as regras de engajamento. Evidência esperada: uma página. Rubrica: 3 = escopo por identificador, com o fluxo para o CLP em produção permitido apenas com a aprovação nominal da Água, um teste somente de leitura ou só de conexão (sem escritas), engenheiro no local, endereço de teste marcado, comunicação à sala de controle e ao SOC, condições de parada explícitas, armazenamento dos resultados; 2 = falta um elemento; 1 = informal; 0 = nada.
EX068 — Quantos testes a mais? Objetivo: planejar o tamanho da amostra. Entradas: Regra C com 8/8. Restrições: use o limite inferior de Wilson do Laboratório 23. Etapas: encontre o número de sucessos consecutivos adicionais necessários para que o limite inferior chegue a 0,70. Evidência esperada: o número e a execução. Rubrica: 3 = um sucesso a mais (9/9 dá um limite inferior de cerca de 0,701; 10/10 dá cerca de 0,722), mostrado corretamente, com o comentário de que cumprir um limiar por uma margem de 0,001 é frágil e vale planejar um segundo teste extra; 2 = certo, com método pouco claro; 1 = chutado; 0 = nada.
EX069 — Diagnostique uma falha. Objetivo: transformar resultados em trabalho. Entradas: a Regra B falhou em 3 de 10 testes porque os fluxos de um switch de estação não eram exportados. Restrições: plano de correção e de novo teste. Etapas: (1) declare a correção; (2) declare o monitoramento que teria detectado a lacuna mais cedo (Capítulo 19); (3) planeje o novo teste. Evidência esperada: meia página. Rubrica: 3 = habilitar a exportação de fluxos naquele switch sob mudança; acrescentar uma regra de ausência de fonte por exportador de fluxos; testar de novo com pelo menos 10 eventos em todos os switches; atualizar o cartão de controle; 2 = correção sem monitoramento; 1 = "ajustar a regra B"; 0 = nada.
Síntese do capítulo
Teste os controles contra a evidência que eles prometem, usando eventos de teste seguros e marcados, sob regras de engajamento assinadas que protegem o processo físico. Fixe a regra de afirmação antes de testar, relate contagens com intervalos e medidas de tempo, e distinga "demonstrado eficaz" de "ainda não demonstrado" — e por quê. Transforme todo resultado em melhoria ou em mais testes, e teste de novo num calendário.
Continue estudando — capítulo 23 de 30
← Capítulo 22 · Índice de capítulos do curso · Capítulo 24 →
Siga para a próxima lição escrita.