Capítulo 4 — Modelos de dados
Mapa da aula
Aula 04 publicada. Mapa, exemplo, EX010.
flowchart TD
N0["4.1 Do que um registro de achado precisa"]
N1["4.2 Vocabulários controlados"]
N2["4.3 Identificadores em vez de texto corrido"]
N3["4.4 Validação como controle de passagem"]
N4["Laboratório B — validador de registros"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX010"]
Desenho lógico
flowchart LR
N0["4.1 Do que um registro de achado precisa"]
N1["4.2 Vocabulários controlados"]
N2["4.3 Identificadores em vez de texto corrido"]
N3["4.4 Validação como controle de passagem"]
N4["Laboratório B — validador de registros"]
N5["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX010"]
[4.1 Do que um registro de achado precisa]
|
v
[4.2 Vocabulários controlados]
|
v
[4.3 Identificadores em vez de texto corrido]
|
v
[4.4 Validação como controle de passagem]
|
v
[Laboratório B — validador de registros]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX010]
Objetivos de aprendizagem
Você vai (1) desenhar um registro mínimo para um achado; (2) validar registros quanto a campos ausentes, tipos errados e valores ilegais; (3) explicar por que vocabulários controlados tornam os relatórios comparáveis; (4) ligar achados a evidências por identificadores, e não por texto corrido.
4.1 Do que um registro de achado precisa
Um achado é uma afirmação: neste ativo existe esta fraqueza, demonstrada por esta evidência, com esta severidade. Os campos mínimos são, portanto, um identificador, o ativo, um ID de técnica do ATT&CK ou outra referência de fraqueza, uma severidade tirada de uma lista combinada e um ponteiro para a evidência. Responsável pela correção, prazo e status vêm mais tarde no ciclo de vida. O achado F-01 precisa de id, ativo, id de evidência, severidade e cenário antes de entrar no gerador de relatórios. O lab_records rejeita linhas incompletas. Priya não discute severidade num registro que ainda acusa evidência ausente.
4.2 Vocabulários controlados
Se um testador escreve "urgente", outro "P1" e um terceiro "muito ruim", ninguém consegue contar os críticos. Um conjunto fixo — low, medium, high, critical — permite que os painéis somem e comparem. IDs do ATT&CK como T1078 fazem o mesmo trabalho para o comportamento adversário: "contas válidas" escrito de cinco jeitos continua sendo uma técnica. O vocabulário da TRT é low, medium, high, critical — nunca urgent. O lab_records sinaliza o F-02 pela severidade urgent para que os painéis continuem contáveis. Os redatores da Northpoint recebem as mesmas quatro palavras no apêndice das ROE, para que os painéis da TRT continuem comparáveis entre prestadores e entre engajamentos.
4.3 Identificadores em vez de texto corrido
A evidência é ligada por um ID como E-001, e não por "veja a captura de tela de terça". IDs sobrevivem a renomeação, tradução e cópia para um sistema de chamados. Cada ID precisa ser único dentro do engajamento. No ENG-712, o F-09 aponta para o E-002 pelo identificador, então renomear o PNG ou exportar a wiki para outro formato não quebra a ligação. Os sistemas de chamados recebem os identificadores inalterados quando os achados são copiados. Antes de o gerador de relatórios rodar, referências de chat como a captura de tela da wiki são reescritas como identificadores de evidência, para que cada afirmação do rascunho aponte para um arquivo específico.
4.4 Validação como controle de passagem
Os registros são validados antes de entrar no relatório. Um validador que lista todos os problemas, em vez de parar no primeiro, economiza idas e vindas com o testador. O validador lista todos os problemas de um registro numa única passada. Evidência ausente no F-03 e uma severidade inválida em outra linha aparecem juntas antes que o autor reescreva. As idas e vindas diminuem quando o controle é completo: no primeiro ensaio do ENG-712, um validador que parava no primeiro problema custou um dia de vaivém com os autores da Northpoint.
Laboratório B — validador de registros
"""Lab B (ch 04): validate synthetic finding records against a minimal schema."""
REQUIRED = {"id": str, "asset": str, "technique": str, "severity": str, "evidence": str}
SEVERITIES = {"low", "medium", "high", "critical"}
records = [
{"id": "F-01", "asset": "trt-portal", "technique": "T1078", "severity": "high", "evidence": "E-001"},
{"id": "F-02", "asset": "trt-wiki", "technique": "T1213", "severity": "urgent", "evidence": "E-002"},
{"id": "F-03", "asset": "trt-vpn", "technique": "T1133", "severity": "medium"},
]
for r in records:
problems = [f"missing {k}" for k in REQUIRED if k not in r]
problems += [f"{k} not {t.__name__}" for k, t in REQUIRED.items() if k in r and not isinstance(r[k], t)]
if r.get("severity") and r["severity"] not in SEVERITIES:
problems.append(f"bad severity '{r['severity']}'")
print(r["id"], "OK" if not problems else "; ".join(problems))
Execute com python3 lab_records.py. Saída verificada:
F-01 OK
F-02 bad severity 'urgent'
F-03 missing evidence
Exemplo resolvido
A Northpoint entrega três achados em rascunho. O F-01 passa. O F-02 usa "urgent", que não está na lista combinada de severidades. O F-03 não tem ponteiro de evidência, então nada sustenta a afirmação. Priya devolve o F-02 e o F-03 com as mensagens do validador e aceita o F-01 no controle de achados.
Caso sintético. Esses três achados e seus ativos são exemplos fictícios da TRT.
Erros e limites
Um esquema garante forma, não verdade: um registro bem formado ainda pode descrever algo que nunca aconteceu. Mantenha o vocabulário curto; graus demais de severidade produzem discussão em vez de ação.
Exercícios
- EX010 — Afirmação sem sustentação. Segundo o laboratório, o que há de errado com o F-03 e por que isso o impede de entrar no relatório? Rubrica: 3 = falta evidência; um achado sem evidência não pode ser verificado; 2 = só nomeia o problema; 1 = diz OK; 0 = nada.
- EX011 — Conserto do vocabulário. Como a severidade do F-02 deve ser corrigida e quem decide o valor? Rubrica: 3 = mapear para um nível combinado (por exemplo, high/critical), pelo testador com concordância do revisor, usando o método de classificação; 2 = só escolhe um valor; 1 = acrescentar "urgent" à lista; 0 = nada.
- EX012 — Campo extra. Proponha um campo adicional para a fase de correção e justifique-o numa frase. Rubrica: 3 = campo sensato (responsável, prazo, status, data de reteste) com justificativa; 2 = só o campo; 1 = campo irrelevante; 0 = nada.
Síntese
Um achado é uma afirmação estruturada, com vocabulário fixo e um ponteiro de evidência; valide antes de relatar.
Continue estudando — capítulo 04 de 30
← Capítulo 03 (rascunho) · Índice de capítulos do curso · Capítulo 05 (rascunho) →