Mapa da aula
Aula 05 publicada. Mapa, exemplo, EX017.
flowchart TD
N0["5.1 Autorização e escopo"]
N1["5.2 Termos básicos"]
N2["5.3 Evidências"]
N3["5.4 Taxas e incerteza"]
N4["5.4b Antes e depois"]
N5["5.5 Relato"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX017"]
Desenho lógico
flowchart LR
N0["5.1 Autorização e escopo"]
N1["5.2 Termos básicos"]
N2["5.3 Evidências"]
N3["5.4 Taxas e incerteza"]
N4["5.4b Antes e depois"]
N5["5.5 Relato"]
N6["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX017"]
[5.1 Autorização e escopo]
|
v
[5.2 Termos básicos]
|
v
[5.3 Evidências]
|
v
[5.4 Taxas e incerteza]
|
v
[5.4b Antes e depois]
|
v
[5.5 Relato]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX017]
Objetivos de aprendizagem
Você vai (1) trabalhar dentro de uma autorização e de um escopo por escrito; (2) usar a tríade CIA e termos básicos de risco; (3) coletar evidências corretamente; (4) relatar achados com clareza.
5.1 Autorização e escopo
Antes de testar ou mudar qualquer coisa, tenha uma autorização por escrito que diga quais sistemas, quais atividades, em que horários e com quais dados. Use cópias isoladas e dados sintéticos. Se encontrar algo fora do escopo, pare e pergunte. Testes não autorizados podem ser ilegais e podem prejudicar clientes. A autorização por escrito de Ana para o teste de reinicialização entre contas nomeava a cópia de homologação do HelpBot, a atividade (pedir reinicializações de roteadores pertencentes a outras contas sintéticas de teste), o horário comercial dos dias úteis, as contas sintéticas a usar e o supervisor a quem ligar. Quando ela percebeu, durante o teste, que a ferramenta de chamados da cópia de homologação ainda enviava e-mails para uma fila interna real, parou e perguntou, porque essa fila estava fora do escopo. A ferramenta foi apontada para uma fila de teste antes de ela continuar.
5.2 Termos básicos
Confidencialidade, integridade, disponibilidade. Ameaça (quem ou o que poderia causar dano), vulnerabilidade (a fraqueza), risco (probabilidade × impacto), controle (o que o reduz). Para IA, conheça também os principais referenciais: o NIST AI RMF (AI 100-1), o OWASP Top 10 for LLM Applications 2025 e o MITRE ATLAS. Aplicados ao teste de reinicialização entre contas: a ameaça é um cliente, ou um texto plantado num artigo, levando o HelpBot a reiniciar o roteador de outra pessoa; a vulnerabilidade é uma ferramenta de reinicialização que confiava no ID de roteador presente no pedido do modelo; o risco é a probabilidade de isso acontecer vezes o impacto de um cliente perder o serviço; o controle é a verificação de titularidade no serviço de ferramentas. As propriedades afetadas são a disponibilidade para o outro cliente e a integridade das ações sobre as contas. Nos termos do OWASP, trata-se do LLM06 Agência Excessiva (Excessive Agency).
5.3 Evidências
Registre: data e hora, sistema e versão, passos exatos, entradas, saídas, registros das ferramentas e capturas de tela quando forem úteis. Mantenha as evidências inalteradas; trabalhe em cópias. Meça pelos efeitos: "a ferramenta reiniciou o roteador R-55120" é evidência; "a resposta pareceu errada" não é. Para cada uma das 60 tentativas entre contas de Ana, o registro guardava a versão da homologação, a conta sintética usada, a mensagem exata enviada, a resposta do HelpBot, a linha de registro da chamada de ferramenta e a resposta do serviço de gerenciamento de roteadores. O sucesso foi definido pelo registro da ferramenta, não pela resposta: em algumas conversas o HelpBot disse "não posso fazer isso" enquanto o registro mostrava que a reinicialização tinha sido enviada. Essa divergência é exatamente o motivo pelo qual respostas não são evidências. Os registros brutos foram exportados uma vez e tiveram o hash calculado, e a análise rodou sobre uma cópia.
5.4 Taxas e incerteza
Um teste prova pouco. Repita os testes e relate os sucessos sobre o número de tentativas; zero falhas em 100 tentativas ainda admite uma taxa de falha de até cerca de 3%.
"""Lab S: reporting attack-success rates honestly: Wilson intervals,
seed variation and a paired bootstrap. Synthetic trial outcomes only."""
import math, random
def wilson(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, c + h
for k, n in ((3, 20), (30, 200), (300, 2000)):
lo, hi = wilson(k, n); print(f"successes={k}/{n} rate={k/n:.3f} wilson95=[{lo:.3f}, {hi:.3f}]")
# five seeds of a synthetic defence evaluation: per-seed attack success rate
rates = []
for seed in range(5):
r = random.Random(seed); rates.append(sum(r.random() < 0.12 for _ in range(200))/200)
m = sum(rates)/5; sd = math.sqrt(sum((x-m)**2 for x in rates)/4)
print("per-seed rates:", " ".join(f"{x:.3f}" for x in rates), f"mean={m:.3f} sd={sd:.3f}")
# paired bootstrap: baseline vs defence on the same 300 synthetic prompts
r = random.Random(42)
base = [r.random() < 0.30 for _ in range(300)]
defn = [b and r.random() < 0.6 for b in base] # defence blocks ~40% of successes
diffs = []
for _ in range(2000):
idx = [r.randrange(300) for _ in range(300)]
diffs.append(sum(base[i] for i in idx)/300 - sum(defn[i] for i in idx)/300)
diffs.sort()
print(f"baseline_asr={sum(base)/300:.3f} defended_asr={sum(defn)/300:.3f} "
f"reduction_ci95=[{diffs[50]:.3f}, {diffs[1949]:.3f}]")
Saída esperada:
successes=3/20 rate=0.150 wilson95=[0.052, 0.360]
successes=30/200 rate=0.150 wilson95=[0.107, 0.206]
successes=300/2000 rate=0.150 wilson95=[0.135, 0.166]
per-seed rates: 0.110 0.130 0.135 0.105 0.145 mean=0.125 sd=0.017
baseline_asr=0.350 defended_asr=0.190 reduction_ci95=[0.120, 0.203]
Os intervalos de Wilson do laboratório mostram quanto o número de tentativas importa. Três sucessos em 20 tentativas dão um intervalo de 95% entre 5,2% e 36,0%; a mesma taxa em 200 tentativas o estreita para 10,7%–20,6%, e em 2.000 tentativas para 13,5%–16,6%. Os 9 de 60 de Ana antes da correção têm um intervalo de cerca de 8% a 26%, largo, mas claramente acima de zero. Depois da correção, 0 de 60 significa que a taxa provavelmente está abaixo de cerca de 6%, e é por isso que ela depois fez mais tentativas.
5.4b Antes e depois
Ao testar uma correção, rode os mesmos casos antes e depois dela, numa versão que no resto seja a mesma, para que a diferença possa ser atribuída à correção. O teste de reinicialização de Ana seguiu isso. As duas rodadas de 60 tentativas usaram a mesma versão de homologação, as mesmas contas sintéticas e as mesmas 60 mensagens; a única mudança entre elas foi a verificação de titularidade no serviço de ferramentas. Se o modelo do fornecedor tivesse sido atualizado entre as rodadas, uma queda de 9 para 0 poderia ter vindo de o modelo se comportar de outro jeito, e não da correção. O bootstrap pareado do laboratório aplica a mesma ideia: as taxas de referência e com defesa são comparadas sobre os mesmos 300 prompts.
5.5 Relato
Um relatório de achado: título, sistema e versão, passos para reproduzir, efeito observado, impacto, gravidade, correção sugerida. Mantenha-o factual e compartilhe-o apenas pelo canal combinado. O relatório de Ana para o teste entre contas coube numa página. Título: a ferramenta de reinicialização do HelpBot aceita roteadores de outros clientes. Sistema: homologação do HelpBot, com as versões do orquestrador e do serviço de ferramentas listadas. Passos: o modelo de mensagem e as contas sintéticas. Efeito: 9 de 60 tentativas reiniciaram um roteador que não pertencia ao solicitante, confirmado nos registros da ferramenta. Impacto: um cliente pode cortar a internet de outro cliente. Gravidade: alta. Correção: verificação de titularidade no serviço de ferramentas, verificada com 0 de 60. O relatório foi para o líder da equipe pela fila de chamados, não pelo chat.
5.6 Exemplo resolvido (caso sintético da Kestrel)
A autorização de Ana cobre a homologação do HelpBot, dias úteis e contas sintéticas. Ela conduz 60 conversas pedindo ao HelpBot que reinicie um roteador pertencente a outra conta de teste. Antes da correção: 9 de 60 têm sucesso (intervalo de cerca de 8–26%). Depois da verificação de titularidade: 0 de 60. Ela escreve um achado com os dois resultados. O valor do relatório veio do fato de que as duas rodadas usaram as mesmas 60 mensagens e a mesma versão, de modo que a queda de 9 para 0 pode ser atribuída à verificação de titularidade. Ana não afirmou que o problema tinha acabado: 0 de 60 ainda admite uma taxa real de até cerca de 6%, e as rodadas de acompanhamento feitas depois que a ferramenta de senha do Wi-Fi foi acrescentada usaram o mesmo modelo de mensagem, para manter os resultados comparáveis.
5.7 Erros e limites
Três erros são comuns: testar a produção sem autorização; evidências baseadas numa única tentativa; e relatórios sem passos para reproduzir. Cada erro teria prejudicado o achado das reinicializações. Testar a produção teria reiniciado roteadores de clientes reais e cortado o serviço deles. Uma única tentativa teria enganado em qualquer direção, já que antes da correção só cerca de uma tentativa em sete tinha sucesso; uma única tentativa fracassada poderia ter "provado" que a ferramenta era segura. Um relatório sem o modelo de mensagem e as contas sintéticas teria deixado o desenvolvedor sem conseguir reproduzir o problema nem confirmar a correção, e o líder da equipe sem conseguir julgar a gravidade.
Exercícios
- EX017 — Autorização. Liste os elementos de uma autorização de teste. Rubrica: 3 = sistemas, atividades, horários, dados, contato, assinatura; 2 = quatro; 1 = dois; 0 = nenhum.
- EX018 — Termos. Identifique ameaça, vulnerabilidade, risco e controle no teste de reinicialização entre contas de Ana. Rubrica: 3 = os quatro corretos; 2 = três; 1 = um ou dois; 0 = nenhum.
- EX019 — Evidências. Liste seis itens a registrar num teste. Rubrica: 3 = seis pertinentes; 2 = quatro; 1 = dois; 0 = nenhum.
- EX020 — Achado. Escreva o relatório de achado do teste de reinicialização entre contas de Ana. Rubrica: 3 = as sete partes; 2 = cinco; 1 = três; 0 = nenhuma.
Síntese
Trabalhe apenas dentro da autorização, descreva o risco com precisão, colete evidências pelos efeitos ao longo de tentativas repetidas e relate com clareza.
Continue estudando — capítulo 05 de 18
← Capítulo 04 (rascunho) · Índice de capítulos do curso · Capítulo 06 (rascunho) →