Blaze Blog /

Uma pesquisa sobre o uso de cabeçalhos de segurança HTTP no Brasil e na Estônia

Security
May 30, 2016
4min read
Um estudo sobre o uso de cabeçalhos de segurança HTTP no Brasil e na Estônia

Introdução

Nos últimos anos, diversos controles de segurança do lado do cliente para navegadores surgiram na forma de cabeçalhos de segurança. Esses cabeçalhos podem ser usados para melhorar a segurança da experiência do usuário ao interagir com uma aplicação web com pouco esforço adicional e um impacto insignificante no desempenho — essencialmente, eles podem servir como uma rede de proteção para mitigar diversos ataques web conhecidos.

Apesar de todos os benefícios trazidos por esses cabeçalhos, a julgar pelas avaliações de segurança web que realizamos, pareceu-nos que sua presença é muito menos difundida do que gostaríamos.

Com isso em mente, buscamos responder à pergunta sobre quão populares são os cabeçalhos de segurança HTTP e quantificar sua prevalência no Brasil e na Estônia, onde estamos presentes.

Cabeçalhos de segurança HTTP

Esta seção pretende fornecer uma visão geral muito breve dos cabeçalhos de segurança mais comuns. Cada um deles serve a um propósito diferente, como ativar o filtro XSS integrado do navegador, aplicar regras para o carregamento de JavaScript, desativar o uso de frames, prevenir ataques do tipo FireSheep, entre outros.

  • X-XSS-Protection: ativa o filtro anti-XSS integrado do IE e do Chrome.
  • X-Content-Type-Options: impede que o navegador realize a detecção automática (sniffing) do tipo de conteúdo.
  • HTTP Strict Transport Security: força o navegador a acessar apenas a versão HTTPS de um site.
  • X-Frame-Options: impede que o site em questão seja exibido dentro de um frame, protegendo contra ataques de clickjacking.
  • Content Security Policy: impõe uma série de restrições sobre como o conteúdo é buscado e carregado e como os scripts são executados — reduz o risco de exploração bem-sucedida de cross-site scripting, conteúdo misto, etc.
  • Public key pinning: baseado no modelo de confiança no primeiro uso, é um recurso de segurança que instrui o navegador a fixar os hashes de certificados para um site específico. Isso previne ataques man-in-the-middle, incluindo aqueles em que um invasor comprometeu uma autoridade certificadora confiável.

Para informações detalhadas sobre cabeçalhos de segurança HTTP, consulte esta postagem no blog e a lista de cabeçalhos de segurança HTTP úteis da OWASP.

De onde surgiu a ideia da pesquisa

Há alguns meses, enquanto configurávamos nossa infraestrutura voltada para a web, não queríamos dar margem ao velho ditado "casa de ferreiro, espeto de pau". Afinal, somos uma empresa de consultoria em segurança da informação e precisamos praticar o que pregamos — não faria sentido algum aconselhar clientes a usar cabeçalhos de segurança em seus servidores web quando nós, os consultores de confiança, não o fazemos.

Na verdade, infelizmente, muitas empresas de segurança de TI nem sequer aproveitam esses cabeçalhos, mas essa discussão foge ao escopo deste post.

Embora a configuração da maioria dos cabeçalhos de segurança HTTP seja, na maioria dos casos, bastante direta e apesar da existência de tutoriais passo a passo na Internet, em muitos projetos de segurança de aplicações web que realizamos, notamos que raramente víamos esses cabeçalhos sendo utilizados.

Por que Brasil e Estônia?

Segurança na Internet é o nosso negócio, e ter uma visão mais ampla do estado atual da conscientização e do uso de controles de segurança nos países onde estamos incorporados é do nosso interesse.

Além disso, esses países possuem uma forte taxa de penetração da Internet: em 2016, 66,4% no Brasil (mais de 100 milhões de pessoas) e impressionantes 91,4% na Estônia.

Configurando o experimento

Começamos baixando uma lista do Alexa Top 1 milhão de sites mais visitados no mundo. A partir dessa lista, extraímos todos os domínios terminados em ".ee" e ".br" e removemos duplicatas de domínios como "blogspot.com.br", etc. Isso nos deixou com 539 URLs estonianas e 15.434 sites brasileiros para analisar.

Escrevemos um script em Python para automatizar a pesquisa. Em resumo, o processo consiste em enviar uma solicitação GET simples ao servidor web e analisar os cabeçalhos que vêm na resposta. Para cada cabeçalho de segurança encontrado na resposta, um contador de pontuação é incrementado em 1. Os resultados são salvos em um banco de dados SQLite3 local.

É importante ressaltar que nenhuma solicitação maliciosa precisou ser emitida para obter esses cabeçalhos; apenas uma conexão normal ao servidor web. A análise da resposta funciona de forma passiva e é realizada offline.

No momento da análise, conseguimos coletar dados de 14.334 sites brasileiros e 514 da Estônia. Uma pequena quantidade de sites não pôde ser acessada durante o experimento.

O código escrito para esta análise verifica apenas a presença de cabeçalhos de segurança HTTP, mas não faz qualquer julgamento sobre a eficácia ou correção das configurações ou regras implementadas pelo servidor. Por exemplo, ele não verifica a validade dos pins HSTS ou se o X-XSS-Protection está definido como 0.

A pesquisa começou pela Estônia, pois continha um número muito menor de URLs para consultar, o que nos permitiu validar rapidamente nossa hipótese e verificar se estávamos no caminho certo, além de ajustar nosso script e corrigir quaisquer bugs que pudessem causar problemas ao realizar o mesmo exercício com um conjunto de dados maior.

O script e os dados usados para conduzir o experimento podem ser encontrados em nosso Github.

Resultados da pesquisa

No Brasil, descobrimos que 12.462 de 14.334 sites — ou seja, 86,94% dos sites mais visitados do país — não utilizavam nenhum cabeçalho de segurança HTTP. Na Estônia, esse número foi de 448, representando 87,15% dos sites mais populares.

Chart showing percentage of sites with no HTTP security headers in Brazil and Estonia

Aproximadamente 13,05% dos sites no Brasil empregam pelo menos um cabeçalho de segurança, enquanto na Estônia esse índice é de 12,84%.

Por fim, nenhum dos sites em ambos os países habilitou todos os cabeçalhos de segurança incluídos nesta pesquisa. Apenas cinco sites — quatro no Brasil e um na Estônia — tinham cinco dos cabeçalhos habilitados.

Conclusão

Embora os cabeçalhos de segurança HTTP existam há alguns anos, parece que eles ainda não ganharam a popularidade que merecem. Isso nega a proteção aplicada pelo navegador a centenas de milhares de usuários, deixando-os expostos a possíveis vulnerabilidades nas aplicações hospedadas por esses servidores web.

Este projeto de pesquisa de fim de semana revelou que a adoção desses cabeçalhos ainda é muito fraca e está longe de ser onipresente.

Esperamos que os resultados da pesquisa tragam mais conscientização aos administradores de sistemas e desenvolvedores de aplicações, a fim de melhorar a segurança web como um todo.

Do you have questions? Let's talk.

Get in touch with our cybersecurity experts

Read More