flawopen.com/Incidents/polyfill-io-supply-chain-incident-june-2024
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.
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
A Sansec informou que o domínio e a conta GitHub mudaram de mãos; a Fastly ofereceu uma alternativa preventiva.
A Sansec publicou sua análise e estimou exposição em mais de 100 mil sites com base em sua medição.
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
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.
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.
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.
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
<!-- 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><!-- 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
- ✓Nunca load third-party scripts from public CDNs into production applications without Subresource Integrity (SRI) hashes.
- ✓Prática recomendada de segurança: Vendor all runtime polyfills and libraries directly into your application bundle via npm/yarn/pnpm lockfiles.
- ✓Imponha a strict Content Security Policy (CSP) with script-src 'self' to prevent unauthorized script injections.
- ✓Realize uma auditoria de all domain assets periodically to ensure embedded hosts have not lapsed or transferred ownership.
- ✓Não use SRI como substituto à revisão da origem da dependência; aplique-o apenas quando os bytes forem estáveis e o hash tiver sido verificado.