Skip to main content
Blog
Blog Attacks

Como detectar Magecart em tempo real, não depois do vazamento

Scanners periódicos perdem skimmers condicionais. Monitoramento de runtime no navegador detecta Magecart ao enganchar um formulário ou abrir exfiltração.

Jul 11, 2026 7 min read
Como detectar Magecart em tempo real, não depois do vazamento

Para detectar Magecart em tempo real, observe scripts enquanto executam em sessões reais de compradores e alerte no momento em que um engancha um campo de formulário, se conecta ao botão de submit, ou abre um destino de saída que não estava na baseline da página. Um scan periódico de fora para dentro só diz o que a página retornou a um scanner, em um local de scan, durante uma janela de scan. Skimmers modernos são construídos para evitar exatamente isso.

A lacuna de tempo é o problema todo. Um scanner roda a cada poucas horas ou uma vez por dia a partir de um crawler fixo. Um skimmer roda na única sessão que lhe importa: um portador de cartão real, em uma região alvo, em um dispositivo alvo, no checkout. cside fecha essa lacuna observando as mesmas sessões que o atacante visa e capturando o que cada script faz em runtime, então uma mudança maliciosa aparece enquanto a exposição está ativa, não depois que um relatório forense de uma bandeira de cartão chega.

Por que scanners perdem skimmers condicionais

Payloads Magecart carregam cada vez mais lógica de guarda. Eles decidem se ativar antes de roubar qualquer coisa, o que significa que um fetch limpo não prova nada.

Condições de evasão comuns que derrotam scanning de fora para dentro:

  1. Geo-segmentação: o payload se ativa apenas para IPs em países específicos e serve código benigno em outros. Um scanner rastreando de uma região de datacenter fora do alvo nunca o dispara.
  2. Gating por dispositivo e UA: o skimmer roda apenas em perfis reais de navegador mobile ou desktop e se suprime para assinaturas headless ou de crawler.
  3. Janelas de tempo: ativação é limitada a certas horas, então um scan que roda no horário errado não vê nada.
  4. Gating por estado de sessão: o código espera por um carrinho populado ou uma rota de checkout antes de se armar, o que um scan sintético que carrega uma URL nunca alcança.
  5. Checagens anti-automação: o payload inspeciona navigator.webdriver, ausência de timing de input, ou ausência de eventos de ponteiro e permanece dormente quando detecta uma sessão automatizada.

Cada condição é um filtro que exclui scanners por design. O atacante não precisa derrotar a assinatura da sua ferramenta de monitoramento; ele só precisa reconhecer que o visitante não é um cliente pagante no segmento alvo. Isso é muito mais fácil, e um snapshot estático do arquivo não consegue capturar uma decisão que o código toma no momento da execução.

O que o monitoramento de runtime vê que um scan nunca verá

Scanning de fora para dentro compara conteúdos de arquivo ou hashes. Monitoramento de runtime observa comportamento em um navegador vivo, que é uma superfície diferente e maior.

SinalScan periódico de fora para dentroMonitoramento de runtime no navegador
Payload condicional que se esconde de crawlersVê a versão benignaVê a versão servida à sessão real alvo
Leituras de DOM / campos de cartão e loginNão observadasObservadas conforme o script acessa o campo
Hooks de evento em submit, keydown ou changeNão observadosCapturados quando o listener se conecta
Novo endpoint de exfiltração no clique de pagamentoPerdido a menos que capturado no meio da requisiçãoSinalizado contra a baseline de destinos da página
Comprometimento de uma origem de vendor já permitidaHash/origem ainda parecem autorizadosMudança de comportamento o sinaliza independentemente da origem
Payload ofuscado montado em runtimeArquivo estático parece inerteVisível quando executa e age

Os comportamentos que importam em um skimmer digital não estão no arquivo em repouso. Eles acontecem quando o script roda: ele mergulha no DOM, lê value do input de número do cartão, registra um handler no evento submit do formulário, então monta um payload e o envia com fetch, XMLHttpRequest, ou navigator.sendBeacon para um domínio parecido no instante em que o usuário clica em pagar. Observar a execução é o único ponto de vista que vê essa sequência.

O caso mais difícil para ferramentas baseadas em hash é o comprometimento de cadeia de suprimentos. Um script de vendor confiável recebe uma versão nova e aparentemente legítima de uma origem de CDN autorizada. O hash é novo mas válido; a origem está na sua allowlist. Nada sobre o arquivo ou sua fonte parece errado. O que parece errado é o comportamento: um script que antes renderizava um widget agora lê um campo de pagamento e posta para um destino que nunca contatou antes. Monitoramento de runtime baselines o que cada script faz, então uma mudança comportamental dispara mesmo quando a origem e a assinatura permanecem dentro da política.

Um plano operacional para detecção em tempo real

O objetivo é encurtar o intervalo entre mudança maliciosa e contenção, e preservar evidência que sobreviva a uma revisão forense.

  1. Monitore produção a partir de sessões reais de compradores, em produto, carrinho e checkout, não apenas a etapa de pagamento, e não a partir de um crawler sintético.
  2. Faça baseline do comportamento de cada script: quais nós de DOM lê, quais campos de formulário toca, quais destinos contata. Desvio dessa baseline é seu sinal primário.
  3. Alerte sobre novos destinos de exfiltração no momento em que um script contata um domínio ausente do conjunto de destinos estabelecido da página.
  4. Alerte sobre novos hooks de formulário: um listener se conectando a um campo de pagamento ou credencial, ou ao botão de submit, em um script que nunca fazia isso antes.
  5. Capture o payload legível e timestamps por sessão para que você possa reconstruir o que rodou, em quais sessões, e quais dados estavam em escopo.
  6. Roteie alertas comportamentais de alta severidade direto para resposta a incidentes com a identidade do script, as páginas afetadas, e o destino já anexados.

Os passos 2 a 4 são o que converte visibilidade bruta de runtime em algo sobre o qual um analista pode agir em minutos em vez de fazer engenharia reversa de JavaScript ofuscado depois do fato.

Como cside se encaixa

cside instrumenta sessões reais de compradores e observa scripts de terceiros e próprios enquanto executam. Ele captura o comportamento de runtime que um scanner não alcança: acesso a campos de formulário, hooks de event listener em inputs de pagamento e login, e requisições de saída para destinos fora da baseline da página. Como a detecção roda nas mesmas sessões que o atacante visa, um skimmer condicional que se esconde de crawlers ainda aparece no momento em que age sobre um visitante real.

Quando o comportamento de um script se desvia, cside sinaliza o que mudou, onde rodou, quais campos tocou, e para onde os dados foram, com timestamps por sessão e o payload legível preservado para investigação. Isso dá ao responsável pelo resultado o contexto para conter a exposição enquanto ela ainda está ativa, e uma trilha de evidência para as perguntas que se seguem. A mesma telemetria da camada do navegador alimenta captura de dispositivo e IP real, detecção de agentes IA e automação, e sinais comportamentais de proxy/VPN pela plataforma cside.

Leitura adicional na cside

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

Um scanner busca a página de um local fixo em um cronograma fixo. Um skimmer condicional lê região, dispositivo, referrer ou hora do dia e serve código limpo para qualquer coisa que não corresponda ao seu perfil alvo. O IP, cabeçalhos e ausência de uma sessão real de checkout do scanner raramente correspondem, então ele recebe a versão benigna. O skimmer só se ativa para compradores reais no segmento alvo, algo que o scanner nunca chega a ser.

Um script antes silencioso começa a ler campos de pagamento ou login; um hook `addEventListener` se conecta ao botão de submit ou a `keydown` em um campo de cartão; um novo destino de saída aparece que não estava na baseline da página; ou um script chama `navigator.sendBeacon` ou uma requisição de imagem oculta exatamente quando o usuário clica em pagar. Cada um desses só é observável enquanto o código executa em um navegador real, não em uma cópia estática do arquivo.

Não. CSP e monitoramento de runtime resolvem metades diferentes do problema. CSP pode bloquear uma requisição de exfiltração para um destino `connect-src` não listado, mas não diz qual script tentou, o que leu antes, ou se uma origem de vendor já permitida foi comprometida. Monitoramento de runtime fornece esse contexto comportamental e captura skimmers que exfiltram por uma origem já autorizada. Rode ambos.

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