◇ OpenCyber Academy
Tecnólogo · Capítulo 23 · Português

Capítulo 23 — Infraestrutura crítica e segurança setorial: avaliação

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

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:

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:

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

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.