Glossário da F5

Injeção de Cabeçalho HTTP

O que é injeção de cabeçalho HTTP?

Injeção de cabeçalho HTTP é um método de ataque que explora vulnerabilidades em applications da web. Ao incorporar sequências de caracteres maliciosas, incluindo caracteres de retorno de carro e avanço de linha (CRLF), em solicitações HTTP enviadas ao servidor web, os invasores podem manipular as respostas HTTP. Applications web que armazenam parâmetros fornecidos pelo usuário diretamente em cabeçalhos de resposta HTTP sem higienização são particularmente vulneráveis ​​a esse tipo de ataque.

Por exemplo, considere um cenário em que um navegador envia a seguinte solicitação com um parâmetro:

http://f5.com/index.html?status=1

Se o application web desejar usar o parâmetro status=1 para gerenciamento de sessão, ele poderá retornar uma resposta HTTP como esta:

HTTP/1.1 200 OK
...
Definir-Cookie:status=1

Agora, suponha que a solicitação seja modificada com a seguinte entrada elaborada:

http://f5.com/index.html?status=1<CRLF><CRLF><html><corpo><script>~</script></corpo></html>

A resposta HTTP do application web seria alterada da seguinte forma:

HTTP/1.1 200 OK
...
Definir-Cookie:status=1
<linha em branco>
<html><corpo><script>~</script></corpo></html>

Em respostas HTTP, qualquer conteúdo após dois caracteres CRLF (linhas em branco) é tratado como o corpo da resposta e renderizado pelo navegador. Se o corpo da resposta incluir JavaScript malicioso, o navegador o executará, levando a possíveis violações de segurança. Além disso, os invasores podem criar entradas para injetar conteúdo de cabeçalho como:

<CRLF>Definir-Cookie:PHPSESSID=abc

Isso definiria um ID de sessão específico no navegador e permitiria ataques de fixação de sessão.

Como evitar a injeção de cabeçalho HTTP:

  • Sanitização: Valide e higienize parâmetros recebidos em cabeçalhos de solicitações HTTP para neutralizar sequências de caracteres maliciosas.
  • Firewall de application web (WAF): Como é difícil higienizar todos os applications da web de forma consistente, implantar um WAF é uma solução eficaz. Um WAF monitora o tráfego da camada de aplicação e pode bloquear solicitações consideradas ataques, reduzindo assim os riscos de injeção de cabeçalho HTTP.