Solana FakeFix: 25 paquetes maliciosos de npm y PyPI se hacen pasar por versiones estables
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Una campaña de paquetes maliciosos está apuntando a desarrolladores de Solana a través de bibliotecas npm y PyPI con errores tipográficos promovidas como correcciones de compilaciones estables. El malware abusa de la ejecución del ciclo de vida del paquete y ganchos de tiempo de importación para robar secretos de billetera, credenciales de nube y claves SSH de entornos infectados. Algunas muestras también se expanden más allá del robo actuando como puertas traseras completas a través del comando y control basado en Telegram o desplegando cargadores enfocados en Windows construidos alrededor de Deno.
Investigación
Los investigadores de seguridad de JFrog descubrieron dos operaciones separadas pero relacionadas. La primera, rastreada como Solana FakeFix, utilizó paquetes estilo SDK falsificados para recopilar secretos sensibles de desarrolladores y sistemas de compilación. La segunda usó paquetes npm con temas de CMS para cargar ejecutables de Windows. Su análisis mostró que el código malicioso a menudo se agregaba a bibliotecas que de otro modo parecían funcionales, ayudando a que los paquetes parecieran legítimos mientras recuperaban silenciosamente cargas útiles de segunda etapa de manera dinámica a través de Deno.
Mitigación
Las organizaciones deben eliminar todos los paquetes afectados de las estaciones de trabajo de desarrolladores, las canalizaciones CI/CD y los cachés de paquetes internos. Cualquier credencial potencialmente expuesta debe rotarse de inmediato, incluidas las claves de billetera de Solana, claves SSH, credenciales de AWS y tokens de GitHub. Los equipos de seguridad también deben auditar los hosts en busca de métodos de persistencia como claves de ejecución del Registro, tareas programadas y modificaciones del perfil de shell.
Respuesta
Los defensores deben desinstalar los paquetes maliciosos identificados y revisar los archivos de bloqueo de dependencias en busca de bibliotecas no autorizadas o inesperadas. Todos los secretos expuestos deben rotarse de inmediato y cualquier criptomoneda almacenada en billeteras potencialmente comprometidas debe transferirse a nuevas direcciones de confianza. Los corredores de CI y los sistemas de desarrollo deben reconstruirse a partir de imágenes limpias para garantizar que no queden puertas traseras ocultas o mecanismos de persistencia.
"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>Técnica</b> – <b>T1195.001 Compromiso de la cadena de suministro: <br/>Comprometer dependencias de software y herramientas de desarrollo</b><br/><b>Descripción</b>: Uso de errores tipográficos y spam de problemas de GitHub para atraer a los desarrolladores a instalar paquetes maliciosos npm y PyPI que se hacen pasar por SDK legítimos de Solana.<br/><b>Objetivos</b>: @solana-labs/web3.js y herramientas similares."] class attack_supply_chain technique attack_user_exec_copy["<b>Técnica</b> – <b>T1204.004 Ejecución del usuario: Copiar y pegar malicioso</b><br/><b>Descripción</b>: Los desarrolladores ejecutan comandos sugeridos por atacantes a través de problemas de GitHub o instrucciones de paquetes."] class attack_user_exec_copy technique attack_user_exec_lib["<b>Técnica</b> – <b>T1204.005 Ejecución del usuario: Biblioteca maliciosa</b><br/><b>Descripción</b>: Los desarrolladores importan bibliotecas maliciosas en sus proyectos."] class attack_user_exec_lib technique op_exec_trigger(("Y")) class op_exec_trigger technique attack_event_trigger["<b>Técnica</b> – <b>T1546.016 Ejecución desencadenada por evento: Paquetes de instalador</b><br/><b>Descripción</b>: Ejecución de código controlado por el atacante a través de scripts de ciclo de vida postinstalación de npm o importaciones __init__.py de PyPI."] class attack_event_trigger technique attack_drive_by["<b>Técnica</b> – <b>T1189 Compromiso de navegación</b><br/><b>Descripción</b>: Descarga de cargas útiles secundarias como ejecutables de Windows o cargadores basados en Deno."] class attack_drive_by technique %% Persistence Phase persist_active_setup["<b>Técnica</b> – <b>T1547.014 Autoinicio de arranque o inicio de sesión: Configuración activa</b><br/><b>Descripción</b>: Creación de claves de ejecución del Registro para lanzar cargas maliciosas."] class persist_active_setup persistence persist_windows_service["<b>Técnica</b> – <b>T1543.003 Crear o Modificar Proceso del Sistema: Servicio de Windows</b><br/><b>Descripción</b>: Establecer la persistencia creando Servicios de Windows."] class persist_windows_service persistence payload_deno["<b>Malware</b> – <b>Campaña CMS basada en Deno</b><br/><b>Descripción</b>: Carga útil JavaScript maliciosa ejecutándose en modo sin cabeza a través de conhost.exe."] class payload_deno technique %% Command and Control Phase c2_web_service["<b>Técnica</b> – <b>T1102.003 Servicio Web: Comunicación Unidireccional</b><br/><b>Descripción</b>: Uso de tokens de bot de Telegram para recibir comandos y exfiltrar datos."] class c2_web_service command_control c2_dynamic_res["<b>Técnica</b> – <b>T1568 Resolución Dinámica</b><br/><b>Descripción</b>: Uso de métodos dinámicos para comunicarse con la infraestructura C2."] class c2_dynamic_res command_control %% Credential Access and Exfiltration Phase cred_files["<b>Técnica</b> – <b>T1552.001 Credenciales No Seguras: Credenciales en Archivos</b><br/><b>Descripción</b>: Exploración del sistema de archivos local en busca de archivos JSON de billetera de Solana id.json, claves SSH id_rsa, credenciales de AWS y archivos .env."] class cred_files credential_access exfil_c2["<b>Técnica</b> – <b>T1041 Exfiltración a través del Canal C2</b><br/><b>Descripción</b>: Envío de datos sensibles robados a través de la API de Telegram."] class exfil_c2 exfiltration %% Connections attack_supply_chain –>|conduce_a| op_exec_trigger op_exec_trigger –>|requiere| attack_user_exec_copy op_exec_trigger –>|requiere| attack_user_exec_lib attack_user_exec_copy –>|desencadena| attack_event_trigger attack_user_exec_lib –>|desencadena| attack_event_trigger attack_event_trigger –>|descargas_a_través_de| attack_drive_by attack_drive_by –>|instala| payload_deno payload_deno –>|establece| persist_active_setup payload_deno –>|establece| persist_windows_service persist_active_setup –>|comunica_a_través_de| c2_web_service persist_windows_service –>|comunica_a_través_de| c2_web_service c2_web_service –>|utiliza| c2_dynamic_res payload_deno –>|realiza_acceso_a_credenciales| cred_files cred_files –>|datos_enviados_a_través_de| exfil_c2 exfil_c2 –>|utiliza| c2_web_service "
Flujo de Ataque
Detecciones
Puntos de Persistencia Posibles [ASEPs – Software/Colmena NTUSER] (vía evento_registro)
Ver
Conhost LOLBAS (vía línea_de_comandos)
Ver
Posible Abuso de Telegram Como Canal de Comando Y Control (vía consulta_dns)
Ver
Posibles Comunicaciones C2 Sobre HTTP A IP Directa Con Puerto Poco Común (vía proxy)
Ver
IOCs (IP de origen) para detectar: Solana FakeFix: 25 Paquetes Maliciosos npm y PyPI Atraen Desarrolladores Con Falsas Compilaciones Estables
Ver
IOCs (IP de destino) para detectar: Solana FakeFix: 25 Paquetes Maliciosos npm y PyPI Atraen Desarrolladores Con Falsas Compilaciones Estables
Ver
Detección de Actividades de Paquetes Maliciosos que Involucran Carga Útil Dinámica Remota y C2 de Telegram [Conexión de Red de Windows]
Ver
Ejecución de conhost.exe en Modo Sin Cabeza para Ejecución de Script Malicioso [Creación de Procesos de Windows]
Ver
Detección de Persistencia de Clave de Ejecución del Registro del Cargador CMS de Windows [Evento del Registro de Windows]
Ver
Detección de Persistence de Gancho de Perfil de PowerShell y Ejecución Oculta de PowerShell [Powershell de Windows]
Ver
Ejecución de Simulación
Requisito previo: El chequeo previo de Telemetría y Línea base debe haber sido aprobado.
Justificación: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico erróneo.
-
Narrativa y Comandos de Ataque: El atacante ha ganado acceso inicial y tiene la intención de mantener un punto de apoyo. Deciden utilizar una carga útil basada en Deno. Para ocultar la ejecución del terminal, usan la
--sin_cabezabandera paraconhost.exe. Ejecutan un comando que modifica laclave del registro HKCUSoftwareMicrosoftWindowsCurrentVersionRun, adicionando un valor llamadoDenoUpdaterque ejecutaconhost.exe --sin_cabeza deno.exe [script_malicioso]. Esto asegurará que la carga útil se ejecute silenciosamente en segundo plano al iniciar sesión el usuario. -
Script de Prueba de Regresión:
# Simulación de persistencia basada en Deno a través de Clave de Ejecución del Registro $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun" $Name = "DenoUpdater" $Value = "C:WindowsSystem32conhost.exe --sin_cabeza C:UsersPublicdeno.exe carga_maliciosa.js" Write-Host "[*] Simulando mecanismo de persistencia..." New-ItemProperty -Path $RegistryPath -Name $Name -Value $Value -PropertyType String -Force Write-Host "[+] Clave de registro creada. Verifique SIEM para alerta." -
Comandos de Limpieza:
# Limpiar la persistencia simulada $RegistryPath = "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun" $Name = "DenoUpdater" if (Get-ItemProperty -Path $RegistryPath -Name $Name -ErrorAction SilentlyContinue) { Remove-ItemProperty -Path $RegistryPath -Name $Name -Force Write-Host "[+] Limpieza completa. Clave de registro removida." } else { Write-Host "[-] Limpieza fallida: Clave de registro no encontrada." }