Skip to main content
Blog
Blog

Ataque JavaScript Magecart client-side na Cisco

Mais um dia, mais um ataque JavaScript client-side de alto perfil. Esta manhã, lemos que a Cisco é a próxima vítima de código malicioso a ser

Sep 06, 2024 6 min read
cisco-client-side-image-cover

TL;DR: domínio skimmer rextension.net com sete dias de idade

  • O orçamento não ajudou: A Cisco prova que um grande orçamento de segurança não protege de um domínio atacante com sete dias de idade. As listas de reputação estavam vazias. A instância Magento estava uma CVE atrasada. Isso foi suficiente.
  • Um domínio com sete dias: O domínio rextension[.]net tinha sete dias quando capturou os campos de cartão authnetcim na loja da Cisco, cifrando depois os dados roubados em AES antes da exfiltração. O cside sinaliza automaticamente domínios de scripts recém-registados, para que o mesmo truque gere um alerta antes de o primeiro cartão ser exposto.
  • Aplique o patch e verifique a idade do script: Se utiliza o Magento Enterprise 2.4, aplique o patch do CosmicSting e audite os scripts do checkout esta semana. Se a aplicação do patch estiver bloqueada por uma janela de alterações, coloque uma verificação de idade de script antes do checkout como controlo temporário.

Sem tempo? Veja o bloqueio in-browser de Magecart e skimmers da cside. Cobre tudo o que se segue numa única implementação.

Mais um dia, mais um ataque JavaScript client-side de alto perfil. Esta manhã, lemos que a Cisco é a próxima vítima de código malicioso carregado através de um script de terceiros.

O site Cisco Merchant funciona sobre a framework Magento Enterprise, amplamente utilizada por sites de comércio eletrónico. O Magento oferece uma plataforma robusta e escalável, mas, como qualquer sistema, é vulnerável a exploração se os patches de segurança e as atualizações não forem aplicados a tempo. A versão exata do Magento em uso no momento do ataque era o Magento 2.4 (Enterprise).

Deteção do Wappalyzer do Magento 2.4 Enterprise em execução no site da Cisco

Os ataques direcionados às frameworks Magento ganharam, com o tempo, a sua própria designação: ataques Magecart.

Os atacantes utilizam um script de terceiros que insere código malicioso, frequentemente através de um domínio, para roubar dados de cartões de crédito e informações pessoais. Os sites de comércio eletrónico são frequentemente alvo destes ataques.

Para informações mais detalhadas sobre vulnerabilidades relacionadas com o Magento, consulte estas ligações:

O script malicioso decodificado

Durante a nossa análise, descobrimos o seguinte script injetado no site:

Tag de script injetada a carregar código malicioso a partir de rextension.net

Este script, hospedado no domínio

rextension[.]net/za/, associado a um endereço IP localizado na Rússia (82.202.163.229), foi encontrado a recuperar código ofuscado adicional. O domínio foi registado recentemente a 30 de agosto de 2024, tendo apenas 7 dias no momento da nossa análise, a 6 de setembro de 2024.

Payload ofuscado inicial recuperado do domínio rextension.net

Consulta WHOIS que localiza o domínio rextension.net num IP russo

Porque é que isto importa

  • O registo recente do domínio levanta suspeitas, pois pode indicar uma operação efémera concebida para exploração rápida antes de ser abandonada.
  • Scripts ofuscados como este são difíceis de detetar sem monitorização especializada, tornando-os especialmente perigosos tanto para os proprietários dos sites como para os seus clientes.

Como o cside teria impedido este ataque

Se o site Cisco Merchant tivesse o cside implementado, o nosso motor de deteção teria detetado este ataque. Um dos nossos sistemas verifica domínios recém-registados e, em testes, o nosso motor detetou isto e alertou o utilizador sobre esta anomalia. O próprio script foi bloqueado de carregar no navegador do utilizador de teste, impedindo este ataque antes que pudesse ocorrer. Aqui pode ver-se quando este domínio foi registado (link seguro).

Registe-se gratuitamente e proteja o seu site em segundos.

A desofuscação do script passo a passo

O script recuperado estava altamente ofuscado, tornando difícil uma análise fácil. Abaixo está apenas uma parte do código ofuscado:

JavaScript fortemente ofuscado extraído da página comprometida da Cisco

O script acima é JavaScript ofuscado em várias camadas, que foi carregado num depurador.

A ofuscação é um método utilizado para tornar o código difícil de compreender, tipicamente como forma de ocultar a sua funcionalidade ou proteger dados sensíveis. No entanto, para analistas, programadores ou investigadores de segurança, compreender a funcionalidade subjacente é essencial e legal.

Colocámos um ponto de interrupção em:

Depurador do navegador pausado no primeiro ponto de interrupção dentro do script ofuscado

Executámos o script e, após algumas descodificações, obtivemos dois JavaScripts descodificados intermédios.

O primeiro nível de ofuscação é uma função que recebe um argumento (descodificado imediatamente antes do script) e o transforma utilizando vários métodos JavaScript, como manipulação de strings e codificação de caracteres.

Primeira camada do script Magecart ofuscado após descodificação parcial

Uma análise mais atenta revela:

Depurador do navegador pausado no segundo ponto de interrupção dentro do script ofuscado

A versão final descodificada:

Este trecho confirma que o script está focado nos campos de cartões de pagamento, mas ainda está parcialmente ofuscado, com funções como _0xDCAD e _0xDBA3. Estas funções manipulam ainda mais o conteúdo e, após mais camadas de descodificação, o script final surge.

Trecho final de JavaScript descodificado que visa os campos do formulário de cartão de pagamento

Última camada descodificada do script ofuscado que rouba dados de cartões de pagamento

Aspetos-chave do script

  1. Ofuscação: O script está fortemente ofuscado, utilizando funções como _0xDCAD, _0xDBB6, _0xDBC9 para criar múltiplos níveis de codificação e ofuscação. Isto é típico de malware ou scripts que tentam ocultar a sua funcionalidade real.
  2. Recolha de Dados de Entrada: O script recolhe informações de elementos de entrada HTML identificados por seletores CSS como #authnetcim-cc-number, #authnetcim-cc-exp-month, #authnetcim-cc-exp-year e #authnetcim-cc-cid. Estes são tipicamente os campos onde os utilizadores introduziriam informações sensíveis de pagamento.
  3. Tratamento de Dados:- Os dados recolhidos (número do cartão de crédito, data de validade, CVV, etc.) são reunidos no objeto ffewq.
  • O script encripta depois esta informação utilizando encriptação AES (através de funções como encrypt, decrypt, round, etc.).
  • Depois de encriptados, os dados são enviados para um servidor através de chamadas jQuery.ajax() (visíveis na secção jQuery[_0xDB90[51]]).
  1. Encriptação: O script utiliza AES (Advanced Encryption Standard) para proteger os dados antes de os enviar. Isto inclui várias funções que tratam da lógica de encriptação AES (addRoundKey, mixColumns, encrypt, etc.), que são componentes padrão num processo de encriptação AES.
  2. Execução Periódica: O script está concebido para ser executado em intervalos regulares (setInterval(_0xDBA3, 100);) para verificar ou enviar continuamente os dados recolhidos.

Tenha em conta que o painel do cside faz este processo por si, desofuscando scripts para os tornar mais fáceis de ler e analisar.

Painel do cside a mostrar o conteúdo desofuscado do script do jsDelivr

O que aconteceu neste ataque

Uma das possíveis vulnerabilidades que poderá ter sido explorada neste ataque é conhecida como CosmicSting. Trata-se de uma exploração conhecida na plataforma Magento, já documentada e investigada. Pode ler mais em detalhe em Investigação da SanSec sobre o CosmicSting.

Ataques client-side como este podem ser devastadores tanto para as empresas como para os clientes. Aplique os patches prontamente, monitorize atividades suspeitas e utilize ferramentas como o cside para detetar o que a aplicação de patches, por si só, não apanha.

Himanshu Anand
Software Engineer

I'm a software engineer and security analyst.

FAQ

Frequently Asked Questions

Os atacantes exploraram uma vulnerabilidade do Magento 2.4, provavelmente o CosmicSting, para injetar um script ofuscado na página. O script estava hospedado no domínio recém-registado rextension.net e capturava dados de cartões de pagamento a partir do formulário de checkout.

O domínio do atacante tinha apenas sete dias no momento da análise, pelo que nenhum threat feed o tinha ainda classificado como malicioso. A monitorização client-side deteta o comportamento — um script a ler subitamente campos de cartão de crédito — em vez de depender de uma reputação de domínio que ainda não existe.

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

Quer ver isso em detalhe com um engenheiro?

Trinta minutos, no seu próprio site. Sem slides.

Vamos mostrar:

Quais scripts de terceiros estão rodando no seu site agora
Como você está em relação aos requisitos 6.4.3 e 11.6.1 do PCI DSS
Qual parte do seu tráfego é de bots e agentes de IA

Prefere só mandar uma pergunta?

Procurando horários livres…

Apenas humanos de verdade. A gente saberia.

Problemas para agendar? Abrir o agendador em uma nova aba

O que você está tentando resolver?

Conte em uma linha e voltamos com algo útil, não com um discurso genérico.

Costumamos ajudar com:

Ver quais scripts de terceiros rodam no seu site
Evidências para PCI DSS 6.4.3 e 11.6.1
Bots, agentes de IA e roubo de contas

Prefere agendar um horário? Escolher um horário