Skip to main content
Blog
Attacks

Por Dentro do Coruna - Exploit iOS via Web Script

Seu site pode ter sido usado para distribuir este kit de exploit para iOS sem que você soubesse. Uma análise técnica completa do Coruna: cinco cadeias de exploit, 23 CVEs e a infraestrutura de entrega que transforma qualquer site em um vetor de ataque em potencial.

Mar 08, 2026 33 min read
Imagem de capa de Por Dentro do Coruna - Exploit iOS via Web Script

O kit que mudou de mãos três vezes em um ano

No início de 2025, um cliente de um fornecedor comercial de vigilância não identificado foi observado usando um framework de exploração JavaScript até então desconhecido contra dispositivos iOS. Em julho de 2025, um grupo suspeito de espionagem russo havia adotado o mesmo framework e o injetava silenciosamente em sites industriais e de varejo ucranianos como um iframe oculto. Em dezembro de 2025, um agente de ameaça chinês com motivação financeira o implantou em uma rede de sites falsos de criptomoedas e jogos de azar sem restrições geográficas, visando qualquer usuário de iPhone que clicasse no link errado. Pense assim: a mesma ferramenta poderosa migrou da espionagem para o crime financeiro em questão de meses, adaptando-se a diferentes objetivos e alvos. Por exemplo, o site de uma empresa de energia ucraniana foi comprometido para entregar payloads de espionagem, enquanto, mais tarde, um site falso de exchange de criptomoedas enganou usuários do mundo inteiro para infectá-los.

O Google Threat Intelligence Group (GTIG) nomeou publicamente esse framework como Coruna (também rastreado como CryptoWaters) em 4 de março de 2026. Ele contém cinco cadeias completas de exploração para iOS e 23 exploits individuais abrangendo as versões 13 a 17.2.1 do iOS. A iVerify o chamou de "a primeira exploração em massa observada contra dispositivos iOS" e apontou semelhanças estruturais com ferramentas desenvolvidas por agentes de ameaça afiliados ao governo dos EUA. Eis por que isso importa: tais semelhanças estruturais sugerem o reuso ou a adaptação de técnicas sofisticadas de nível governamental nas mãos de criminosos, elevando o nível de risco para os defensores. Na prática, isso significa que os atacantes não estão mais limitados a exploits básicos — eles agora empregam métodos avançados que antes eram reservados a operações de estados-nação.

Obtivemos amostras ao vivo de domínios de entrega ativos e analisamos cada camada do JavaScript. O que se segue é um relato detalhado do que esse kit faz, desde a primeira linha de código ofuscado até o binário Mach-O criptografado depositado no dispositivo da vítima, junto com uma análise completa da infraestrutura dos domínios e IPs envolvidos. Essa análise aprofundada revela não apenas a mecânica técnica, mas também a pegada operacional por trás do Coruna. Por exemplo, rastreamos como o payload JavaScript do exploit se transforma dinamicamente durante a execução, evadindo a detecção enquanto mantém estabilidade entre as versões do iOS.

O problema da entrega: por que o seu site é a superfície de ataque

Antes de mergulhar na mecânica do exploit, vale esclarecer o que "entrega" significa aqui, pois muitas organizações ainda não consideraram esse aspecto plenamente. Entrega é o método pelo qual o exploit chega ao dispositivo da vítima, frequentemente por meio de uma página web aparentemente inofensiva.

O Coruna é entregue como um arquivo HTML autocontido, normalmente chamado de group.html ou analytics.html, embutido como um `

Redes de anúncios. Um único criativo malicioso veiculado por uma rede de anúncios programática alcança todos os publishers que executam a tag dessa rede. O servidor do publisher nunca toca o payload. O WAF do publisher nunca o vê. A equipe de segurança do publisher não tem visibilidade sobre o que a tag de anúncio carregou no navegador do usuário. Se o Coruna tivesse sido distribuído por uma rede de anúncios de médio porte, teria alcançado milhões de usuários do Safari em milhares de sites legítimos e respeitáveis simultaneamente. Nenhum desses publishers saberia. Por exemplo, imagine uma rede de anúncios veiculando um banner malicioso em um site de notícias popular, e cada visitante poderia ter sido exposto sem o conhecimento do site.

Scripts de terceiros comprometidos. O site médio de e-commerce ou mídia carrega de 30 a 50 tags JavaScript de terceiros: analytics, widgets de chat, ferramentas de teste A/B, rastreadores de afiliados, gerenciadores de consentimento. Cada um desses scripts é um ponto de injeção em potencial. Um comprometimento na cadeia de suprimentos de qualquer um deles — como as campanhas do Magecart ou o incidente do polyfill[.]io — poderia ter transformado cada site que usasse esse script em um nó de entrega do Coruna. Novamente, o servidor de origem não mostraria nada incomum. O payload é executado no navegador do usuário e reporta de volta a um domínio C2 que o publisher jamais ouviu falar. Pense assim: mesmo um provedor de scripts confiável pode se tornar um cavalo de Troia se for comprometido. Por exemplo, se o script de um provedor popular de analytics fosse sequestrado, milhares de sites poderiam entregar o Coruna sem saber.

Assets de CDN em cache. Vários dos URLs de entrega que identificamos eram servidos a partir de infraestrutura CDN compartilhada (tubeluck[.]com, 668ddf[.]cc). Um atacante com acesso de escrita a um bucket de origem de CDN ou com capacidade de envenenar um cache de CDN obtém o mesmo resultado. Por exemplo, se um atacante conseguir fazer upload de um arquivo malicioso em um bucket de CDN usado por vários sites, ele pode entregar exploits silenciosamente a todos os visitantes desses sites. Esse cenário se concretizou em ataques anteriores, nos quais atacantes envenenaram caches de CDN amplamente utilizados para disseminar malware rapidamente.

O ponto não é que esses vetores específicos foram usados. O ponto é que nada no payload do Coruna exige que o atacante seja dono do site de entrega. O payload é um arquivo JavaScript. Ele vai aonde o JavaScript vai. E o JavaScript vai a todo lugar.

Como ele chega ao navegador: infraestrutura de entrega

As campanhas que analisamos usaram mais de 50 domínios de entrega, organizados em temas de isca reconhecíveis.

Cluster Domínios representativos Tema da isca
CDN 668ddf[.]cc osec2[.]668ddf[.]cc, 65sse[.]668ddf[.]cc, ose[.]668ddf[.]cc Hospedagem compartilhada chinesa
Games / jogos de azar 7p[.]game, 4u[.]game, b27[.]icu, h4k[.]icu, spin7[.]icu, seven7[.]vip Jogos de azar online
Iscas de bingo land[.]77bingos[.]com, land[.]bingo777[.]now, land[.]777bingos[.]xyz Bingo / jogos de azar
Iscas de cripto goodcryptocurrency[.]top, binancealliancesintro[.]com, pepeairdrop01[.]com Criptomoedas
CDN Tubeluck w2a315[.]tubeluck[.]com, so5083[.]tubeluck[.]com Infraestrutura CDN compartilhada
Iscas de analytics ai-scorepredict[.]com, goanalytics[.]xyz Páginas falsas de analytics

Muitos desses sites instruem explicitamente os usuários a acessá-los por um dispositivo móvel para uma "melhor experiência" — um empurrãozinho de engenharia social para garantir que o alvo abra a página no Safari no iOS, e não em um navegador desktop. Essa tática aumenta a probabilidade de o exploit ser executado com sucesso, já que ele visa versões específicas do iOS. Por exemplo, um site falso de bingo pode exibir um popup dizendo "Para a melhor experiência, abra esta página no seu iPhone", induzindo as vítimas ao ambiente certo.


Análise de infraestrutura: DNS, rDNS, WHOIS e hospedagem

Realizamos resolução DNS completa, lookups de DNS reverso, consultas de registro WHOIS/RDAP e pivôs de IP em todos os domínios de entrega e C2. Os resultados revelam uma estratégia de infraestrutura deliberada: abuso de grandes CDNs em nuvem para ocultar a origem real, um pequeno número de IPs dedicados para os sites de isca mais sensíveis e padrões de registro que se concentram fortemente no final de 2025 e início de 2026. Essa coordenação sugere uma campanha bem planejada, e não uma atividade oportunista aleatória.

Distribuição de hospedagem

A infraestrutura de entrega se divide em quatro camadas distintas de hospedagem.

Camada 1: Proxy Cloudflare. A maior parte dos domínios de entrega de jogos de azar e games — incluindo 7p[.]game, b27[.]icu, h4k[.]icu, spin7[.]icu, 7ff[.]online, 26a[.]online, tubeluck[.]com, ai-scorepredict[.]com e dbgopaxl[.]com — resolve para IPs anycast da Cloudflare. A Cloudflare fornece proteção contra DDoS, terminação TLS e ocultação eficaz do IP de origem. Os servidores de backend reais não são visíveis pelo DNS. Essa configuração permite que os atacantes mascarem sua verdadeira infraestrutura por trás de um serviço respeitável, complicando os esforços de remoção. Pense assim: a Cloudflare age como um escudo, dificultando o rastreamento dos servidores reais dos atacantes.

Camada 2: AWS CloudFront. Um segundo grande cluster usa o AWS CloudFront como camada de CDN. Domínios incluindo 4u[.]game, seven7[.]vip, seven7[.]to, 4kgame[.]us, 7uspin[.]us, n49[.]top, 98a[.]online, cy8[.]top, 7fun[.]icu, k96[.]icu, t7c[.]icu, y4w[.]icu e o cluster de bingo (land[.]77bingos[.]com, land[.]bingo777[.]now, land[.]777bingos[.]xyz) resolvem para nós de borda do CloudFront. O cluster de bingo compartilha um único conjunto de quatro IPs do CloudFront, indicando que são servidos pela mesma distribuição e provavelmente pela mesma origem S3 ou EC2. Essa consolidação ajuda os atacantes a gerenciar múltiplas iscas com eficiência, mantendo a resiliência. Por exemplo, se um domínio for derrubado, os outros permanecem operacionais, garantindo a entrega contínua.

Camada 3: IPs dedicados em hospedagem tolerante a abusos. A descoberta operacionalmente mais significativa é o uso de IPs dedicados em provedores de hospedagem conhecidos pela tolerância a abusos para os sites de isca mais sensíveis. cryptocurrencyworld[.]top e bestcryptocurrency[.]top compartilham um único IP dedicado: 95.214.181.109, registrado na Datacamp Limited em Hong Kong (AS212238), um provedor de hospedagem à prova de balas bem documentado. Esses dois domínios são os únicos nesse IP. mkkku[.]com resolve para 185.53.179.128 (Team Internet AG, Alemanha). O DNS reverso desse IP revelou sete domínios de jogos de azar adicionais no mesmo servidor: bet247[.]ac, gem88[.]ac, gemwin[.]ac, gunbet[.]ac, i9-bet[.]ac, sbet[.]ac e taisunwin[.]ac — todos consistentes com o tema mais amplo de entrega do Coruna. btrank[.]top resolve para uma instância dedicada do AWS EC2 em Tóquio (54.248.167.86). ddus17[.]com resolve para 103.110.221.8 (JT Telecom International, Japão), sem domínios co-hospedados, consistente com um servidor dedicado. Essa camada mostra como os atacantes equilibram ocultação e controle operacional. Em outras palavras, eles usam hosts à prova de balas onde podem operar livremente, ao mesmo tempo em que aproveitam serviços em nuvem para escalabilidade.

Camada 4: China Unicom. pc6[.]com, um grande portal chinês de download de software listado entre os URLs de entrega, resolve para nove IPs no backbone da China Unicom (AS4837). Os pivôs de DNS reverso nesses IPs retornaram centenas de domínios co-hospedados cada, todos com nomes em chinês e TLDs .cn, .cc e .cloud. Isso é consistente com um ambiente de hospedagem compartilhada de grande porte. O URL de entrega do pc6[.]com provavelmente representa uma página comprometida em um site legítimo existente, e não uma infraestrutura própria dos atacantes. Esse exemplo destaca como os atacantes exploram plataformas legítimas para distribuir seus payloads. Por exemplo, um popular portal chinês de software pode hospedar iframes maliciosos sem saber, colocando milhões de usuários em risco.

Cronograma de registro WHOIS

Os dados de registro RDAP foram obtidos com sucesso para um subconjunto dos domínios de entrega. As datas se concentram de forma estreita, confirmando uma campanha de registro coordenada. Por exemplo, muitos domínios foram registrados com dias ou semanas de diferença entre si no final de 2025 e início de 2026, sugerindo um lançamento planejado em vez de aquisições aleatórias de domínios. Esse padrão indica que os atacantes prepararam sua infraestrutura com cuidado, em vez de improvisar.

Domínio Registrado em Registrador Servidores de nome
ai-scorepredict[.]com 2026-01-29 Ultahost, Inc. Cloudflare
pepeairdrop01[.]com 2026-01-25 Realtime Register B.V. Suspenso (pendência de verificação)
binancealliancesintro[.]com 2026-01-01 GoDaddy.com, LLC GoDaddy (ns37/ns38.domaincontrol.com)
mkkku[.]com 2026-01-18 Dynadot Inc Dynadot (dyna-ns.net)
ddus17[.]com 2026-01-23 Hello Internet Corp JT DNS (jtdnsv1.com)
appstoreconn[.]com 2025-12-23 Cloudflare, Inc. Cloudflare
tubeluck[.]com 2025-12-18 Cloudflare, Inc. Cloudflare
77bingos[.]com 2025-11-29 NameCheap, Inc. AWS Route 53
dbgopaxl[.]com 2024-04-07 Cloudflare, Inc. Cloudflare

Todas as datas de registro confirmadas estão entre novembro de 2025 e janeiro de 2026 — uma janela apertada de 10 semanas que se alinha perfeitamente com a escalada observada da campanha, da espionagem direcionada à exploração financeira em larga escala. Eis por que isso importa: um período de registro tão concentrado sugere um esforço coordenado para implantar infraestrutura rapidamente. Por exemplo, pepeairdrop01[.]com está atualmente suspenso pelo seu registrador por falha na verificação do domínio, o que indica pressão ativa de remoção por parte dos defensores. Pense assim: esse domínio provavelmente foi sinalizado e retirado do ar rapidamente para interromper as operações da campanha. Enquanto isso, dbgopaxl[.]com se destaca como um caso fora do padrão, registrado ainda em abril de 2024. Isso sugere que pode ser um ativo pré-posicionado, configurado meses antes para uso futuro, ou talvez um domínio legítimo que foi comprometido e reaproveitado para essa campanha.

Os domínios C2 — os 27 domínios .xyz gerados por DGA — retornaram erros 404 do servidor RDAP. Isso significa que foram excluídos do registro ou nunca foram registrados em um caminho consultável pelo RDAP padrão. Eis o que isso significa na prática: esses domínios funcionam como domínios de fallback de curta duração, gerados algoritmicamente. Os operadores os registram e descartam de forma contínua para se manterem à frente dos esforços de remoção e evitar a detecção. Por exemplo, se um domínio for bloqueado pelos defensores, outro pode rapidamente tomar seu lugar sem nenhuma intervenção manual, mantendo a infraestrutura de comando e controle resiliente.

Transparência de certificados

Os logs de transparência de certificados nos fornecem uma linha do tempo independente de quando os domínios começaram a usar HTTPS. Os principais achados incluem: b27[.]icu emitiu seu primeiro certificado TLS em 01/06/2025 (Amazon CA), confirmando que o domínio estava ativo pelo menos seis meses antes do pico da campanha. Essa atividade precoce sugere que pode ter sido usado para testes iniciais ou reconhecimento. Outro exemplo é 7p[.]game, que apareceu pela primeira vez nos logs de CT em 21/03/2024 (GoDaddy CA). É o mais antigo do conjunto de entrega, o que implica ser uma operação de jogos de azar de longa data que adotou a entrega do Coruna, em vez de um site de isca criado especificamente para isso. ai-scorepredict[.]com emitiu seu primeiro certificado em 29/01/2026, exatamente na mesma data de registro no RDAP, confirmando que foi criado especificamente para essa campanha. Por fim, tubeluck[.]com apareceu pela primeira vez nos logs de CT em 2019, tornando-o o domínio mais antigo de todo o conjunto de dados. Isso indica que é um serviço de CDN ou hospedagem estabelecido há muito tempo, que o operador está usando como infraestrutura, provavelmente para misturar tráfego malicioso com conteúdo legítimo.

Infraestrutura de domínios C2

Todos os 27 domínios C2 gerados por DGA atualmente não retornam registros DNS do tipo A, ou seja, não resolvem para nenhum endereço IP. Dois domínios, vvri8ocl4t3k8n6[.]xyz e rlau616jc7a7f7i[.]xyz, tinham entradas no URLScan datadas de 4 de março de 2026, o dia da divulgação pelo GTIG. Ambos resolviam para IPs da Cloudflare naquele momento. Isso confirma que a infraestrutura C2 estava ativa e com fronting da Cloudflare no dia da divulgação. Desde então, a infraestrutura foi derrubada ou rotacionada para novos domínios. Pense nisso como trocar as fechaduras após um arrombamento: os operadores rapidamente moveram seu comando e controle para evitar interrupções e a detecção pelos defensores.


Quatro camadas de ofuscação antes de você ver um único exploit

Abrir a página de entrega em um editor de texto não revela nada útil à primeira vista. O framework Coruna usa uma sofisticada arquitetura de ofuscação em quatro camadas, projetada especificamente para derrotar ferramentas de análise estática e sandboxes automatizadas. Isso significa que até analistas experientes enfrentam um desafio difícil só para entender o que o código faz.

Camada 0: o bootstrap externo

O HTML de entrega contém um bootstrap JavaScript mínimo. Toda string significativa está oculta como um array de inteiros decodificados por XOR em tempo de execução. Por exemplo:

[107, 49, 105, 97].map(x => String.fromCharCode(x ^ 84)).join("")

Aqui, cada inteiro é submetido a XOR com a chave 84 para revelar o caractere real. A chave XOR varia por string, portanto não há um único padrão a ser identificado em todo o arquivo. A lógica principal está oculta dentro de new Function(atob("..."))(): uma string codificada em Base64 que é avaliada como uma nova função. Isso mantém o código real fora da árvore de análise inicial e da maioria dos scanners estáticos. Em outras palavras, o código está bloqueado por um enigma que só se revela em tempo de execução, tornando a análise estática praticamente impossível.

Camada 1: o despachante de módulos

Após decodificar a Camada 0, você obtém um objeto JavaScript registrado como globalThis.vKTo89. Esse objeto contém uma implementação completa de SHA-256 e uma tabela de consulta de módulos de exploit indexados pelos seus hashes SHA1. O despachante expõe cinco funções de API:

Função Finalidade
WLEBfI(url) Define a URL base para busca remota de módulos
ksQccv(salt) Define o salt HMAC para derivação do nome de arquivo do módulo
OLdwIx(hash) Carrega um módulo pelo hash SHA1 a partir do cache local
LBrh4t(hash) Busca e executa um módulo remoto de forma assíncrona
tI4mjA(hash, b64) Registra um módulo inline por hash e código Base64

A função LBrh4t implementa um protocolo de entrega de módulos com chave. Dado um ID de hash de módulo, ela calcula SHA256(salt + hash_id).substring(0, 40) e busca o nome de arquivo resultante no servidor. O salt observado nas amostras analisadas é cf40de81867d2397. Sem conhecer o salt, um analista não consegue prever quais nomes de arquivo solicitar, mesmo que conheça os IDs de hash dos módulos. A URL base é derivada de location.href.slice(0, lastIndexOf("/") + 1), o que significa que todos os módulos de exploit são servidos pelo mesmo domínio da página de entrega. Essa configuração dificulta que defensores interceptem ou prevejam as buscas de módulos, ocultando efetivamente os próximos passos do atacante.

Camada 2: código do módulo

Cada módulo é armazenado como uma string codificada em Base64. Quando decodificado, o JavaScript do módulo continua usando arrays de strings codificados por XOR para todos os literais sensíveis: caminhos de framework, nomes de API, endereços de memória, constantes de versão. Essa ofuscação em camadas garante que, mesmo que uma camada seja decodificada, os dados sensíveis permaneçam ocultos, forçando os analistas a remover múltiplas camadas antes de entender o payload.

Camada 3: payloads binários inline

Os módulos maiores incorporam seus payloads binários como strings codificadas em Base64 dentro do JavaScript. O shellcode ARM64 é armazenado como binário bruto. O binário Mach-O é armazenado com cada byte preenchido com zero para dois bytes (codificação UTF-16LE), adicionando uma camada extra de ofuscação contra detecção de assinatura binária. Pense nisso como embrulhar um pacote duas vezes para dificultar a identificação. Esse truque inteligente ajuda o malware a escapar de ferramentas de detecção baseadas em assinatura.

Medidas anti-análise

O framework implementa várias verificações ativas anti-análise antes de executar qualquer código de exploit. Ele é abortado se o Modo de Bloqueio da Apple for detectado. Ele ignora a execução no modo de navegação privada. Ele verifica se um motor de renderização WebKit real está presente criando um elemento <math> e verificando se mathcolor="blue" renderiza como rgb(0, 0, 255). Ele também verifica a disponibilidade de RTCPeerConnection para confirmar um ambiente de navegador genuíno em vez de uma sandbox headless. Após a execução, ele reporta o resultado ao C2 via uma requisição GET para <base_url>?e=<code>, onde 0 significa sucesso, 1000 significa falha no exploit, 1001 significa que a versão alvo não é suportada e 1003 significa que uma sandbox foi detectada. Essas verificações ajudam o malware a evitar a execução em ambientes onde poderia ser analisado ou falhar, aumentando as chances de exploração bem-sucedida.


A cadeia de exploit: seis fases do carregamento da página ao Mach-O

Fase 1: fingerprinting do alvo

O módulo de fingerprinting é executado primeiro e decide se o alvo vale a pena atacar e qual cadeia de exploit usar. O script verifica a string User-Agent em busca de Version/ (presente em todos os UAs do Safari) e AppleWebKit/. Se nenhum for encontrado, ele para imediatamente. Em seguida, distingue iOS de macOS Safari usando uma combinação de typeof TouchEvent !== "undefined" e um teste de inserção de Blob no IndexedDB. Especificamente, tentar armazenar um objeto Blob no IndexedDB lança a exceção "BlobURLs are not yet supported" no Safari do iOS, o que serve como um fingerprint de plataforma confiável.

A parte tecnicamente mais sofisticada do fingerprinting é um oráculo de memória WebAssembly. O script instancia uma WebAssembly.Table e uma WebAssembly.Instance, depois lê as tags de tipo de célula JSC (JavaScriptCore) internas da memória. O valor de tag 0x10016 indica macOS Safari; 0x10017 indica iOS Safari. Essa técnica lê a representação interna de objetos do JavaScriptCore diretamente da memória, exigindo conhecimento profundo do código-fonte do WebKit. A versão do iOS é extraída do User-Agent e comparada com uma tabela de consulta de 19 versões conhecidas do iOS (10.0.0 a 17.0.0) e 13 versões do Safari para macOS, com caminhos de exploit separados selecionados para iOS 13 a 15.x e iOS 16.x e superior. Esse fingerprinting preciso garante que a cadeia de exploit corresponda perfeitamente ao ambiente do alvo, aumentando as chances de sucesso.

Fase 2: execução remota de código via confusão de tipos JIT (CVE-2024-23222)

A cadeia de exploit principal nas amostras que analisamos é a cassowary, visando a CVE-2024-23222, um bug de confusão de tipos no JavaScriptCore corrigido pela Apple em janeiro de 2024 com o iOS 17.3.

O exploit começa chamando uma função exatamente 1.000.000 de vezes com argumentos de ponto flutuante. Isso força o compilador JIT do JSC a especializar a função para operações com arrays de float, gerando código de máquina otimizado que assume que todo elemento do array sempre será um float de precisão dupla. Após a compilação JIT, o exploit substitui um elemento do array alvo por um objeto JavaScript em vez de um float. O código compilado pelo JIT lê esse valor como um float, interpretando o ponteiro do objeto como um double de 64 bits. Essa é a confusão de tipos: JSObject* está sendo tratado como double. Ao ler de volta o valor float confundido, o exploit recupera o endereço do objeto no heap do JSC. Esse é o primitivo addrof.

A operação inversa, escrever um float manipulado no array, faz o JSC interpretar o double como um ponteiro de objeto, criando um primitivo fakeobj apontando para memória controlada pelo atacante. Usando addrof e fakeobj juntos, o exploit constrói um objeto ArrayBuffer falso cujo ponteiro de armazenamento de apoio é definido para um endereço arbitrário. Ler ou escrever por meio desse ArrayBuffer falso fornece leitura/escrita arbitrária completa na memória do processo. O exploit estabiliza esse primitivo usando heap spraying com arrays de 16 elementos de valores float específicos e uma classe de abstração de inteiros de 64 bits personalizada. Essa combinação permite ao atacante manipular a memória à vontade, um passo crítico para exploração adicional.

Fase 3: derrotando o ASLR via varredura do cache compartilhado do dyld

Com leitura/escrita arbitrária estabelecida, o exploit varre a memória do processo em busca do cache compartilhado do dyld para derrotar o ASLR. No iOS, ele localiza WebCore, CoreUtils e IOKit varrendo os cabeçalhos do segmento __TEXT. No macOS, ele visa CoreFoundation, CoreGraphics, ActionKit e RESync. O exploit lê os cabeçalhos do segmento __TEXT de cada framework para determinar seus endereços de carregamento e localiza _ZN3JSC16jitOperationListE para encontrar regiões de memória executável alocadas pelo JIT. Esse passo é crucial porque o ASLR randomiza os locais de memória, e conhecer esses endereços permite ao exploit executar código de forma confiável.

Fase 4: escapando da sandbox

O módulo de escape de sandbox combina duas técnicas. Um exploit de filtro SVG <feConvolveMatrix> corrompe a memória no processo compositor do WebKit, permitindo que o exploit escape da sandbox do renderizador. Simultaneamente, o exploit usa pthread_main_thread_np, uma API privada do macOS e iOS, para manipular o armazenamento local de thread e obter acesso ao contexto de execução da thread principal, que carrega privilégios de sistema mais amplos do que a thread do renderizador. Pense assim: escapar da sandbox é como sair de uma sala trancada para acessar o prédio inteiro.

Fase 5: contornando a autenticação de ponteiros no Apple Silicon

Em dispositivos Apple Silicon (todo iPhone desde o XR e todo Mac da série M), o exploit precisa derrotar os Pointer Authentication Codes (PAC), o mecanismo de integridade de fluxo de controle imposto por hardware da Apple. O módulo stager para macOS contém os seguintes símbolos C++ internos do JSC:

_ZN3JSC20SecureARM64EHashPins27allocatePinForCurrentThreadEv
_ZN3JSC10LinkBuffer8linkCodeERNS_14MacroAssemblerENS_20JITCompilationEffortE
_ZN3WTF13MetaAllocator8allocateEmPv
jitCagePtr

O exploit abusa de jitCagePtr e SecureARM64EHashPins para alocar memória executável dentro da jaula JIT e assinar o shellcode ARM64 com uma assinatura PAC válida. Isso permite que código nativo não assinado seja executado em hardware com PAC aplicado. A técnica aloca 40 MB de memória com new Uint32Array(10000000) e preenche a memória JIT com padrões previsíveis usando um JIT spray de instruções x += 1 repetidas. Essa abordagem engana o hardware para confiar no código malicioso, contornando as proteções PAC.

Fase 6: execução do shellcode e entrega do payload

Os módulos stager finais contêm três componentes binários incorporados:

Componente Tamanho Formato Finalidade
Shellcode ARM64 31.308 bytes Binário bruto Execução de código nativo no estágio 1
Mach-O criptografado 14.954 bytes Binário preenchido com UTF-16LE Binário nativo do estágio 2
PlasmaLoader ~1.324 bytes (criptografado) .min.js buscado remotamente Implante final

O shellcode ARM64 começa com o prólogo de função padrão STP X29, X30, [SP, #-16]! e é injetado na memória executável alocada pelo JIT. Ele usa dlsym contra /usr/lib/system/libdyld.dylib para resolver funções do sistema em tempo de execução, evitando importações estáticas. O binário Mach-O referencia frameworks privados do iOS, incluindo SpringBoard, PassKitCore, CoreML, MediaToolbox e AppleMediaServices. Isso indica capacidades em nível de sistema, como acesso ao keychain, enumeração de aplicativos instalados e manipulação da tela inicial. O payload final, PlasmaLoader (também chamado de PLASMAGRID pelo Google GTIG), é buscado no domínio de entrega como um arquivo .min.js criptografado. Ele decodifica QR codes de imagens, busca módulos adicionais do C2 e exfiltra dados de carteiras de criptomoedas de carteiras populares como MetaMask, Exodus, Bitget Wallet e Base. Isso evidencia a clara motivação financeira da campanha e o sofisticado direcionamento a ativos valiosos.


Vinte e três exploits, cinco cadeias, quatro anos de CVEs

A cadeia cassowary é uma das doze cadeias de exploit nomeadas dentro do Coruna. O kit completo cobre iOS 13 a 17.2.1 sem lacunas. Essa cobertura completa significa que os atacantes podem visar praticamente qualquer dispositivo executando essas versões do iOS, deixando poucos refúgios seguros para as potenciais vítimas.

Cadeia CVE Versões do iOS visadas Tipo de exploit
Neutron CVE-2020-27932 13.x Confusão de tipos no kernel
Dynamo CVE-2020-27950 13.x Divulgação de memória do kernel
buffout CVE-2021-30952 13.0 a 15.1.1 Overflow de inteiro no WebKit
jacurutu CVE-2022-48503 15.2 a 15.5 Confusão de tipos no WebKit
IronLoader CVE-2023-32409 16.0 a 16.4 Escape de sandbox no WebKit
Photon CVE-2023-32434 14.5 a 15.7.6 Overflow de inteiro no XNU (Operação Triangulação)
Gallium CVE-2023-38606 14.x Escrita OOB no IOKit (Operação Triangulação)
Parallax CVE-2023-41974 16.4 a 16.7 Use-after-free no WebKit
terrorbird CVE-2023-43000 16.2 a 16.5.1 Use-after-free no WebKit
cassowary CVE-2024-23222 16.6 a 17.2.1 Confusão de tipos no WebKit (cadeia principal)
Sparrow CVE-2024-23225 17.0 a 17.3 Corrupção de memória no kernel
Rocket CVE-2024-23296 17.1 a 17.4 Corrupção de memória no RTKit

Duas dessas cadeias, Photon e Gallium, exploram vulnerabilidades anteriormente usadas como zero-days na Operação Triangulação, a sofisticada campanha de espionagem no iOS documentada pela Kaspersky em 2023. Seu reuso em uma campanha criminosa com motivação financeira ilustra diretamente como ferramentas ofensivas de estados-nação migram para o ecossistema de ameaças mais amplo assim que as CVEs subjacentes se tornam de conhecimento público. Por exemplo, após a divulgação dessas CVEs, grupos criminosos rapidamente as adotaram para atacar usuários comuns visando lucro, transformando ferramentas avançadas de espionagem em malware de massa. Em 5 de março de 2026, a CISA adicionou CVE-2021-30952, CVE-2023-41974 e CVE-2023-43000 ao seu catálogo de Vulnerabilidades Exploradas Conhecidas com prazo de remediação de 26 de março de 2026 para agências federais. Isso evidencia a urgência de aplicar patches nessas vulnerabilidades para prevenir exploração e proteger infraestruturas críticas.

A arquitetura do modelo

A arquitetura de módulos completa

[Página de Entrega: group.html / analytics.html]
    |
    +-- Camada 0: Bootstrap (JS com ofuscação XOR)
    |   +-- Inicializa o dispatcher globalThis.vKTo89
    |
    +-- Camada 1: Objeto MM (Base64 -> JS)
    |   +-- Módulo 1ff010bb: Biblioteca matemática/utilitária
    |   |   +-- SHA256, aritmética BigInt, análise de URL
    |   +-- Módulo 6b57ca33: Motor de fingerprinting
    |       +-- Análise de UA, detecção de plataforma
    |       +-- Oráculo de memória WebAssembly (tags de célula JSC 0x10016/0x10017)
    |       +-- Teste de Blob no IndexedDB (detecção de iOS)
    |       +-- Teste de renderização MathML
    |       +-- Verificação de ambiente WebRTC
    |
    +-- Módulos Remotos (obtidos via URLs com chave SHA256)
        +-- 8dbfa3fd: Exploit de confusão de tipos JIT (addrof/fakeobj)
        +-- 55afb1a6: Primitiva de leitura/escrita arbitrária (ArrayBuffer falso)
        +-- 5264a069: Variante de exploit baseada em WebAssembly
        +-- 166411bd: JIT spray via WebAssembly / primitiva BigUint64Array
        +-- d6cb72f5: Exploit de compilador JIT (aquecimento com 1M de iterações)
        +-- dbfd6e84: Escape de sandbox (feConvolveMatrix + pthread)
        |
        +-- [caminho iOS] bcb56dc5: Scanner de cache compartilhado dyld do iOS
        |   +-- Localizador dos frameworks WebCore, IOKit, CoreUtils
        |
        +-- [caminho macOS] 2d2c721e: Scanner de cache compartilhado dyld do macOS
        |   +-- Localizador de CoreFoundation, CoreGraphics, ActionKit
        |
        +-- [stager iOS] 164349160: Stager de payload para iOS
        |   +-- Shellcode ARM64 (31.308 bytes)
        |   +-- Binário Mach-O criptografado (14.954 bytes)
        |
        +-- [stager macOS] 6241388a: Stager de payload para macOS
            +-- Shellcode ARM64 (31.308 bytes)
            +-- Binário Mach-O criptografado (14.954 bytes)
            +-- Bypass de PAC (jitCagePtr, SecureARM64EHashPins)
            +-- Cadeia ROP via JIT

Atribuição e contexto do agente de ameaça

A campanha que distribui o Coruna por meio de iscas de criptomoedas e jogos de azar é atribuída ao UNC6691, um agente de ameaça com motivação financeira que se acredita operar a partir da China. Veja por que essa atribuição faz sentido: a infraestrutura usa intensamente TLDs como .icu, .top, .online e .game, que são comumente associados a redes de fraude operadas por chineses. Por exemplo, domínios como mijieqi[.]cn e 668ddf[.]cc usam caracteres chineses ou convenções de nomenclatura típicas de grupos de ameaça chineses. Pense assim: essas escolhas de domínio e pistas de idioma fornecem sinais fortes sobre a origem do operador. É importante destacar que o exploit não impõe restrições de geolocalização; ele tem como alvo qualquer usuário do Safari no mundo, tornando-se uma ameaça global.

A migração do framework Coruna de um fornecedor comercial de software de vigilância, passando por um agente de espionagem de Estado-nação (UNC6353), até um grupo criminoso com motivação financeira (UNC6691) em aproximadamente um ano evidencia o mercado secundário ativo para exploits móveis avançados. Na prática, isso significa que exploits sofisticados de zero-day, inicialmente desenvolvidos para espionagem, são rapidamente reaproveitados para crimes cibernéticos com fins lucrativos. Por exemplo, as duas CVEs da Operação Triangulation incorporadas ao kit — CVE-2023-32434 e CVE-2023-38606 — foram documentadas publicamente pela primeira vez como zero-days usados em uma campanha de espionagem de alto nível. Agora, essas mesmas vulnerabilidades alimentam uma ferramenta de exploração em massa voltada para carteiras de criptomoedas, mostrando com que rapidez os agentes de ameaça mudam de tática.


O que você deve fazer

A proteção mais eficaz é simples: atualize todos os dispositivos Apple imediatamente. O kit falha explicitamente contra a versão mais recente do iOS disponível no momento da divulgação. Por exemplo, usuários com iOS 17.3 ou posterior estão protegidos contra o exploit principal da cadeia cassowary. Melhor ainda: o kit completo é neutralizado no iOS 17.4 e superior. Não espere — atualizar seu dispositivo é a defesa mais simples e confiável.

Ação Prioridade Protege contra
Atualizar para iOS 17.3+ Crítica cassowary (CVE-2024-23222)
Atualizar para iOS 17.4+ Crítica Sparrow (CVE-2024-23225), Rocket (CVE-2024-23296)
Ativar o Modo de Isolamento Alta Todas as cadeias Coruna (o kit aborta explicitamente no Modo de Isolamento)
Bloquear domínios DGA .xyz com 15 caracteres Média Comunicação com C2
Alertar sobre GET com ?e= para novos domínios Média Reporte de resultado do exploit
Alertar sobre requisições de [hex com 40 caracteres].min.js Média Entrega do PlasmaLoader

Para equipes de desenvolvimento web especificamente: a questão não é apenas se seus usuários atualizaram os dispositivos. Você também precisa considerar se o seu site pode ser usado para entregar esse payload a usuários sem atualização. Por exemplo, uma tag de anúncio comprometida, um script de analytics envenenado ou um asset de CDN sequestrado carregado pelas suas páginas poderia transformar seu site em um nó de distribuição sem que você soubesse. Seus logs de servidor não mostrariam nada suspeito, porque o exploit roda inteiramente no navegador, reporta para um domínio C2 que você nunca ouviu falar e depois sai silenciosamente. Esse sigilo torna a detecção extremamente difícil sem monitoramento especializado.


Indicadores de comprometimento

Domínios C2 (gerados por DGA, TLD .xyz)

vvri8ocl4t3k8n6[.]xyz    rlau616jc7a7f7i[.]xyz    ol67el6pxg03ad7[.]xyz
6zvjeulzaw5c0mv[.]xyz    ztvnhmhm4zj95w3[.]xyz    v2gmupm7o4zihc3[.]xyz
pen0axt0u476duw[.]xyz    hfteigt3kt0sf3z[.]xyz    xfal48cf0ies7ew[.]xyz
yvgy29glwf72qnl[.]xyz    lk4x6x2ejxaw2br[.]xyz    2s3b3rknfqtwwpo[.]xyz
xjslbdt9jdijn15[.]xyz    hui4tbh9uv9x4yi[.]xyz    xittgveqaufogve[.]xyz
xmmfrkq9oat1daq[.]xyz    lsnngjyu9x6vcg0[.]xyz    gdvynopz3pa0tik[.]xyz
o08h5rhu2lu1x0q[.]xyz    zcjdlb5ubkhy41u[.]xyz    8fn4957c5g986jp[.]xyz
uawwydy3qas6ykv[.]xyz    sf2bisx5nhdkygn3l[.]xyz  roy2tlop2u[.]xyz
gqjs3ra34lyuvzb[.]xyz    eg2bjo5x5r8yjb5[.]xyz    b38w09ecdejfqsf[.]xyz

Domínios de entrega (selecionados)

ai-scorepredict[.]com         pepeairdrop01[.]com
goodcryptocurrency[.]top      cryptocurrencyworld[.]top
bestcryptocurrency[.]top      binancealliancesintro[.]com
b27[.]icu                     7p[.]game
4u[.]game                     h4k[.]icu
spin7[.]icu                   seven7[.]vip
seven7[.]to                   4kgame[.]us
7uspin[.]us                   n49[.]top
98a[.]online                  7ff[.]online
26a[.]online                  cy8[.]top
btrank[.]top                  mkkku[.]com
goanalytics[.]xyz             kanav[.]blog
land[.]77bingos[.]com         land[.]bingo777[.]now
land[.]777bingos[.]xyz        dbgopaxl[.]com
lddx3z2d72aa8i6[.]xyz         dd9l7e6ghme8pbk[.]xyz
fxrhcnfwxes90q[.]xyz          3v5w1km5gv[.]xyz
sj9ioz3a7y89cy7[.]xyz         appstoreconn[.]com
ddus17[.]com                  tubeluck[.]com

IPs de infraestrutura (não-CDN)

IP ASN Provedor de hospedagem Domínios
95.214.181.109 AS212238 Datacamp Limited, HK (bulletproof) cryptocurrencyworld[.]top, bestcryptocurrency[.]top
185.53.179.128 AS61969 Team Internet AG, DE mkkku[.]com
103.110.221.8 AS137535 JT Telecom International, JP ddus17[.]com
54.248.167.86 AS16509 AWS EC2 ap-northeast-1 (Tóquio) btrank[.]top

Domínios adicionais encontrados via pivô rDNS (Team Internet AG, 185.53.179.128)

bet247[.]ac    gem88[.]ac    gemwin[.]ac
gunbet[.]ac    i9-bet[.]ac   sbet[.]ac
taisunwin[.]ac

Assinaturas JavaScript

Dispatcher de módulo:  globalThis.vKTo89
Funções de API:        WLEBfI, ksQccv, OLdwIx, LBrh4t, tI4mjA
Ofuscação de URL:      lysNguL, lysNguk, lysNgu6, lysNguv
Salt de implantação:   cf40de81867d2397
Padrão XOR:            [n1,n2,...].map(x => String.fromCharCode(x ^ K)).join("")
Aquecimento JIT:       new Uint32Array(10000000) + x += 1 repetido
Limites de versão:     13E4, 16E4

IDs de hash SHA1 dos módulos

1ff010bb3e857e2b0383f1d9a1cf9f54e321fbb0  (biblioteca utilitária)
6b57ca3347345883898400ea4318af3b9aa1dc5c  (fingerprinting)
8dbfa3fdd44e287d57c55e74a97f526120ffd8f0  (confusão de tipos JIT)
55afb1a69f9e35265f29b113adaa6f34e8215813  (leitura/escrita arbitrária)
5264a0694295c0a1978d1b4b03b2ab909e5c6d09  (exploit WASM)
166411bd90ee39aed912bd49af8d86831b686337  (primitiva BigUint64)
d6cb72f5888b2ec1282b584155490e3b6e90a977  (exploit de compilador JIT)
dbfd6e840218865cb2269e6b7ed7d10ea9f22f93  (escape de sandbox)
bcb56dc5317128d4e53b8474535f4c099bf322b3  (scanner dyld do iOS)
2d2c721e64fbbb49c39654930563758332e4eff3  (scanner dyld do macOS)
164349160d3d35d83bfdcc001ccd23cd1b3b75d5  (stager do iOS)
6241388ab7da11aa490d4ecfed44d952568f008a  (stager do macOS)

Assinaturas binárias

Shellcode ARM64:  31.308 bytes | começa com fd 7b bf a9 fd 03 00 91 (prólogo STP X29, X30)
Payload Mach-O:   14.954 bytes | ARM64 (0xFEEDFACF) | preenchido com UTF-16LE em JS
PlasmaLoader:     ~1.324 bytes criptografados | nome do arquivo: [hex com 40 caracteres].min.js

Resumo rápido

O Coruna é um kit de exploit para iOS de nível spyware que contém 23 exploits individuais distribuídos em cinco cadeias. Ele cobre todas as versões do iOS de 13.0 a 17.2.1. Originalmente, foi criado por desenvolvedores para um fornecedor comercial de software de vigilância. Em seguida, um grupo de espionagem russo o utilizou. Agora, um agente de ameaça chinês com motivação financeira o implanta ativamente contra carteiras de criptomoedas. Essa evolução mostra como os exploits podem circular entre diferentes tipos de agentes.

O kit roda inteiramente no navegador como um payload JavaScript autocontido. Ele usa quatro camadas de ofuscação e um protocolo de entrega de módulos com chave que torna a análise estática praticamente impossível sem o salt de implantação. A cadeia de execução tem seis fases, terminando com um shellcode ARM64 assinado, um binário Mach-O e um implante final que exfiltra dados das carteiras MetaMask, Exodus, Bitget Wallet e Base. Em termos simples: trata-se de um ataque altamente sofisticado e de múltiplos estágios que tem como alvo carteiras de criptomoedas populares diretamente no ambiente do navegador.

A cadeia principal, chamada cassowary (CVE-2024-23222), tem como alvo versões do iOS de 16.6 a 17.2.1 usando uma vulnerabilidade de confusão de tipos JIT no JavaScriptCore. Outras duas cadeias reutilizam zero-days originalmente descobertos durante a Operação Triangulation. Vale destacar que três CVEs deste kit foram adicionadas ao catálogo de Vulnerabilidades Exploradas Conhecidas (KEV) da CISA no dia seguinte à divulgação pública, o que reforça a gravidade delas.

A infraestrutura por trás do Coruna abrange mais de 50 domínios de entrega registrados em uma janela de 10 semanas entre novembro de 2025 e janeiro de 2026. Esses domínios estão hospedados na Cloudflare, AWS CloudFront, em um provedor bulletproof de Hong Kong (Datacamp Limited) e em uma instância dedicada do AWS EC2 em Tóquio. Os 27 domínios C2 são gerados por DGA usando a semente "lazarus" e estavam com fronting via Cloudflare no momento da divulgação. Essa configuração de hospedagem diversificada ajuda os operadores a escapar de esforços de derrubada e a manter a resiliência.

O ponto crítico para equipes de desenvolvimento web é este: esse payload é um arquivo JavaScript. Ele não precisa estar no seu servidor para chegar aos seus usuários. Uma tag de anúncio comprometida, um script de terceiros envenenado ou um asset de CDN sequestrado seriam suficientes. Seus logs não mostrariam nada suspeito. O cside monitora em tempo real todos os scripts executados nos navegadores dos seus usuários — essa é a única camada onde esse ataque se torna visível. Sem esse monitoramento, você pode nunca detectar essa ameaça.


Saiba o que está acontecendo no seu site. Você não saberia se esse script fosse injetado nos navegadores dos seus visitantes por meio de um dos seus pacotes de código aberto, ferramentas de marketing, anúncios ou dependências das suas dependências. Infelizmente, isso acontece o tempo todo.

Use o cside para proteger o seu negócio. Use o cside para proteger os seus clientes.

Experimente o cside gratuitamente ou agende uma demonstração.


Referências

  1. Google Threat Intelligence Group, "Coruna iOS Exploit Kit Uses 23 Exploits Across Five Chains Targeting iOS 13-17.2.1," The Hacker News, 4 de março de 2026.
  2. Aviso de Segurança da Apple, "CVE-2024-23222: Problema de confusão de tipos no WebKit," janeiro de 2024. nvd.nist.gov
  3. Catálogo de Vulnerabilidades Exploradas Conhecidas da CISA, 5 de março de 2026. cisa.gov
  4. Help Net Security, "Apple corrige zero-day do WebKit explorado ativamente (CVE-2024-23222)," 23 de janeiro de 2024.
  5. Infosecurity Magazine, "Coruna Exploit Kit Targets Older iPhones in Multi-Stage Attack," março de 2026.
  6. Security Affairs, "Google uncovers Coruna iOS Exploit Kit targeting iOS 13-17.2.1," março de 2026.

Esta análise é baseada na inspeção direta de amostras ativas do Coruna obtidas de domínios de entrega em operação (b27[.]icu, 7p[.]game), combinada com inteligência de ameaças pública do Google GTIG, CISA e iVerify. A análise de infraestrutura envolveu resolução de DNS, pivôs de DNS reverso via HackerTarget, consultas de registro RDAP, logs de transparência de certificados via crt.sh e DNS passivo via URLScan. Toda a análise binária foi realizada em um ambiente isolado para garantir a segurança.

Simon Wijckmans
Founder & CEO Simon Wijckmans

Founder and CEO of cside. Building better security against client-side executed attacks, and making solutions more accessible to smaller businesses. Web security is not an enterprise only problem.

FAQ

Frequently Asked Questions

O Coruna (também rastreado como CryptoWaters) é um kit de exploit para iOS de nível spyware que contém cinco cadeias de exploit completas e 23 exploits individuais. Ele tem como alvo o Safari no iOS 13.0 até o 17.2.1 e é executado inteiramente no navegador como um payload JavaScript autocontido, sem exigir nenhuma interação do usuário além de carregar a página.

Foi divulgado publicamente pelo Google Threat Intelligence Group em 4 de março de 2026 e é atualmente atribuído ao UNC6691, um agente de ameaça chinês com motivação financeira que tem como alvo usuários de carteiras de criptomoedas.

O Coruna contém cadeias de exploit cobrindo todas as versões do iOS de 13.0 até 17.2.1 sem lacunas. A cadeia principal (cassowary) tem como alvo o iOS 16.6 até 17.2.1 via CVE-2024-23222. Cadeias mais antigas cobrem o iOS 13.x até 16.5.1. Dispositivos com iOS 17.3 ou posterior estão protegidos contra a cadeia principal; o iOS 17.4 e acima neutraliza o kit completo.

O Coruna é entregue como um arquivo HTML autocontido (normalmente chamado de group.html ou analytics.html) incorporado como um iframe oculto de dimensão zero dentro de uma página web. Nas campanhas analisadas, as páginas de entrega estavam hospedadas em sites falsos de criptomoedas e jogos de azar controlados pelo atacante.

No entanto, o payload não exige que o atacante seja dono do site de entrega. Ele pode ser injetado por meio de uma tag de rede de anúncios comprometida, um script de terceiros envenenado ou um ativo de CDN sequestrado. Qualquer um desses vetores tornaria um site legítimo um nó de distribuição involuntário, sem nenhum rastro visível nos logs do servidor.

O Coruna executa uma cadeia de seis fases: faz a impressão digital do alvo usando um oráculo de memória WebAssembly para ler os internos do JavaScriptCore, aciona um exploit de confusão de tipos JIT (CVE-2024-23222) para obter leitura/escrita arbitrária de memória, derrota o ASLR varrendo o cache compartilhado do dyld, escapa da sandbox do WebKit usando um exploit de filtro SVG feConvolveMatrix, contorna a Autenticação de Ponteiro no Apple Silicon usando símbolos internos do JSC e, por fim, injeta shellcode ARM64 que carrega um binário Mach-O criptografado.

O payload final, PlasmaLoader, exfiltra dados de carteiras de criptomoedas do MetaMask, Exodus, Bitget Wallet e Base.

O Coruna usa quatro camadas de ofuscação: arrays de inteiros codificados em XOR para todas as strings, um despachante de módulos codificado em Base64, codificação Base64 por módulo com ofuscação XOR contínua e preenchimento UTF-16LE para payloads binários incorporados.

Ele também implementa verificações ativas anti-análise: aborta no Modo de Bloqueio, ignora sessões de navegação privada, verifica um mecanismo WebKit real via renderização MathML, verifica a disponibilidade do RTCPeerConnection e usa um protocolo de entrega de módulos com chave onde os nomes de arquivo são derivados de SHA256(salt + module_hash), tornando a análise estática impossível sem o salt de implantação.

Os 27 domínios C2 fornecidos neste relatório são gerados por DGA usando a string semente 'lazarus', produzindo domínios .xyz de exatamente 15 caracteres. O implante usa o resolvedor DNS público do Google para validar quais domínios estão ativos e, em seguida, percorre a lista como fallback. Todos os 27 domínios atualmente não retornam registros DNS após a divulgação do GTIG em 4 de março de 2026.

No momento da divulgação, os domínios C2 ativos estavam com fronting do Cloudflare, confirmado por registros do URLScan mostrando IPs do Cloudflare para vvri8ocl4t3k8n6[.]xyz e rlau616jc7a7f7i[.]xyz em 4 de março de 2026.

Sim. O payload do Coruna é um arquivo JavaScript que pode ser injetado em qualquer lugar onde uma tag de script possa ser inserida. Um criativo de anúncio programático comprometido, um ataque à cadeia de suprimentos em um widget de análise ou chat de terceiros, ou um cache de CDN envenenado seriam suficientes para distribuir o exploit por qualquer site que utilize esses serviços.

O servidor de origem não mostraria nada incomum em seus logs. O exploit é executado inteiramente no navegador do usuário e reporta os resultados de volta a um domínio C2 que o editor jamais ouviu falar. É exatamente por isso que o monitoramento do lado do cliente — a única camada onde esse ataque é visível — é necessário.

Duas das doze cadeias de exploit do Coruna, Photon (CVE-2023-32434) e Gallium (CVE-2023-38606), exploram vulnerabilidades que foram usadas pela primeira vez como zero-days na Operação Triangulation, a sofisticada campanha de espionagem para iOS documentada pela Kaspersky em 2023.

A presença delas no Coruna ilustra como ferramentas ofensivas de estados-nação migram para o ecossistema criminal de ameaças mais amplo assim que os CVEs subjacentes se tornam de conhecimento público. O que começou como uma capacidade de espionagem direcionada agora faz parte de um kit de exploração em massa voltado para carteiras de criptomoedas.

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