Skip to main content
Blog
Blog Attacks

Ataque à cadeia de suprimentos do Polyfill.io: linha do tempo completa, análise e lições (2024–2026)

Uma linha do tempo completa e documentada do ataque à cadeia de suprimentos do Polyfill.io, da venda do domínio em 2024 às sanções contra a Funnull em 2025, e como removê-lo hoje.

Jun 14, 2026 10 min read
Ataque à cadeia de suprimentos do Polyfill.io: linha do tempo completa, análise e lições (2024–2026)

Resposta rápida: o ataque à cadeia de suprimentos do Polyfill.io começou quando o domínio polyfill.io, amplamente incorporado, foi vendido à Funnull em fevereiro de 2024 e passou a servir JavaScript malicioso em junho. A cside foi a primeira a relatar a dimensão real do ataque: mais de 490.000 sites, não os 100.000 que quase todos os veículos repetiram. Esse número menor era apenas onde a ferramenta de busca parava de contar. Um ano depois, o Tesouro dos EUA sancionou a Funnull pela operação. Esta é a linha do tempo completa, o que o código fazia e como encontrá-lo e removê-lo.

O ataque ao Polyfill.io é um dos incidentes de cadeia de suprimentos no navegador mais claros já registrados. Uma utilidade gratuita e confiável ficou em centenas de milhares de sites por anos. Novos donos a transformaram em uma superfície de ataque da noite para o dia. Nenhum proprietário de site mudou uma linha de código, mas seus visitantes foram expostos.

Esta página reúne a história inteira em um só lugar: uma linha do tempo datada, a verdade por trás do número de "100.000 sites", o que o payload realmente fazia, o CVE, as sanções contra a Funnull que se seguiram e uma lista prática de limpeza. Para aprofundamentos, cada seção remete às nossas reportagens originais de 2024 e 2025.

A versão curta

  • O domínio polyfill.io foi vendido à Funnull em fevereiro de 2024. Em junho, já estava servindo redirecionamentos maliciosos.
  • Não existe um CVE para todo o incidente; o mais próximo, CVE-2024-38526, tem como escopo a ferramenta de documentação pdoc que carregava o polyfill.io — não o ataque em si.
  • A dimensão real era de 490.000+ sites, não os 100.000 amplamente citados. Esse número era o limite de resultados padrão do PublicWWW. A cside relatou o número real primeiro.
  • O payload capturado era um redirecionamento apenas em dispositivos móveis para sites de fraude e apostas, construído para evadir pesquisadores.
  • Em 2025-05-29, a OFAC sancionou a Funnull e seu administrador Liu Lizhi.
  • Em 2026-05-18, mais de 61.000 páginas ainda incorporam o polyfill.io. Se a sua é uma delas, remova-o.

Linha do tempo completa (2009–2026)

DataEvento
2009–2010Remy Sharp cunha o termo "polyfill"; a ideia se espalha pela comunidade de desenvolvimento web
2014Andrew Betts cria o serviço polyfill.io no Financial Times Labs; uma única tag de script adapta os polyfills a cada navegador
2014-10-28O HTML5 se torna uma Recomendação do W3C; navegadores evergreen, que se atualizam automaticamente, logo tornam o polyfill.io largamente desnecessário
~2023O Financial Times entrega o projeto a seu mantenedor de longa data, Jake Champion
Fev 2024O domínio polyfill.io e o repositório no GitHub são vendidos à Funnull, uma empresa de operação chinesa
2024-02-25Andrew Betts alerta publicamente: "Se o seu site usa polyfill.io, remova-o IMEDIATAMENTE"
2024-02-29A Cloudflare publica um espelho seguro no cdnjs para reduzir o risco da cadeia de suprimentos; a Fastly disponibiliza seu próprio espelho dias antes
2024-06-24O pesquisador japonês "piyokango" sinaliza o comportamento malicioso
2024-06-25A Sansec publica sua divulgação forense; a cside publica no mesmo dia e relata a dimensão real de 490.000+
2024-06-26A Cloudflare começa a reescrever automaticamente o polyfill.io para o seu espelho; o Google alerta os anunciantes afetados
2024-06-27A Namecheap suspende o domínio polyfill.io
2024-07-02A Censys conta de forma independente 384.773 hosts afetados
2025-05-29A OFAC sanciona a Funnull e o administrador Liu Lizhi; o FBI liga 548 CNAMEs da Funnull a mais de 332.000 domínios
2026-05-1861.593 páginas ainda incorporam o polyfill.io

O número de "100.000 sites" estava errado

Quase todos os relatos sobre este ataque usaram o mesmo número: cerca de 100.000 sites. Esse número é um artefato da ferramenta, não uma medição do ataque.

Os pesquisadores, incluindo a cside, usaram o PublicWWW para encontrar todas as páginas que continham o snippet do polyfill.io. O PublicWWW limita os resultados a 100.000 por padrão. Assim, toda contagem que dependeu dele chegou a "100.000+". Quando executamos a busca além do limite, o número real era de mais de 490.000 sites.

Isso importa porque o conjunto afetado não era aleatório. Ele pendia fortemente para destinos de alto tráfego e alta confiança: bancos, sites governamentais, grandes veículos e marcas conhecidas. Relatar "100.000" subestimava um ataque quase cinco vezes maior. A cside trazendo à tona o número real de 490.000+ é a correção que o registro público precisava, e a contagem independente da Censys de 384.773 hosts em 2024-07-02 confirma que a dimensão estava muito além de 100.000.

O que o código malicioso realmente fazia

O comportamento que foi capturado, decodificado e publicado era um redirecionamento. O relatório forense da Sansec em 2024-06-25 mostrou o script adulterado enviando alguns visitantes móveis através de um typosquat falso do Google Analytics, googie-anaiytics[.]com (note as letras trocadas), e em seguida para sites de apostas esportivas e adultos.

A técnica é o que o tornou perigoso e difícil de detectar. O redirecionamento:

  • disparava apenas em dispositivos móveis, nunca em desktop;
  • variava por região geográfica e por hora do dia;
  • atingia cada dispositivo ou IP apenas uma vez, de modo que nem a vítima nem o pesquisador conseguiam reproduzi-lo ao recarregar;
  • ficava em silêncio quando detectava um usuário administrador ou a presença de ferramentas de análise web;
  • vinha com proteções anti-engenharia-reversa.

Como o polyfill.io era um serviço dinâmico por design, o operador podia servir código limpo a um visitante e código malicioso ao seguinte. O Subresource Integrity não podia ajudar, porque ele fixa o hash de um arquivo fixo e este serviço não tinha arquivo fixo. O script rodava como first-party na própria origem de cada site, então tinha acesso ao DOM, aos formulários e aos cookies daquela página, e estava nas allowlists de CSP de centenas de milhares de domínios confiáveis.

Foi apenas um redirecionamento? Essa é a parte honesta e não resolvida. A desofuscação independente do payload recuperado encontrou lógica de redirecionamento e nada mais, sem captura de teclas, sem roubo de credenciais. Mas o design por requisição significa que uma variante voltada a um único visitante de alto valor não precisaria jamais aparecer em nenhuma varredura pública. O redirecionamento é o que foi capturado. O que mais pode ter rodado durante aqueles meses não pode ser provado de nenhuma forma. Apresentamos o argumento da capacidade em detalhe em O ataque ao Polyfill.io: muito mais do que um simples ataque de redirecionamento.

Para o relato completo do incidente da época, veja O ataque Polyfill explicado e nosso relatório do mesmo dia, Mais de 490 mil sites alvos de um ataque à cadeia de suprimentos web.

Existe um CVE para o ataque ao Polyfill.io?

Não existe um único CVE atribuído ao próprio incidente do Polyfill.io. O identificador mais próximo no National Vulnerability Database é o CVE-2024-38526, mas seu escopo é o pdoc — uma ferramenta de documentação de API em Python que criava links para o polyfill.io na documentação que gerava (corrigido no pdoc 14.5.1). Ele não cobre o cdn.polyfill[.]io nem o conjunto mais amplo de sites afetados. Se você gerencia um programa de vulnerabilidades, rastreie este incidente pelos domínios afetados (cdn.polyfill[.]io, além dos relacionados bootcdn[.]net, bootcss[.]com, staticfile[.]net, staticfile[.]org e unionadjs[.]com) em vez de um único CVE, e referencie o CVE-2024-38526 apenas para a exposição ao pdoc.

A conexão com a Funnull e as sanções de 2025

O Polyfill.io não foi um caso isolado. O comprador do domínio, a Funnull, operava algo muito maior.

Em 2025-05-29, o Office of Foreign Assets Control do Tesouro dos EUA sancionou a Funnull Technology Inc. e seu administrador, Liu Lizhi. O Tesouro ligou a infraestrutura da Funnull a mais de 200 milhões de dólares em perdas reportadas por vítimas nos EUA em esquemas de investimento, o padrão muitas vezes chamado de pig butchering. Seu comunicado descreveu a conexão com o polyfill sem nomear o serviço: em 2024 a Funnull "comprou um repositório de código usado por programadores web e alterou o código de forma maliciosa para redirecionar visitantes de sites legítimos para sites de fraude e sites de apostas online".

No mesmo dia, o FBI ligou 548 CNAMEs da Funnull a mais de 332.000 domínios. Isso é lavagem de infraestrutura: alugar espaço de cloud e CDN respeitáveis através de contas ilícitas e revendê-lo a fraudadores para que sites maliciosos pareçam legítimos e continuem difíceis de remover. Cobrimos as sanções e o que significam para equipes de segurança em Funnull sancionada: o que o ataque ao Polyfill.io revelou sobre lavagem de infraestrutura.

Quem ainda está exposto

Sanções perturbam uma empresa. Elas não removem código do seu site. Em 2026-05-18, o PublicWWW ainda listava 61.593 páginas contendo polyfill.io, bem mais de um ano após o domínio ter sido suspenso.

Esse resíduo é a verdadeira lição. Dependências do navegador continuam incorporadas muito depois de um domínio ser bloqueado, porque as pessoas não removem as coisas. Cada uma dessas páginas ainda aponta para um domínio que já foi transformado em arma uma vez.

Como encontrar e remover o Polyfill.io hoje

Comece pelas páginas que tocam login, checkout, criação de conta, pagamento e dados pessoais.

  1. Procure em seu código-fonte, tag managers, templates de CMS e snippets legados por polyfill.io, além dos domínios relacionados bootcdn[.]net, bootcss[.]com, staticfile[.]net, staticfile[.]org e unionadjs[.]com.
  2. Remova as referências. Navegadores modernos não precisam mais desses polyfills, então a exclusão é mais segura do que trocar por um espelho.
  3. Mapeie cada script de terceiros restante para um proprietário, uma finalidade, um escopo de página e um nível de acesso a dados.
  4. Sinalize scripts que carregam outros scripts, constroem URLs dinamicamente ou se comportam de forma diferente por user agent, região ou sessão.
  5. Use o Subresource Integrity apenas onde um script é estático e o fornecedor suporta hashes estáveis.
  6. Reforce a Content Security Policy em fluxos sensíveis, começando em modo report-only.
  7. Monitore o que os scripts realmente fazem em tempo de execução, para que uma mudança de propriedade ou um novo payload sejam visíveis quando usuários reais carregam a página.

O que este ataque ensina sobre segurança no lado do cliente

O ataque ao Polyfill.io funcionou porque a confiança foi tratada como permanente. Um script aprovado uma vez continuou rodando depois que a empresa por trás dele mudou e depois que o código que ele servia mudou. Os logs de servidor não o viram. Os questionários de fornecedor não o detectaram. O navegador o executou mesmo assim.

Essa lacuna, entre a inclusão confiável e a execução em tempo de execução, é exatamente o que a cside foi construída para fechar. A cside trabalha na camada do navegador, onde os scripts de terceiros realmente rodam. Ela mostra quais scripts carregam em páginas reais, o que eles chamam, como mudam e se tentam comportamento suspeito, como redirecionamentos inesperados ou acesso a dados. No caso do Polyfill.io, essa visão em tempo de execução é o que sinaliza uma dependência confiável no momento em que ela se torna hostil.

O próximo polyfill.io já está na web em algum lugar, incorporado e confiável. A única forma confiável de detectá-lo é observar o que seus scripts fazem, não apenas quem os enviou. Proteja seu site gratuitamente com a cside e veja todos os scripts que seus usuários realmente carregam.

Simon Wijckmans
Founder & CEO

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks — web security is not an enterprise-only problem.

FAQ

Frequently Asked Questions

O Polyfill.io era um serviço popular que entregava polyfills de JavaScript a sites através de uma única tag de script. Em fevereiro de 2024, o domínio e seu repositório no GitHub foram vendidos à Funnull, uma empresa de operação chinesa. Em junho de 2024, o serviço estava servindo código malicioso que redirecionava usuários móveis para sites de fraude e de apostas esportivas. Como o script rodava como first-party em cada site que o incorporava, o operador podia mudar o que servia a qualquer momento.

A maior parte da cobertura disse 100.000. Esse número estava errado. Era o limite de resultados padrão do PublicWWW, a ferramenta de busca de código que os pesquisadores usaram para contar as incorporações. A cside executou a mesma busca além do limite e encontrou mais de 490.000 sites que carregavam o script. A Censys contou de forma independente 384.773 hosts afetados em 2024-07-02. A dimensão real era muito maior do que o número da manchete e pendia para sites de alto tráfego e alta confiança.

Não. Não existe um único CVE para o próprio incidente do Polyfill.io. CVE-2024-38526 é o identificador mais próximo no National Vulnerability Database, mas seu escopo é o pdoc — uma ferramenta de documentação em Python que carregava o polyfill.io na documentação que gerava (corrigido no pdoc 14.5.1) — e não o domínio cdn.polyfill[.]io nem as centenas de milhares de outros sites que incorporavam o script.

O comportamento que foi capturado e decodificado era um redirecionamento. Ele enviava alguns visitantes móveis para um typosquat falso do Google Analytics (googie-anaiytics[.]com) e, em seguida, para sites de apostas e adultos. O redirecionamento disparava apenas em dispositivos móveis, variava por região e hora do dia, atingia cada dispositivo apenas uma vez e ficava em silêncio quando detectava um usuário administrador ou ferramentas de análise. A desofuscação independente encontrou apenas lógica de redirecionamento na amostra recuperada. Como o serviço gerava código por requisição, uma variante de roubo de dados direcionada a visitantes específicos nunca pôde ser descartada, mas nenhuma foi jamais capturada publicamente.

A Funnull comprou o domínio polyfill.io no início de 2024. Em 2025-05-29, a OFAC do Tesouro dos EUA sancionou a Funnull Technology Inc. e seu administrador Liu Lizhi por fornecer infraestrutura ligada a mais de 200 milhões de dólares em perdas de fraude reportadas por vítimas nos EUA. O comunicado do Tesouro descreveu a Funnull comprando um repositório de código usado por programadores web e alterando-o para redirecionar visitantes, o que corresponde ao incidente do Polyfill.io.

Procure em seu código-fonte, tag managers, templates de CMS e snippets antigos por polyfill.io, além dos domínios relacionados bootcdn[.]net, bootcss[.]com, staticfile[.]net, staticfile[.]org e unionadjs[.]com. Remova qualquer referência. Navegadores modernos não precisam mais desses polyfills, então a correção mais segura é a exclusão. Depois, monitore quais scripts de terceiros realmente carregam em tempo de execução, porque um domínio de fornecedor confiável pode mudar de mãos ou mudar de comportamento após a aprovação.

Monitore e Proteja Seus Scripts de Terceiros

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Comece grátis, ou experimente o Business com um teste de 14 dias.

Interface do painel cside mostrando monitoramento de scripts e análises de segurança
Related Articles
Agende uma demonstração