Condição de corrida e Smuggling
Condição de corrida / Smuggling oferece duas ferramentas especializadas para ataques HTTP sensíveis ao tempo e no nível de protocolo.
Condições de corrida
A aba Condições de corrida envia várias cópias de uma requisição simultaneamente ao mesmo endpoint e permite comparar respostas e tempos entre as execuções paralelas.
Quando usar
- TOCTOU (tempo de verificação/tempo de uso): teste se requisições concorrentes podem se intercalar entre uma verificação e uma operação de mudança de estado.
- Manipulação de contas: envie mudanças de saldo, resgates de cupons ou operações com limites de forma concorrente para testar gasto duplo ou excesso de resgates.
- Contornar limites de votos ou de taxa: confirme se os limites por usuário são aplicados de forma atômica.
Executar um teste de condição de corrida
- Monte a requisição-alvo na aba Condições de corrida ou envie-a para essa aba.
- Defina o valor de concorrência: quantas cópias paralelas enviar.
- Clique em Enviar corrida. Todas as cópias são enviadas o mais simultaneamente possível.
- Revise a tabela de respostas: código de status, corpo e tempo decorrido para cada cópia.
- Diferenças entre as respostas (códigos de status diferentes, corpos de resposta diferentes, sucesso inesperado nas cópias 2+) indicam uma janela de condição de corrida.
Condições de corrida com um único pacote HTTP/2
Quando o alvo aceitar HTTP/2, habilite o modo HTTP/2. HTTP/2 multiplexa todas as requisições paralelas em uma única conexão, o que elimina a variação de latência da rede e torna mais confiável a chegada concorrente ao servidor.
HTTP request smuggling
A aba Smuggling testa como um servidor trata cabeçalhos ambíguos Content-Length e Transfer-Encoding para detectar dessincronização entre frontend e backend.
Contexto
Quando um proxy reverso e um servidor backend discordam sobre onde uma requisição termina e a próxima começa, um prefixo introduzido por smuggling na requisição A pode ser colocado antes da requisição B. O impacto vai de envenenamento de cache a contornar autenticação e injetar requisições arbitrárias.
Variantes de dessincronização
| Variante | Descrição |
|---|---|
| CL.TE | O frontend usa Content-Length; o backend usa Transfer-Encoding |
| TE.CL | O frontend usa Transfer-Encoding; o backend usa Content-Length |
| TE.TE | Ambos usam Transfer-Encoding, mas respondem de forma diferente a um cabeçalho ofuscado |
Executar uma sondagem de smuggling
- Selecione o endpoint-alvo na aba Smuggling.
- Escolha a variante de dessincronização a testar.
- Clique em Enviar sondagem. A ferramenta envia a requisição preparada e mede a resposta.
- Um tempo limite excedido ou uma resposta inesperada na segunda requisição da sequência indica uma possível dessincronização.
- Confirme manualmente antes de criar um achado; falsos positivos ocorrem quando as condições da rede causam um tempo limite excedido sem relação com a sondagem.