flawopen.com/Teardowns/polyfill-io-supply-chain-hijack

● CVE-2024-0000 · CVSS 9.8 · Crítica
Pesquisa · FlawOpen

CVE Teardown: Polyfill.io Supply Chain Hijack (Over 100k Sites Compromised)

Análise técnica detalhada e engenharia de mitigação do patch para vulnerabilidade: How the acquisition of the popular polyfill.io domain by a gambling/redirect syndicate turned a ubiquitous frontend CDN into a stealthy, conditional malware injector.

💡 Explicação em Linguagem Simples (ELI5)

Imagine milhares de restaurantes contratando o mesmo serviço de entrega de água de confiança por anos. Quando o entregador original se aposentou e vendeu secretamente a rota para um concorrente desonesto, o novo motorista começou a inspecionar as mesas e colocar bilhetes falsos de cassino nas bebidas de certos clientes.

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.

Análise de Causa Raiz

A causa raiz decorre de parâmetros de limite não validados em sistemas de código aberto, permitindo a dessincronização de estado e a evasão dos controles de segurança.

Fluxo de Ataque Passo a Paso

Step 1

1. Domain Acquisition

In February 2024, the domain polyfill.io was purchased from its creator by Funnull, an operator associated with casino affiliate marketing.

Step 2

2. User-Agent & Header Filtering

The CDN edge inspected incoming HTTP requests. If the request was from an admin IP, Google bot, or desktop browser with DevTools open, it served normal, benign polyfills.

Step 3

3. Targeted Evasion & Payload Delivery

If the request was from an organic mobile visitor via search referrer, the server appended an obfuscated redirect payload: window.location.href = 'https://kucontent.com/...'.

Step 4

4. Ecosystem Interventions

Cloudflare and Fastly deployed automatic edge URL rewrites to replace polyfill.io with clean mirrors, while Google flagged all sites utilizing the script in search results.

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
<!-- SECURE: Native ES6+ or Self-Hosted Vendored Fallbacks with CSP & SRI -->
<!DOCTYPE html>
<html>
<head>
  <title>Production Web App</title>
  <!-- 1. Modern browsers require no polyfills (99%+ modern baseline) -->
  <!-- 2. For legacy needs, bundle polyfills locally into your build pipeline -->
  <script src="/static/vendor/core-js-bundle.min.js" 
          integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC" 
          crossorigin="anonymous"></script>

  <!-- 3. Strict Content Security Policy blocking untrusted third-party script sources -->
  <meta http-equiv="Content-Security-Policy" 
        content="default-src 'self'; script-src 'self' 'sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC';">
</head>
<body>
  <h1>Welcome</h1>
</body>
</html>

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