Malware JSCeal esconde roubo de criptomoedas em bytecode V8 para escapar de análise
A Check Point Research detalhou o funcionamento do JSCeal, um ladrão de criptoativos ativo desde 2025 que compila seu código em bytecode V8 para dificultar a engenharia reversa. Além de roubar senhas, cookies e sessões do Telegram, o malware ataca diretamente exchanges como Binance e Bybit e chega a substituir scripts legítimos do Ledger para desviar transações.
O JSCeal é um malware de roubo de criptomoedas que a Check Point Research acompanha desde o início de 2025 e que se destaca por uma técnica de ofuscação incomum: em vez de entregar JavaScript legível, o código é compilado em bytecode V8 (arquivos .jsc) e executado por um runtime Node.js embutido no próprio malware. Como esse bytecode é específico da versão do V8 e mal suportado pelas ferramentas tradicionais de engenharia reversa, o JavaScript original nunca chega a existir de forma legível na máquina da vítima — o que atrasou bastante a análise pública da ameaça.
Antes mesmo de virar bytecode, o código já passa por uma camada comercial de ofuscação, com nomes de função trocados por strings sem sentido, textos fragmentados e criptografados, e a lógica de execução convertida em uma máquina de estados que embaralha a ordem real das operações. Só depois dessa camada o código é compilado para V8. Para contornar essa barreira, a Check Point construiu uma ferramenta baseada no decompilador open-source View8, com apoio de modelos de IA para sugerir nomes de função mais compreensíveis durante a análise.
Uma vez ativo, o JSCeal rouba senhas e cookies de oito navegadores baseados em Chromium, dados de sessão do Telegram, faz keylogging e captura de tela, e instala um certificado controlado pelo atacante para interceptar e adulterar tráfego HTTPS localmente. Contra exchanges de criptomoedas o malware vai além do roubo passivo: reescreve QR codes de login exibidos na Binance, injeta desafios de segurança falsos na Bybit e substitui scripts legítimos do Ledger por versões maliciosas — além de reaproveitar credenciais roubadas para emitir tokens OAuth válidos, automatizando por completo o sequestro de contas.
Sinais de comprometimento incluem a presença de um runtime Node.js não esperado na máquina e certificados raiz instalados sem explicação recente. Como mitigação prática, manter o Node.js atualizado já reduz a compatibilidade das ferramentas do atacante com versões mais novas; confirmar transações em uma carteira de hardware com tela própria continua sendo a defesa mais forte contra a manipulação de scripts no navegador, e contas de exchange devem usar 2FA baseada em hardware (FIDO2) em vez de SMS ou aplicativo.