Capítulo 9 — Programação II
Mapa da aula
Aula 09 publicada. Mapa, exemplo, EX025.
flowchart TD
N0["9.1 Esquema sem payloads"]
N1["9.2 Upserts idempotentes"]
N2["9.3 Testes de propriedades para zonas"]
N3["Nota prática"]
N4["9.1b Evolução do esquema sem parada"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX025"]
Desenho lógico
flowchart LR
N0["9.1 Esquema sem payloads"]
N1["9.2 Upserts idempotentes"]
N2["9.3 Testes de propriedades para zonas"]
N3["Nota prática"]
N4["9.1b Evolução do esquema sem parada"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX025"]
[9.1 Esquema sem payloads]
|
v
[9.2 Upserts idempotentes]
|
v
[9.3 Testes de propriedades para zonas]
|
v
[Nota prática]
|
v
[9.1b Evolução do esquema sem parada]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX025]
Objetivos de aprendizagem
Você vai (1) projetar um esquema para constatações de TO que proíba receitas de exploração; (2) implementar atualizações idempotentes indexadas por ativo e fraqueza; (3) testar por propriedades as regras de zonas.
9.1 Esquema sem payloads
Armazene título, ativo, zona, classe de fraqueza, hash da evidência, limite da consequência, camadas de proteção intactas e situação. Rejeite campos chamados payload, shell ou exploit. A evidência fica num repositório lacrado; o ticket guarda o hash.
O esquema de Lena rejeita o registro inteiro se um campo proibido aparecer, em vez de removê-lo em silêncio, para que quem o enviou aprenda a não fazê-lo. Os limites de consequência e as camadas de proteção intactas são campos separados, o que permite ao engenheiro de segurança filtrar as constatações que tocam o SIS-B. O hash da evidência liga cada ticket à sua prova lacrada sem copiar nada dela para o sistema de tickets.
9.2 Upserts idempotentes
Dois scanners que relatam a mesma escrita Modbus aberta no PLC-A precisam virar uma única constatação. Impressão digital = (ativo, classe de fraqueza, registrador ou caminho). Retransmissões e reimportações deixam uma única linha.
Lena testa isso importando duas vezes a mesma saída de scanner e importando os relatos de dois scanners sobre o mesmo problema; os dois casos precisam deixar exatamente uma constatação. A impressão digital usa o registrador ou o caminho, não a redação do próprio scanner, porque duas ferramentas descrevem a mesma fraqueza de maneiras diferentes. Quando as impressões digitais colidem para problemas de fato diferentes, uma pessoa as separa e registra por quê.
9.3 Testes de propriedades para zonas
Declare: "para todo host da zona do escritório e todo registrador do SIS, permit é falso". Gere hosts sintéticos e verifique com asserções. Os testes de propriedades pegam o bug em que uma nova sub-rede de escritório foi acrescentada ao inventário, mas não ao lado de negação da lista de permissões.
Caso sintético — Ashford Batch Plant. Depois da constatação FW-12, Lena acrescentou um teste de propriedade: nenhum host do L4 pode ter um caminho de permissão até o L1-SIS. A integração contínua o executa a cada mudança na exportação do firewall.
O teste roda sobre hosts sintéticos tirados do inventário.
9.4 Erros e limites
Os esquemas derivam; versione-os. Geradores de propriedades que nunca emitem a nova sub-rede deixam passar o bug que deveriam pegar — inclua as diferenças do inventário como entradas.
Lena alimenta o teste de propriedade com a diferença mais recente do inventário, para que toda nova sub-rede seja testada na execução seguinte. O esquema tem um campo de versão, e os registros mais antigos são migrados com um script registrado, e não editados à mão. Quando um teste é alterado, ela confere se ele ainda falha no bug original, já que uma propriedade que não pode mais falhar não protege nada.
Nota prática
Quando alguém pedir um host de exceção "só desta vez", exija no esquema um objeto de exceção com prazo, com uma data de expiração e um dono. Exceções sem expiração viram condutos permanentes.
9.1b Evolução do esquema sem parada
Quando o esquema de constatações do CNHP ganha um campo obrigatório, como o número da permissão de trabalho, implante uma mudança em duas fases: primeiro aceite e persista o campo como opcional enquanto preenche os registros antigos; depois mude o validador para obrigatório. As janelas em andamento não podem quebrar porque um cliente móvel está uma versão atrás. Publique a versão do esquema nas respostas da API, para que os tablets de campo e o exportador do monitor possam se recusar a escrever quando forem incompatíveis. As importações em massa vindas de scanners precisam passar pelo mesmo caminho de validação que as criações interativas, incluindo a verificação de campos proibidos, ou os payloads vão entrar pela porta lateral confiável da importação.
Exercícios
- EX025 — Rejeição. Escreva uma regra de validação que rejeite campos com cara de payload. Rubrica: 3 = regra + exemplo que falha; 2 = regra; 1 = ideia; 0 = nada.
- EX026 — Impressão digital. Por que dois relatos do registrador 40050 do PLC-A se fundem? Rubrica: 3 = mesma impressão digital; 2 = "mesma constatação"; 1 = vago; 0 = errado.
- EX027 — Propriedade. Declare uma propriedade depois de acrescentar uma zona DMZ. Rubrica: 3 = por exemplo, o L4 só alcança o L2 via L3.5; 2 = informal; 1 = errado; 0 = nada.
Síntese
Esquemas, idempotência e propriedades mantêm o ferramental de segurança de TO entediante — no bom sentido.
Continue estudando — capítulo 09 de 50
← Capítulo 08 · Índice de capítulos do curso · Capítulo 10 →
Siga para a próxima lição escrita.