Skip to main content

Ataque con malware en la cadena de suministro de npm contra mantenedores de ESLint Prettier Plugin

Escrito por
blog feature security alert purple

22 de julio de 2025

0 minutos de lectura

Desde el 19 de julio de 2025, un incidente de seguridad en la cadena de suministro de npm ha estado atacando a mantenedores de paquetes populares de código abierto en el registro de npm.

Resumen rápido del malware de npm

  • Atacantes registraron el dominio npnjs.com (un caso de typosquatting que imita al registro oficial npmjs.com).

  • Los mantenedores fueron víctimas de una campaña de phishing por correo electrónico que secuestró sus credenciales del registro de npm.

  • Paquetes afectados: eslint-config-prettier, eslint-plugin-prettier, synckit, @pkgr/core, napi-postinstall y got-fetch.

  • Los mantenedores restablecieron sus credenciales de token de npm, marcaron los paquetes con malware como obsoletos y el registro de npm ya eliminó las versiones maliciosas.

Ejemplo de aviso de Snyk Vulnerability Database sobre la versión maliciosa de got-fetch:

versión maliciosa del paquete npm got-fetch, parte del ataque a la cadena de suministro de npm que afectó a eslint-config-prettier

El paquete eslint-config-prettier registra 30,000,000 de descargas por semana hasta la fecha y su adopción ha crecido de forma constante, lo que demuestra el impacto de este malware.

Descargas del paquete npm eslint-config-prettier desde el sitio web npm.chart.dev

Sobre el ataque a los plugins de Prettier en npm

Para publicar paquetes en el registro oficial npmjs.com, se necesita una cuenta con una dirección de correo electrónico válida. Cuando se publican paquetes de npm, esta información queda disponible de forma abierta y amplia para que cualquiera pueda consultarla.

Por ejemplo, aquí está la información de mi propio paquete npq, que demuestra lo fácil que es obtener los correos electrónicos de los mantenedores:

El registro de npm muestra el correo electrónico del mantenedor como parte de la información del paquete

Lo anterior no es ninguna novedad. Ahora, los atacantes pueden usar esta información para buscar posibles vulnerabilidades, como:

  • Dominios de correo electrónico vencidos que pueden comprar y usar para iniciar un proceso de restablecimiento de contraseña y obtener acceso para publicar nuevas versiones.

  • Ataques de spear phishing por correo electrónico dirigidos a robar las credenciales de token de npm.

En este ataque reciente, los atacantes eligieron precisamente esta última vía y engañaron a los mantenedores para que siguieran un proceso por correo electrónico que recopiló sus credenciales del registro de npm. Ahora, los atacantes obtuvieron esas credenciales y pueden publicar nuevas versiones de estos paquetes haciéndose pasar por los mantenedores.

Este fue exactamente el escenario que ocurrió con eslint-config-prettier, uno de los paquetes de referencia, en el que se publicaron varias versiones infectadas con malware para Windows.

El mantenedor lo confirmó y presentó pruebas en la página de GitHub del plugin ESLint Config Prettier, donde mostró el correo electrónico que recibió:

Campaña de phishing que ataca a un mantenedor de npm de eslint-config-prettier

Infección virtual

¿Qué pasa cuando el malware infecta a un mantenedor? No es difícil que se propague a otros mantenedores si se publica una versión maliciosa de un paquete popular que compromete a alguien.

Esto fue precisamente lo que ocurrió: las repercusiones del malware de eslint-config-prettier, aunque se publicó por poco tiempo, ya afectaron a otros mantenedores: los del paquete de npm is. Por ello, las versiones 3.3.1 y 5.0.0 del paquete de npm is se marcaron como malware. Desde entonces, el problema se corrigió (el 19 de julio a las 9:21 p. m. UTC+3) y se publicó la versión corregida 3.3.2. Restablecer ese paquete tomó 6 horas, según el mantenedor Jordan Harband.

Cómo protegerte de los ataques a la cadena de suministro de npm

Primero, implementa los siguientes pasos de respuesta a incidentes:

  • Asegúrate de no usar ninguna de las versiones conocidas con malware de los paquetes mencionados en este incidente y de que no estén instaladas en tus sistemas de CI, implementaciones de producción ni entornos de tus equipos de desarrollo.

  • Si encuentras una infección, rota los secretos, audita los activos de los registros de paquetes internos y externos de tu empresa y sigue las pautas de tu equipo de seguridad interno.

Como medida de seguridad proactiva, te recomiendo seguir estas prácticas recomendadas de seguridad para protegerte de futuros incidentes de malware, tanto si eres mantenedor como desarrollador:

  • Activa la autenticación de dos factores (2FA) en tu cuenta del registro de npm, especialmente si eres mantenedor, ya que el alcance potencial del impacto es considerable.

  • Usa la CLI de código abierto npq para aplicar heurísticas antes de instalar paquetes de npm.

  • Agrega ignore-scripts=true al archivo de configuración .npmrc de tu usuario para que los scripts postinstall no se ejecuten automáticamente durante la instalación.

Este ataque a la cadena de suministro de npm destaca la necesidad fundamental de contar con medidas de seguridad sólidas. Para comprender mejor estas amenazas y conocer estrategias proactivas que te ayuden a proteger tus proyectos, explora la lección de Snyk Learn sobre ataques a la cadena de suministro.

Capacitación en seguridad para desarrolladores de Snyk

Aprende de expertos cuando sea relevante, directamente en tu propio código.