← WAF: proteção e operação de aplicações
08 / 12 · 60 MIN

Observação, parsing e evidência de afinação

Distingue falta de bloqueio, falta de representação e melhoria real de uma política usando resultados controlados.

Uma correspondência pode não interromper

A mesma regra 1001 é executada com o motor On e com DetectionOnly. No primeiro caso pede interrupção; no segundo continua a aparecer nas correspondências, sem ação disruptiva. Isto é útil para observar uma política antes de a aplicar, mas não prova que o conteúdo seja seguro ou autorizado. O modo Off é diferente porque não processa regras. Na reunião de mudança, indica explicitamente o modo e separa correspondências, interrupções pedidas e decisões aplicadas pelo conector. Sem esta separação, duas equipas podem descrever resultados distintos usando a mesma palavra “bloqueado”.

Investigar a origem de uma pontuação

As regras didáticas somam três pontos quando alpha corresponde e dois quando beta corresponde. A regra final 2003 compara a soma com cinco. alpha isolado não interrompe; alpha e beta juntos interrompem. Ao subir o limiar para seis, os dois contributos continuam registados, mas a interrupção desaparece. O exercício usa uma pontuação própria, sem reproduzir a configuração completa de CRS. Para um falso positivo, investiga os contributos e os campos envolvidos antes de alterar globalmente o limiar. A última regra explica a decisão, mas não identifica por si a origem do erro de classificação.

Medir o que se recupera e o que se perde

Num exercício de análise, o conjunto contém duzentos pedidos legítimos e vinte controlos que devem ser bloqueados. A alteração reduz falsos bloqueios de oito para dois, passando de quatro para um por cento nesse conjunto legítimo. Porém, só catorze dos vinte controlos continuam detetados. A melhoria de disponibilidade coexistiu com seis perdas de deteção. Estes números são dados didáticos, não medição de eficácia do laboratório Coraza. Identifica os casos perdidos, avalia o âmbito da alteração e evita promover uma política com base numa única percentagem agregada.

Confirmar a representação disponível às regras

O teste JSON envia o mesmo marcador que era encontrado no formulário. Sem selecionar explicitamente o processor JSON, a regra sobre ARGS não corresponde nesse fixture. Com a seleção em fase 1, o campo é disponibilizado e a regra interrompe. Um corpo truncado aciona uma regra própria de erro, configurada para pedir 422. O código é uma escolha do exercício. A ausência de correspondência anterior não era melhoria de segurança: faltava a representação esperada. Parsing também não substitui schema, autorização e invariantes que continuam a pertencer ao contrato da aplicação.

Comparar a sequência de transformações

O cabeçalho sintético LAB%4DARKER passa por urlDecode e depois lowercase, produzindo a correspondência com labmarker. Na ordem inversa, a comparação deixa de corresponder: a descodificação introduz uma letra maiúscula depois da passagem para minúsculas. O runner conserva a entrada original e não executa um backend. Portanto, a observação demonstra a decisão de inspeção, sem provar reescrita do pedido entregue. Ao mudar transformações, usa entradas conhecidas, regista a sequência exata e verifica o comportamento do conector e da aplicação antes de generalizar para um serviço real.

Entregar evidência com versão e limites

O laboratório guarda main.go, go.mod, go.sum e hashes dos três ficheiros, com a versão Coraza 3.8.0 e Go 1.27.1. O arquivo Go foi comparado com o checksum publicado no endereço oficial; isso não é uma afirmação de verificação PGP. O conjunto CRS não foi carregado e AWS WAF não foi executado. Para aceitar uma política integrada, acrescenta browser, API e batch, tratamento de interrupções e recuperação. O resumo é que menos bloqueios só constitui melhoria quando a representação, a decisão e a cobertura preservada foram verificadas no âmbito relevante.

# From content/labs/waf-tuning; requires Go and the pinned modules
go run . /tmp/waf-evidence.json
# Eight offline observation groups; no listener or HTTP requests
# engineMode, runtimeExclusion, staticExclusion, lateExclusion
# phaseOrder, scoring, transformationOrder, bodyProcessor
NA PRÁTICA

Caso fictício: o batch passa para JSON e os marcadores deixam de corresponder. A equipa confirma o processor antes de interpretar a queda dos bloqueios como melhoria.

Armadilhas comuns

Confundir DetectionOnly com Off, ausência de parser com tráfego seguro, pontuação com paranoia level ou inspeção transformada com reescrita no backend.

Tópicos relacionados: Ordem, ações e overrides · Parsing e limites de inspeção · Afinação e falsos positivos

Leva esta ideia contigo

Interpreta o resultado a partir do modo, representação, regras e conector. Reavalia a política com casos legítimos e cobertura que deve permanecer.

Criar conta

Referência: Coraza body processing · DR WAF 2026-09; selected AWS WAF and OWASP CRS operational concepts