Precisa de computação em nuvem? Comece agora mesmo

Examinando o ataque ao polyfill do ponto de vista da Akamai

Gal Meiri

escrito por

Gal Meiri

July 02, 2024

Gal Meiri

escrito por

Gal Meiri

Gal Meiri é pesquisador de segurança sênior e possui vasta experiência em pesquisa nos campos de ameaças ao cliente e recursos de navegador. Gal lidera a equipe de pesquisa de ameaças do Page Integrity Manager da Akamai. Como pesquisador, Gal investiga várias ameaças ao cliente, entre skimmers da Web e ataques Magecart. No passado, Gal se especializou em impressão digital de usuário e dispositivo do cliente e detecção de bots.

O ataque ao polyfill.io da cadeia de suprimentos ressalta as vulnerabilidades críticas inerentes ao desenvolvimento de aplicativos da Web modernos.
O ataque ao polyfill.io da cadeia de suprimentos ressalta as vulnerabilidades críticas inerentes ao desenvolvimento de aplicativos da Web modernos.

Comentários editoriais e adicionais por Tricia Howard

O ataque ao polyfill.io da cadeia de suprimentos: uma visão geral

Recentemente, a comunidade de segurança foi alertada para um significativo ataque à cadeia de suprimentos envolvendo o polyfill.io, um serviço que fornece polyfills (um código JavaScript que permite a funcionalidade moderna em navegadores mais antigos que não o suportam nativamente) para aplicativos da Web. De acordo com relatórios detalhados, esse ataque afetou mais de 100.000 websites, abusando da confiança e do uso generalizado do serviço polyfill.io para propagar código mal-intencionado.

Nesse ataque, um agente mal-intencionado que parece estar localizado na China adquiriu um dos projetos de código aberto de polyfill mais populares há alguns meses e infectou o código JavaScript de polyfill injetando scripts mal-intencionados nos polyfills distribuídos. O ataque visou principalmente dispositivos móveis, amostrando seletivamente sessões para permanecer furtivos e difíceis de detectar. O código mal-intencionado foi então usado para um ataque de redirecionamento, desviando usuários para websites de golpe.

À medida que os desenvolvedores integravam esses polyfills comprometidos em seus websites, eles introduziram inadvertidamente códigos maliciosos em seus aplicativos. Nesta publicação no blog, discutiremos esse ataque específico e os ataques à cadeia de suprimentos em geral, bem como dados exclusivos que observamos do ponto de vista do Akamai Client-Side Protection & Compliance.

O que é um ataque à cadeia de suprimentos?

Um ataque à cadeia de suprimentos visa as vulnerabilidades dentro da cadeia de suprimentos de uma organização. No contexto de aplicativos da Web online, os websites modernos carregam dezenas de recursos de terceiros como parte da funcionalidade regular do website. Esses recursos são confiáveis pelos proprietários de websites e geralmente têm acesso total à página, incluindo o DOM (modelo de objeto do documento), cookies e informações confidenciais inseridas pelos usuários finais.

Monitorar e rastrear esses recursos é extremamente desafiador devido a seus números, mudanças frequentes e falta de visibilidade do lado do cliente. Essa confiança pode ser explorada por invasores, que usam esses serviços de terceiros para comprometer aplicativos da Web. Esses ataques geralmente envolvem a injeção de código mal-intencionado em bibliotecas ou serviços legítimos de terceiros, que são então distribuídos inadvertidamente para os usuários finais.

De acordo com pesquisas realizadas pelo Akamai Security Intelligence Group, 50% dos JavaScripts usados em websites de comércio eletrônico vêm de fontes de terceiros. Em média, observamos códigos de dezenas de diferentes fornecedores terceirizados nas páginas de pagamento de nossos clientes, que agora precisam estar em conformidade com os novos requisitos 6.4.3 e 11.6.1 do PCI DSS v4.0.

O ataque ao polyfill do ponto de vista da Akamai

O ataque ao polyfill é entregue por meio do website de destino como código JavaScript originário de cdn.polyfill.io. O ataque usa amostragem do lado do servidor e do lado do cliente. No lado do servidor, ele examina cabeçalhos de solicitação, como o agente de usuário, para direcionar apenas dispositivos móveis com condições específicas. Para outros dispositivos, o servidor de polyfill serve o código de polyfill original ou uma resposta vazia para navegadores modernos.

O processo de amostragem não se limita ao lado do servidor. Durante a execução, o código também verifica o tipo de dispositivo no lado do cliente usando seu próprio JavaScript. Além disso, ele seleciona alvos com base no solicitante da página e na hora local do dispositivo. Quando o JavaScript mal-intencionado executa seu ataque, ele se comunica com um servidor no googie-anaiytics[.]com.

Conseguimos monitorar a execução de JavaScript mal-intencionado na página da Web, incluindo a comunicação com seu servidor. Quando uma atividade suspeita foi detectada, um alerta foi acionado para os clientes afetados. O mais importante quando falamos de qualquer ameaça é agilidade; a capacidade de responder rapidamente é fundamental para limitar o raio de ataque.

As políticas de comportamento de scripts Client-Side Protection & Compliance foram definidas para bloquear essa comunicação, negando esse caminho do ataque de prosseguir. A Figura 1 mostra um exemplo real disso na prática: A negação desse caminho de ataque ocorreu em tempo real, imediatamente após a ativação da política.

Políticas de comportamento de scripts Fig. 1: Políticas de comportamento de scripts Akamai Cliente-Side Protection & Compliance

O polyfill.io usa tendências antes e depois do ataque

Observamos que mais de 40 clientes tinham recursos carregados do polyfill.io. Alguns desses clientes experimentaram dezenas de milhares de páginas afetadas diariamente (Figura 2). Esse número inclui clientes que usaram diretamente recursos JavaScript do polyfill.io, terceiros que incluíram esse código como parte de sua execução e recursos provenientes das extensões do navegador dos usuários finais.

Observamos que mais de 40 clientes tinham recursos carregados do polyfill.io. Alguns desses clientes experimentaram dezenas de milhares de páginas afetadas diariamente (Figura 2). Fig. 2: Tendência de beacons com recursos carregados do polyfill.io

Nossos dados foram extraídos do Akamai Client-Side Protection & Compliance, que monitora e analisa ativamente as execuções de JavaScript em tempo real, permitindo um tempo reduzido de correção, seja ele próprio ou de terceiros.

A Akamai está colaborando de perto com seus clientes para responder efetivamente e mitigar o impacto do ataque, incluindo o envio de uma notificação para os clientes relevantes com um boletim de segurança sobre o ataque. Essa abordagem proativa levou a uma redução significativa nos recursos originados do nome de domínio infectado, reduzindo, assim, a exposição a riscos para os clientes da Akamai.

Precisa de ajuda com ataques à cadeia de suprimentos?

O Akamai Client-Side Protection & Compliance foi desenvolvido para proteger os clientes contra ataques do lado do cliente, provenientes de fontes próprias e de terceiros, incluindo ataques à cadeia de suprimentos.

A solução monitora os recursos JavaScript em  aplicativos da Web, analisa sua execução em tempo real e determina se eles se comportam de forma suspeita. Ele também detecta anomalias de comportamento do script, fornecendo uma análise detalhada de cada recurso JavaScript carregado e executado em aplicativos da Web.

Além disso, o Client-Side Protection & Compliance oferece recursos de mitigação em tempo real que impedem a execução de scripts mal-intencionados em segundos. Sem a necessidade de alterar o código do aplicativo da Web para bloquear o comportamento suspeito, as equipes de segurança podem melhorar de forma muito significativa o tempo de resposta a um ataque. A solução é capaz de detectar o ataque ao polyfill.io e as sessões de usuário impactadas e, em seguida, interromper a execução do ataque.

Vantagens da detecção e da mitigação no navegador

Esse ataque foi direcionado apenas a um pequeno número de sessões, filtrando especialmente sessões com navegadores incomuns de agente de usuário, de modo que as soluções que só executam varreduras sintéticas no website podem ter escapado desse fluxo de ataque. Uma das principais vantagens do Akamai Client-Side Protection & Compliance é que ele é executado dentro do navegador para cada sessão do usuário; detectou execuções maliciosas de JavaScript mesmo quando essas sessões específicas direcionadas foram iniciadas e, mais importante, impediu a execução do ataque na página quando a política de proteção foi ativada (Figura 3).

Akamai Client-Side Protection & Compliance Fig. 3: O Akamai Client-Side Protection & Compliance fornece uma análise detalhada de cada recurso JavaScript detectado no website do cliente

Conclusão

O ataque ao polyfill.io da cadeia de suprimentos ressalta as vulnerabilidades críticas inerentes ao desenvolvimento de aplicativos da Web modernos. A dependência de recursos de terceiros pode, inadvertidamente, introduzir riscos de segurança, mesmo quando todas as proteções adequadas estiverem em vigor. Esse incidente, envolvendo mais de 100.000 websites, destacou a facilidade com que os serviços confiáveis podem ser comprometidos para distribuir código mal-intencionado, diminuindo a segurança e a confiança do usuário.

O trabalho do Akamai Security Intelligence Group é monitorar ameaças como essas, tanto para nossos clientes quanto para a comunidade de segurança em geral. Continuaremos a observar o ecossistema de ameaças e a fornecer descrições das nossas observações. Para obter atualizações em tempo real, siga-nos no X(antigo Twitter) ou confira nossa página de pesquisas sobre segurança.



Gal Meiri

escrito por

Gal Meiri

July 02, 2024

Gal Meiri

escrito por

Gal Meiri

Gal Meiri é pesquisador de segurança sênior e possui vasta experiência em pesquisa nos campos de ameaças ao cliente e recursos de navegador. Gal lidera a equipe de pesquisa de ameaças do Page Integrity Manager da Akamai. Como pesquisador, Gal investiga várias ameaças ao cliente, entre skimmers da Web e ataques Magecart. No passado, Gal se especializou em impressão digital de usuário e dispositivo do cliente e detecção de bots.