144 paquetes npm de Mastra infectados con puertas traseras en un ataque de 88 minutos a la cadena de suministro

Investigadores de seguridad en Socket han revelado un ataque a la cadena de suministro que comprometió 144 paquetes en el namespace @mastra de npm el 17 de junio de 2026. El atacante secuestró una cuenta de colaborador con derechos de publicación en el framework de agentes de IA Mastra, luego ejecutó una campaña automatizada durante 88 minutos que republicó cada paquete afectado con una dependencia typosquatted inyectada como requisito de producción. Cualquier desarrollador, ejecutor de CI o sistema de compilación que haya instalado un paquete @mastra/* después del 16 de junio debe tratar ese entorno como potencialmente comprometido, según el análisis de Socket.
Mastra es un framework TypeScript para construir agentes de IA, y su paquete principal (@mastra/core) recibe más de 918,000 descargas semanales. La amplitud del ataque — 144 paquetes en todo el namespace, no solo un objetivo único de alto valor — significa que los desarrolladores que instalaron cualquier parte del ecosistema Mastra durante la ventana de ataque estuvieron expuestos.
Cómo funcionó el ataque
El atacante no modificó el código de Mastra directamente. En su lugar, añadió una dependencia llamada easy-day-js a cada paquete republicado. El nombre es un typosquat deliberado de la biblioteca de fechas ampliamente utilizada dayjs — lo suficientemente cercano como para que el escaneo automático de dependencias podría pasarlo por alto.
El paquete malicioso easy-day-js contenía un hook postinstall — un script que npm ejecuta automáticamente durante npm install, antes de que un desarrollador importe o ejecute cualquier código del paquete. Ese hook descargó y ejecutó una carga útil de dos etapas:
- Etapa 1 (setup.cjs): Un cargador ofuscado que deshabilitó la verificación de certificados TLS, se conectó a la infraestructura del atacante en
23.254.164[.]92:8000, descargó la carga útil de la segunda etapa, la lanzó como un proceso en segundo plano independiente y luego se eliminó a sí mismo para borrar rastros. - Etapa 2 (protocal.cjs): Un ladrón de información multiplataforma de ~41KB con mecanismos de persistencia para Windows (clave de registro Run), macOS (LaunchAgent) y Linux (unidad systemd). El implante inventarió 166 extensiones de navegador de carteras de criptomonedas, cosechó el historial de navegación de Chrome, Edge y Brave, y abrió un canal de comando y control capaz de ejecutar código arbitrario posterior.
La ventana de ataque se extendió desde las 01:12 hasta las 02:39 UTC del 17 de junio. Los registros de auditoría de npm muestran que una sola cuenta — ehindero, un colaborador cuyo acceso de publicación al ámbito @mastra nunca fue revocado — publicó las 142 versiones de paquetes maliciosos en esos 88 minutos. El equipo de seguridad de Microsoft también identificó e informó el ataque, según informes adicionales.
Quién está en riesgo
Cualquier sistema que haya ejecutado npm install con una dependencia @mastra/* entre el 16 de junio y el momento en que se retiraron las versiones maliciosas representa un compromiso potencial. Esto incluye laptops de desarrolladores, ejecutores de pipelines CI/CD, sistemas de compilación Docker y entornos de compilación en la nube. Debido a que la carga útil se ejecuta durante la instalación a través de un hook postinstall — no en tiempo de ejecución de la aplicación — incluso los sistemas que no ejecutaron la aplicación se ven afectados si ejecutaron npm install.
Pasos de remediación
Socket y otros investigadores de seguridad recomiendan tratar cualquier sistema afectado como completamente comprometido. Acciones específicas:
- Eliminar la persistencia: borrar las entradas de registro Run de Windows, los archivos plist de LaunchAgent de macOS y las unidades systemd de Linux asociadas con el implante.
- Rotar todas las credenciales que existían en las máquinas afectadas: tokens npm, credenciales de proveedores de nube (AWS, GCP, Azure), claves SSH y claves API.
- Rotar las carteras de criptomonedas en un dispositivo limpio y no afectado — el implante se dirigió específicamente a 166 extensiones de cartera de navegador.
- Auditar los pipelines CI/CD en busca de signos de acceso no autorizado o secretos exfiltrados.
Para protección futura, Socket recomienda agregar --ignore-scripts a los comandos npm install en pipelines CI para deshabilitar los hooks postinstall de forma predeterminada — una mitigación directa que habría bloqueado este vector de ataque por completo.
La organización @mastra ha eliminado las versiones maliciosas de los paquetes de npm. Los desarrolladores deben actualizar a versiones limpias y verificar que easy-day-js no aparezca en ningún directorio node_modules o archivo de bloqueo.
Originally reported by Socket. Read the original article for additional details.
View original source