FlawOpen

flawopen.com/Incidents/polyfill-io-supply-chain-incident-june-2024

● Polyfill.io service · CWE-829 · June 2024 · Alta
Pesquisa · FlawOpen

Ataque à cadeia do Polyfill.io (2024)

Incidente de 2024: o CDN polyfill.io redirecionou alguns visitantes. Remova a referência ao serviço externo; não houve CVE.

💡 Explicação em Linguagem Simples (ELI5)

Imagine que um restaurante coloca em cada mesa uma garrafa de um fornecedor externo. Se o fornecedor mudar o conteúdo, poderá afetar os clientes que a usam, mesmo sem o restaurante alterar o cardápio.

Conceitos Centrais e Termos

Dynamic User-Agent Polyfilling
Fornecimento de pacotes JavaScript personalizados com base nos cabeçalhos do navegador do cliente, inviabilizando hashes de Subresource Integrity (SRI).
Conditional Payload Evasion
Análise de cabeçalho Referer, tamanho de tela, user-agent e ferramentas de desenvolvedor para entregar scripts limpos aos desenvolvedores enquanto ataca consumidores móveis reais.
Domain Ownership Transfer Risk
O perigo inerente de incorporar scripts de terceiros de domínios que podem ser adquiridos, expirar ou ser transferidos sem consentimento.
Subresource Integrity (SRI)
Mecanismo criptográfico do navegador que valida os hashes dos scripts antes de sua execução.

Mapeamentos de frameworks

  • Referência CWE para a fraqueza descrita neste guia: CWE-829

Linha do Tempo do Incidente

Fevereiro de 2024

A Sansec informou que o domínio e a conta GitHub mudaram de mãos; a Fastly ofereceu uma alternativa preventiva.

25 de junho de 2024

A Sansec publicou sua análise e estimou exposição em mais de 100 mil sites com base em sua medição.

26–27 de junho de 2024

A Cloudflare anunciou reescritas automáticas para seu espelho; depois, o domínio foi suspenso. Remova referências antigas em vez de depender de reescritas temporárias.

Fluxo de Ataque Passo a Paso

Passo 1

Mudança de controle

Sansec informou que o domínio polyfill.io e a conta GitHub mudaram de mãos em fevereiro de 2024. A Fastly ofereceu uma alternativa preventiva antes dos relatos de respostas maliciosas. Mais tarde, a Fastly disse que soube do ataque quando a Sansec publicou seu relatório; a alternativa oferecida em fevereiro foi uma precaução, não uma indicação de que já conhecia atividade maliciosa.

Passo 2

O site carrega o CDN

Uma página que referencia cdn.polyfill.io faz o navegador buscar e executar o JavaScript retornado no contexto dessa página.

Passo 3

Redirecionamento condicional observado

A amostra analisada pela Sansec redirecionava condicionalmente alguns visitantes móveis. Isso descreve a amostra, não todas as respostas do CDN.

Passo 4

Mitigações e resposta

A Cloudflare reescreveu referências para seu espelho; a Fastly ofereceu uma alternativa separada. A Sansec relatou reprovação de anúncios no Google Ads para alguns comércios, não uma penalidade geral na busca orgânica.

Código-Fonte: Vulnerável vs. Seguro

IMPLEMENTAÇÃO VULNERÁVEL
<!-- VULNERABLE: Direct 3rd-party CDN script without integrity verification -->
<!DOCTYPE html>
<html>
<head>
  <title>Production Web App</title>
  <!-- Polyfill CDN serves arbitrary dynamic code controlled by third party -->
  <script src="https://cdn.polyfill.io/v3/polyfill.min.js?features=default,Array.prototype.flat"></script>
</head>
<body>
  <h1>Welcome</h1>
</body>
</html>
PATCH SEGURO E ROBUSTO
<!-- Build this file from a reviewed, version-pinned dependency. -->
<script defer src="/assets/vendor/polyfills.min.js"></script>

Lista de Verificação de Segurança para Engenharia

Fontes