SOC Prime Bias: Crítico

12 Jun 2026 18:47 UTC

Solana FakeFix: 25 Pacotes Maliciosos do npm e PyPI se Passam por Builds Estáveis

Author Photo
SOC Prime Team linkedin icon Seguir
Solana FakeFix: 25 Pacotes Maliciosos do npm e PyPI se Passam por Builds Estáveis
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumo

Uma campanha de pacotes maliciosos está mirando desenvolvedores Solana através de bibliotecas npm e PyPI com erros de digitação, promovidas como correções de build estável. O malware abusa da execução do ciclo de vida dos pacotes e dos hooks de tempo de importação para roubar segredos de carteiras, credenciais de nuvem e chaves SSH de ambientes infectados. Algumas amostras também expandem além do roubo atuando como backdoors completos através de comando e controle baseado no Telegram ou implantando carregadores focados no Windows construídos ao redor de Deno.

Investigação

Pesquisadores de Segurança da JFrog descobriram duas operações separadas, mas relacionadas. A primeira, rastreada como Solana FakeFix, usava pacotes falsos no estilo SDK para coletar segredos sensíveis de desenvolvedores e sistemas de build. A segunda usava pacotes npm com tema de CMS para carregar executáveis do Windows. Sua análise mostrou que o código malicioso era frequentemente anexado a bibliotecas aparentemente funcionais, ajudando os pacotes a parecerem legítimos enquanto recuperavam silenciosamente cargas de segundo estágio dinamicamente através do Deno.

Mitigação

As organizações devem remover todos os pacotes afetados das estações de trabalho dos desenvolvedores, pipelines CI/CD e caches internos de pacotes. Quaisquer credenciais potencialmente expostas devem ser rotacionadas imediatamente, incluindo chaves de carteira Solana, chaves SSH, credenciais AWS e tokens do GitHub. As equipes de segurança também devem auditar os hosts em busca de métodos de persistência, como chaves de Execução do Registro, tarefas agendadas e modificações no perfil de shell.

Resposta

Os defensores devem desinstalar os pacotes maliciosos identificados e revisar os arquivos de bloqueio de dependência em busca de bibliotecas não autorizadas ou inesperadas. Todos os segredos expostos devem ser rotacionados de uma vez, e qualquer criptomoeda armazenada em carteiras potencialmente comprometidas deve ser transferida para novos endereços confiáveis. Em seguida, os runners de CI e sistemas de desenvolvimento devem ser reconstruídos a partir de imagens limpas para garantir que nenhum backdoor oculto ou mecanismo de persistência permaneça.

"graph TB %% Class Definitions Section classDef technique fill:#99ccff classDef persistence fill:#ff99cc classDef command_control fill:#cc99ff classDef exfiltration fill:#ffcc99 classDef credential_access fill:#ffff99 %% Initial Access and Execution Phase attack_supply_chain["<b>Technique</b> – <b>T1195.001 Supply Chain Compromise: <br/>Compromise Software Dependencies and Development Tools</b><br/><b>Description</b>: Use of typosquatting and GitHub issue spam to lure developers into installing malicious npm and PyPI packages impersonating legitimate Solana SDKs.<br/><b>Targets</b>: @solana-labs/web3.js and similar tools."] class attack_supply_chain technique attack_user_exec_copy["<b>Technique</b> – <b>T1204.004 User Execution: Malicious Copy and Paste</b><br/><b>Description</b>: Developers execute commands suggested by attackers via GitHub issues or package instructions."] class attack_user_exec_copy technique attack_user_exec_lib["<b>Technique</b> – <b>T1204.005 User Execution: Malicious Library</b><br/><b>Description</b>: Developers import malicious libraries into their projects."] class attack_user_exec_lib technique op_exec_trigger(("AND")) class op_exec_trigger technique attack_event_trigger["<b>Technique</b> – <b>T1546.016 Event Triggered Execution: Installer Packages</b><br/><b>Description</b>: Execution of attacker-controlled code via npm postinstall lifecycle scripts or PyPI __init__.py imports."] class attack_event_trigger technique attack_drive_by["<b>Technique</b> – <b>T1189 Drive-by Compromise</b><br/><b>Description</b>: Downloading secondary payloads such as Windows executables or Deno-based loaders."] class attack_drive_by technique %% Persistence Phase persist_active_setup["<b>Technique</b> – <b>T1547.014 Boot or Logon Autostart Execution: Active Setup</b><br/><b>Description</b>: Creation of Registry Run keys to launch malicious payloads."] class persist_active_setup persistence persist_windows_service["<b>Technique</b> – <b>T1543.003 Create or Modify System Process: Windows Service</b><br/><b>Description</b>: Establishing persistence by creating Windows Services."] class persist_windows_service persistence payload_deno["<b>Malware</b> – <b>Deno-based CMS Campaign</b><br/><b>Description</b>: Malicious JavaScript payload running in headless mode via conhost.exe."] class payload_deno technique %% Command and Control Phase c2_web_service["<b>Technique</b> – <b>T1102.003 Web Service: One-Way Communication</b><br/><b>Description</b>: Using Telegram bot tokens to receive commands and exfiltrate data."] class c2_web_service command_control c2_dynamic_res["<b>Technique</b> – <b>T1568 Dynamic Resolution</b><br/><b>Description</b>: Utilizing dynamic methods to communicate with C2 infrastructure."] class c2_dynamic_res command_control %% Credential Access and Exfiltration Phase cred_files["<b>Technique</b> – <b>T1552.001 Unsecured Credentials: Credentials In Files</b><br/><b>Description</b>: Scanning local filesystem for Solana wallet JSON files id.json, SSH keys id_rsa, AWS credentials, and .env files."] class cred_files credential_access exfil_c2["<b>Technique</b> – <b>T1041 Exfiltration Over C2 Channel</b><br/><b>Description</b>: Sending stolen sensitive data out via the Telegram API."] class exfil_c2 exfiltration %% Connections attack_supply_chain –>|leads_to| op_exec_trigger op_exec_trigger –>|requires| attack_user_exec_copy op_exec_trigger –>|requires| attack_user_exec_lib attack_user_exec_copy –>|triggers| attack_event_trigger attack_user_exec_lib –>|triggers| attack_event_trigger attack_event_trigger –>|downloads_via| attack_drive_by attack_drive_by –>|installs| payload_deno payload_deno –>|establishes| persist_active_setup payload_deno –>|establishes| persist_windows_service persist_active_setup –>|communicates_via| c2_web_service persist_windows_service –>|communicates_via| c2_web_service c2_web_service –>|uses| c2_dynamic_res payload_deno –>|performs_credential_access| cred_files cred_files –>|data_sent_via| exfil_c2 exfil_c2 –>|uses| c2_web_service "

Fluxo de Ataque

Execução de Simulação

Pré-requisito: O Check de Telemetria & Base deve ter passado.

Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.

  • Narrativa de Ataque e Comandos: O atacante obteve acesso inicial e pretende manter um ponto de apoio. Eles decidem usar uma carga útil baseada em Deno. Para ocultar a execução do terminal, usam o --headless flag para conhost.exe. Eles executam um comando que modifica a HKCUSoftwareMicrosoftWindowsCurrentVersionRun chave do registro, adicionando um valor chamado DenoUpdater que executa conhost.exe --headless deno.exe [malicious_script]. Isso garantirá que a carga útil seja executada silenciosamente em segundo plano ao entrar no sistema.

  • Script de Teste de Regressão:

    # Simulação de persistência baseada em Deno via Chave de Execução do Registro
    $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    $Name = "DenoUpdater"
    $Value = "C:WindowsSystem32conhost.exe --headless C:UsersPublicdeno.exe malicious_payload.js"
    
    Write-Host "[*] Simulando mecanismo de persistência..."
    New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType String -Force
    Write-Host "[+] Chave do registro criada. Verifique o SIEM para alerta."
  • Comandos de Limpeza:

    # Limpe a persistência simulada
    $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
    $Name = "DenoUpdater"
    
    if (Get-ItemProperty -Path $RegistryPath -Name $Name -ErrorAction SilentlyContinue) {
        Remove-ItemProperty -Path $RegistryPath -Name $Name -Force
        Write-Host "[+] Limpeza completa. Chave do registro removida."
    } else {
        Write-Host "[-] Limpeza falhou: Chave do registro não encontrada."
    }