Uma equipe de pesquisadores da Universidade de Pequim, da Universidade de Tsinghua e da Universidade do Texas em Dallas
O cabeçalho Range dá ao cliente a capacidade de especificar um intervalo de posições no arquivo que deve ser baixado em vez de retornar o arquivo inteiro. Por exemplo, o cliente pode especificar "Intervalo: bytes=0-1023" e o servidor transmitirá apenas os primeiros 1024 bytes de dados. Este recurso é solicitado ao baixar arquivos grandes - o usuário pode pausar o download e continuar a partir da posição interrompida. Ao especificar “bytes=0-0”, o padrão instrui a fornecer o primeiro byte do arquivo, “bytes=-1” - o último, “bytes=1-” - começando de 1 byte até o final do arquivo. É possível transmitir vários intervalos em um cabeçalho, por exemplo “Intervalo: bytes=0-1023,8192-10240”.
Além disso, foi proposta uma segunda opção de ataque, que visa aumentar a carga da rede ao encaminhar o tráfego através de outro CDN, que é usado como proxy (por exemplo, quando Cloudflare atua como frontend (FCDN) e Akamai atua como backend ( BCDN). O método é semelhante ao primeiro ataque, mas está localizado em redes CDN e permite aumentar o tráfego quando acessado através de outras CDNs, aumentando a carga na infraestrutura e reduzindo a qualidade do serviço.
A ideia é que o invasor envie solicitações Range de vários intervalos para o CDN, como "bytes=0-,0-,0-...", "bytes=1-,0-,0-..." ou "bytes=-1024,0 ,0-,0-...". As solicitações contêm um grande número de intervalos “0-”, implicando que o arquivo é retornado da posição zero até o final. Devido a uma implementação incorreta de análise de intervalo, quando o primeiro CDN acessa o segundo, um arquivo completo é enviado para cada intervalo “53-” (os intervalos não são agregados, mas iterados sequencialmente), caso haja duplicação e interseção de intervalos em a solicitação inicialmente enviada pelo invasor. O grau de amplificação do tráfego em tal ataque varia de 7432 a XNUMX vezes.
Durante o estudo, foi estudado o comportamento de 13 CDNs -
Akamai, Alibaba Cloud, Azure, CDN77, CDNsun, Cloudflare, CloudFront, Fastly, G-Core Labs, Huawei Cloud, KeyCDN, StackPath e Tencent Cloud. Todas as CDNs examinadas permitiram o primeiro tipo de ataque ao servidor final. A segunda variante do ataque CDN afetou 6 serviços, dos quais quatro poderiam atuar como frontend no ataque (CDN77, CDNsun, Cloudflare e StackPath) e três como backend (Akamai, Azure e StackPath). O maior ganho é alcançado no Akamai e StackPath, que permitem especificar mais de 10 mil intervalos no cabeçalho Range. Os proprietários de CDN foram notificados das vulnerabilidades há cerca de 7 meses e, no momento em que as informações foram divulgadas publicamente, 12 dos 13 CDNs haviam corrigido os problemas identificados ou manifestado disposição para corrigi-los (apenas o serviço StackPath não respondeu).
Fonte: opennet.ru