Roubo de cartões no checkout: formjacking e Magecart
A loja funciona. As encomendas chegam, o banco paga, nada parece errado. E há semanas ou meses que outra pessoa anda a recolher os dados dos cartões dos seus clientes.
O que é
Formjacking é o roubo daquilo que um cliente escreve num formulário de pagamento. Magecart é o nome dado aos grupos que o fazem a lojas online desde meados da década de 2010, primeiro no Magento e depois em todas as plataformas.
O ataque não estraga a loja, porque uma loja estragada é reparada. Muda uma coisa pequena no percurso do pagamento e deixa tudo o resto como está.
As quatro formas de o fazer
1. O endereço de pagamento é alterado
A sua loja envia o cliente para a página de pagamento do banco. O atacante troca esse endereço por uma página sua com o mesmo aspeto, muitas vezes num domínio que difere do verdadeiro numa só letra. O cliente escreve aí o cartão e é depois encaminhado para a verdadeira página do banco, onde o pagamento se conclui normalmente. O cliente pensa que o escreveu duas vezes. Na loja aparece uma encomenda paga.
2. É acrescentado código à página de checkout
São acrescentadas algumas linhas a um ficheiro ou modelo do checkout da sua loja. Copiam tudo o que é escrito nos campos do cartão e enviam-no para outro lado, enquanto o formulário continua a funcionar como sempre.
3. As definições de pagamento são alteradas
Nos ficheiros nada muda. O atacante altera o endereço do gateway de pagamento ou os dados do comerciante guardados na base de dados da loja, pela área de administração ou diretamente.
4. O script de um terceiro é alterado
O seu checkout carrega um script de outra empresa, por exemplo uma ferramenta de chat ou de estatísticas. Essa empresa é comprometida e o script é alterado no servidor dela. Na sua loja nada mudou.
Dois casos que se tornaram públicos
- British Airways, 2018. Código acrescentado à página de pagamento da companhia recolhia dados de cartões dos clientes. Em 2020, a autoridade britânica de proteção de dados aplicou à empresa uma coima de 20 milhões de libras.
- Ticketmaster UK, 2018. O código chegou através de uma ferramenta de chat de terceiros na página de pagamento. Em 2020, a mesma autoridade aplicou à empresa uma coima de 1,25 milhões de libras.
As grandes empresas chegam às notícias. O mesmo método é usado todos os dias em lojas pequenas, onde ninguém está a olhar.
Porque é que as ferramentas habituais não o veem
- O antivírus procura código malicioso conhecido. Um endereço web alterado não é um vírus.
- A firewall bloqueia tráfego suspeito. Depois de o atacante entrar com uma palavra-passe roubada, a alteração parece trabalho normal.
- A verificação externa, incluindo a verificação PCI trimestral, olha para o servidor de fora. De fora, a loja parece bem.
- O dono da loja vê encomendas a serem pagas.
Como as lojas costumam descobrir
- O banco ou o processador de cartões informa-as de que cartões usados na loja foram depois usados em fraudes.
- Os clientes escrevem a dizer que lhes foi pedido o cartão duas vezes, ou que veem débitos que não reconhecem.
- Não chegam a descobrir.
Nessa altura, a alteração costuma estar no lugar há muito tempo. Segue-se uma investigação, uma possível suspensão dos pagamentos com cartão e a questão de saber se é preciso avisar os clientes e a autoridade de proteção de dados.
O que o HachiGuard faz em cada caso
Detetado na verificação seguinte. O ficheiro limpo é reposto automaticamente e é avisado.
Detetado: qualquer alteração a um ficheiro de checkout é comunicada, e os padrões de roubo conhecidos geram um alerta crítico. Reposto automaticamente quando a alteração acrescenta um destino desconhecido.
Detetado e comunicado como crítico quando aparece um endereço desconhecido. As definições não são repostas automaticamente.
Coberto em parte. A nossa verificação externa repara num domínio de terceiros novo nas suas páginas públicas. Uma alteração feita dentro de um script que já lá estava, no servidor do terceiro, não é detetada.
O que mais deve fazer
- Mantenha a plataforma e as suas extensões atualizadas.
- Dê a cada administrador a sua própria conta, com uma palavra-passe forte e início de sessão em dois passos onde a plataforma o oferecer. Remova as contas que ninguém usa.
- Sempre que puder, envie o cliente para a página de pagamento do próprio banco em vez de recolher o cartão dentro da sua loja.
- Carregue no checkout o menor número possível de scripts de terceiros.