Como o formjacking rouba dados do seu cartão sem você perceber

Como o formjacking rouba dados do seu cartão sem você perceber

Em setembro de 2018, a British Airways descobriu que 380.000 clientes tiveram dados de cartão roubados durante reservas no site e no app da companhia. O responsável: 22 linhas de JavaScript malicioso inseridas discretamente no código da página de checkout. Nenhum vírus, nenhum pop-up suspeito — só um formulário de pagamento que enviava uma cópia dos dados digitados para um servidor criminoso. A transação continuava normalmente. Você não percebia nada.

Esse ataque tem nome: formjacking.

O que é formjacking

Formjacking é um ataque em que criminosos injetam código JavaScript malicioso em páginas de pagamento de lojas virtuais. Quando você preenche os dados do cartão no checkout — número, data de validade, CVV — o script captura essas informações em tempo real e as envia para um servidor controlado pelos atacantes, antes mesmo de o formulário ser submetido ao site legítimo.

A compra segue seu curso normalmente. A loja recebe o pedido. O cartão é cobrado. Você não percebe nada até que apareça uma cobrança não reconhecida na fatura dias ou semanas depois.

O grupo mais conhecido associado a essa técnica é o Magecart — nome coletivo para dezenas de grupos criminosos que operam esse tipo de ataque desde pelo menos 2015. O nome vem de "Magento cart", a plataforma de e-commerce que era o alvo mais frequente nas primeiras campanhas. Segundo a DataDome, os ataques Magecart cresceram 103% em apenas seis meses durante 2024-2025.

Como o ataque funciona na prática

O formjacking pode ocorrer por dois caminhos principais:

  • Compromisso direto do site: O atacante explora uma vulnerabilidade no CMS da loja — WordPress, Magento, OpenCart — e insere o script malicioso diretamente no código da página de checkout.
  • Ataque via terceiros (supply chain): A loja usa um script externo legítimo — um chatbot, uma ferramenta de analytics, um widget de marketing — que é comprometido. Quando a loja carrega esse script, carrega também o código do atacante junto.

O script fica ativo de forma silenciosa. Ele não modifica a aparência da página nem interrompe a compra. Apenas escuta os eventos de digitação nos campos do formulário e copia os dados assim que são preenchidos — às vezes até antes de o usuário clicar em "Finalizar compra".

Em 2024, uma vulnerabilidade crítica no Adobe Commerce e no Magento (CVE-2024-34102, chamada CosmicSting) foi explorada em larga escala para instalar skimmers Magecart. Pesquisadores registraram que 75% das lojas afetadas ainda estavam sem o patch uma semana após a divulgação da correção — uma janela mais do que suficiente para os grupos operarem com liberdade.

Os casos mais famosos

British Airways (2018)

O código malicioso ficou ativo por 15 dias no site e no aplicativo da companhia aérea britânica. Foram 380.000 clientes com dados pessoais e financeiros comprometidos. A investigação identificou que o script era uma versão levemente modificada de uma biblioteca JavaScript legítima usada pelo site — alterada com apenas 22 linhas extras de código. A British Airways foi multada em £20 milhões pelo ICO, o regulador de privacidade do Reino Unido.

Ticketmaster (2018)

Aqui o vetor foi um chatbot de suporte fornecido por uma empresa terceirizada chamada Inbenta. O script da Inbenta foi comprometido e, como o Ticketmaster o carregava em suas páginas de checkout, os dados de 40.000 clientes foram capturados. É um exemplo claro de ataque à cadeia de suprimentos de software: o alvo direto não era o Ticketmaster, mas um fornecedor com acesso ao ambiente de produção dele.

Formjacking é a mesma coisa que phishing?

Não. Phishing engana o usuário para que entregue dados em um site falso; formjacking compromete um site legítimo para capturar dados que o usuário fornece sem saber que está sendo observado. No phishing, você acessa um domínio errado. No formjacking, você está no domínio correto — só que o código da página foi adulterado.

Essa diferença torna o formjacking mais difícil de detectar: verificar a URL não ajuda. O cadeado HTTPS tampouco — ele garante que a conexão entre você e o servidor está criptografada, não que o código da página é íntegro.

Por que é tão difícil de detectar

  • Nenhuma mudança visual: A página parece idêntica à versão legítima — layout, logo, formulário, tudo igual.
  • HTTPS não é garantia de código limpo: O script malicioso já está dentro da página servida pelo servidor legítimo. A criptografia protege o canal de comunicação, não o conteúdo do código.
  • Scripts de terceiros são invisíveis para o usuário: Uma loja comum pode carregar dezenas de scripts externos. O visitante não tem visibilidade sobre quais são e de onde vêm.
  • A captura acontece antes do submit: Mesmo que a transação falhe depois por qualquer motivo, os dados digitados já foram enviados ao servidor dos atacantes.

Vale notar que uma VPN não protege contra formjacking: ela criptografa o tráfego entre você e o site, mas não interfere no que o JavaScript dentro da página faz com os dados que você digita localmente no navegador.

Como se proteger ao comprar online

Nenhuma medida elimina completamente o risco, mas algumas práticas reduzem bastante a exposição:

  • Use cartão virtual descartável: A maioria dos bancos digitais brasileiros — Nubank, Itaú, Bradesco, Inter — oferece cartões virtuais com número único por compra ou com validade curta. Mesmo que capturado pelo skimmer, o dado fica inútil rapidamente.
  • Prefira checkout via intermediário: Pagar via PayPal, PicPay ou Apple/Google Pay não expõe o número real do cartão ao site da loja. O intermediário processa o pagamento e o merchant nunca vê os dados do cartão.
  • Ative notificações em tempo real: Notificações instantâneas no app do banco permitem identificar cobranças não reconhecidas enquanto ainda é possível contestá-las com mais facilidade.
  • Evite salvar cartão em lojas de nicho: Grandes marketplaces têm equipes de segurança dedicadas e auditorias regulares. Lojas menores são alvos mais fáceis e têm menos recursos para resposta a incidentes.
  • Bloqueio de scripts de terceiros: A extensão uBlock Origin, no modo avançado, bloqueia scripts de terceiros por padrão — reduz diretamente a superfície de ataque do formjacking via supply chain.

Além dos skimmers em checkout, vale ficar atento a outros golpes de pagamento que agem fora do ambiente do e-commerce tradicional, como os QR Codes falsos de Pix colados sobre os originais — o objetivo é o mesmo, interceptar o pagamento antes que chegue ao destino certo.

Conclusão

Formjacking é silencioso por design. Não há pop-up de alerta, nenhum e-mail suspeito para ignorar, nenhuma URL estranha para detectar. O ataque acontece dentro de um site legítimo enquanto você faz algo completamente normal — comprar uma passagem ou um ingresso. A defesa mais prática para o consumidor é remover o número real do cartão da equação: cartão virtual descartável ou pagamento via intermediário eliminam o dado que o skimmer quer capturar.

Para quem mantém lojas online, monitoramento de integridade de scripts e aplicação imediata de patches são as principais linhas de defesa. Os atacantes exploram janelas de vulnerabilidade medidas em dias — deixar um CMS sem atualização por semanas é aceitar esse risco. Se quiser entender como esse vetor de terceiros se tornou um dos mais explorados, leia sobre o ataque Jscrambler e a cadeia de suprimentos de pacotes NPM.

Comentários