Pesquisadores das universidades de Hamburgo e Colônia
uma nova técnica de ataque às redes de distribuição de conteúdo e proxies de cache — (Cache-Poisoned Denial-of-Service). O ataque permite obter a negação de acesso à página através da contaminação do cache.
O problema está relacionado ao fato de que os CDN armazenam em cache não apenas solicitações bem-sucedidas, mas também situações em que o servidor http retorna um erro. Normalmente, em problemas com a formação de solicitações, o servidor produzirá um erro 400 (Bad Request), sendo que a única exceção é o IIS, que retorna um erro 404 (Not Found) para cabeçalhos excessivamente grandes. O padrão permite armazenar em cache apenas erros com códigos 404 (Not Found), 405 (Method Not Allowed), 410 (Gone) e 501 (Not Implemented), mas alguns CDN também armazenam em cache respostas com código 400 (Bad Request), que depende da solicitação enviada.
Os atacantes podem fazer com que o recurso original retorne um erro "400 Bad Request" ao enviar uma solicitação com cabeçalhos HTTP formatados de uma determinada maneira. Esses cabeçalhos não são considerados pelos CDN, portanto, a informação sobre a impossibilidade de acessar a página será armazenada em cache e todas as outras solicitações válidas dos usuários até o tempo limite podem resultar na exibição do erro, apesar do site original fornecer o conteúdo sem problemas.
Três opções de ataque foram propostas para forçar o servidor HTTP a retornar um erro:
- HMO (HTTP Method Override) — o atacante pode sobrepor o método original da solicitação através dos cabeçalhos "X-HTTP-Method-Override", "X-HTTP-Method" ou "X-Method-Override", suportados por alguns servidores, mas não considerados pelos CDN. Por exemplo, é possível mudar o método original "GET" para um método "DELETE" proibido no servidor ou um método "POST" inaplicável à estática;
- HHO (HTTP Header Oversize) — o atacante pode ajustar o tamanho do cabeçalho de modo que exceda o limite do servidor original, mas não atinja as restrições do CDN. Por exemplo, o Apache httpd limita o tamanho do cabeçalho em 8 KB, enquanto o CDN Amazon Cloudfront permite cabeçalhos de até 20 KB;
- HMC (HTTP Meta Character) — o atacante pode inserir na solicitação caracteres especiais (\n, \r, \a), que são considerados inválidos no servidor original, mas ignorados no CDN.
O CDN CloudFront, utilizado nos Amazon Web Services (AWS), foi o mais afetado por ataques. Atualmente, a Amazon já resolveu o problema ao proibir o cache de erros, mas a equipe de pesquisa levou mais de três meses para conseguir implementar a proteção. O problema também afetou o Cloudflare, Varnish, Akamai, CDN77 e
Fastly, embora o ataque através deles seja limitado a servidores-alvo que utilizam IIS, ASP.NET, e . , levando a atacar potencialmente 11% dos domínios do Departamento de Defesa dos EUA, 16% das URLs da base de dados do HTTP Archive e cerca de 30% dos 500 maiores sites segundo o ranking da Alexa.
Como uma medida alternativa para bloquear ataques do lado do site, pode-se usar o cabeçalho "Cache-Control: no-store", que proíbe o cache das respostas. Em alguns CDNs, como no
CloudFront e Akamai, é possível desativar o cache de erros nas configurações do perfil. Para proteção, também podem ser usados firewalls de aplicações web (WAF, Web Application Firewall), mas eles devem ser implementados no lado do CDN antes dos hosts que fazem o cache.
Fonte: opennet.ru
