Diez paquetes maliciosos en npm roban credenciales en Windows, macOS y Linux

Un ataque de cadena de suministro a gran escala Un reciente ataque a la cadena de suministro ha puesto en riesgo al ecosistema de desarrolladores que utilizan NPM, la plataforma más popular para la gestión de paquetes en JavaScript. Atacantes lograron inyectar código malicioso en múltiples librerías con más de 2.6 mil millones de descargas semanales, tras comprometer la cuenta de un mantenedor mediante un correo de phishing que imitaba al soporte oficial de npmjs.com. El mantenedor afectado, Josh Junon, confirmó el incidente y señaló que el correo fraudulento advertía que su cuenta sería bloqueada si no actualizaba su autenticación multifactor (2FA), forzando así a que ingresara credenciales en un sitio controlado por los atacantes. Paquetes afectados y alcance de la intrusión Entre los paquetes comprometidos se encuentran algunos de los más utilizados en proyectos globales: chalk (299.9M descargas semanales) debug (357.6M) ansi-styles (371.4M) strip-ansi (261.1M) supports-color (287.1M) color-convert (193.5M) Entre otros, sumando más de 18 librerías populares. Estos paquetes fueron modificados para incluir código malicioso en archivos index.js, diseñado para interceptar interacciones web y manipular operaciones relacionadas con criptomonedas como Bitcoin, Ethereum, Solana, Tron y Litecoin. El malware alteraba funciones críticas de JavaScript (fetch, XMLHttpRequest, window.ethereum) con el objetivo de redirigir transacciones a billeteras controladas por los atacantes. Cómo operaba el malware El código malicioso actuaba de forma silenciosa en el navegador, alterando tanto el contenido mostrado como las interacciones con APIs y aplicaciones web3. Esto permitía manipular direcciones de pago y aprobar transacciones fraudulentas sin que el usuario lo notara. Según Aikido Security, la complejidad del ataque radica en que operaba en múltiples capas, combinando técnicas de manipulación visual con la interceptación de tráfico de red. Impacto y limitaciones Aunque la magnitud del ataque es significativa, expertos señalan que el impacto puede haberse reducido debido a factores como: Solo afectó instalaciones nuevas realizadas entre las 9:00 y 11:30 AM ET del día del compromiso. Requería que el archivo package-lock.json fuera generado en ese mismo periodo. Dependencias directas o transitivas debían incluir versiones comprometidas. Aun así, el incidente confirma la creciente tendencia de ataques contra cadenas de suministro en el ecosistema open source, donde una sola cuenta comprometida puede afectar a millones de proyectos. Lecciones para las empresas Este ataque subraya la necesidad de fortalecer controles en la gestión de dependencias y librerías de terceros: Implementar monitoreo continuo de integridad en paquetes críticos. Adoptar políticas estrictas de actualización y validación de librerías externas. Usar repositorios privados o proxies internos para reducir exposición a cambios no controlados. Reforzar la concienciación en phishing, ya que la intrusión comenzó con un engaño de ingeniería social. Conclusión: El caso de NPM recuerda que las organizaciones deben tratar las dependencias externas con el mismo nivel de seguridad que el software interno. Un simple clic en un correo de phishing puede convertirse en un ataque global con repercusiones multimillonarias.

Se identifican 10 paquetes maliciosos en el registro npm que imitaban nombres de librerías populares mediante typosquatting. Estos paquetes fueron descargados casi 10,000 veces antes de su eliminación y ocultaban malware de robo de información dirigido específicamente a desarrolladores.


Vector de Typosquatting en npm: Ataque a la Cadena de Suministro

El objetivo de esta campaña no es el usuario final, sino el entorno del desarrollador, buscando robar los tokens de acceso que permiten infiltrarse en pipelines y sistemas de producción.


Mecanismo del Robo de Credenciales
  • Typosquatting: El atacante publica paquetes con nombres muy similares a librerías legítimas y populares (ej., “ethers-js” vs “ethersjs “). Esto atrae instalaciones involuntarias debido a errores tipográficos o descubiertos.
  • Script postinstall: Cuando un desarrollador instala el paquete, el código malicioso se ejecuta automáticamente como parte del script postinstall.
  • Extracción de secretos: El malware realiza un escaneo automático del entorno del desarrollador (revisar variables de entorno, tokens, sistemas de CI/CD) para robar credenciales, tokens de autenticación de npm/GitHub o claves de acceso a la nube.

Por Qué el Riesgo es Máximo
  • Compromiso en Cascada: Aunque el número de instalaciones directas es pequeño, el ataque apunta a desarrolladores, lo que significa que un token robado puede permitir al atacante infiltrarse en pipelines, modificar dependencias o comprometer entornos de producción indirectamente (ataque a la cadena de suministro).
  • Superficie de Ataque Ampliada: La instalación de librerías se realiza con alta frecuencia en entornos de desarrollo, que a menudo están fuera del control estricto del equipo de seguridad (dev machines).
  • Desarrollador como Vector: La responsabilidad recae en gran medida en los desarrolladores individuales (instalando dependencias sin supervisión), lo que exige un cambio cultural hacia el desarrollo seguro (DevSecOps).

Recomendaciones
  1. Prácticas de Desarrollo Seguro (Para Desarrolladores)
  • Doble Verificación: Verifique siempre el nombre exacto del paquete antes de instalar. Prefiere copiar el nombre desde la página oficial npm o repositorio comprobado.
  • Auditoría de Scripts: Revisar los scripts postinstalloinstall de las nuevas dependencias cuando se usan en un entorno sensible. Si el script hace algo inusual (leer variables de entorno, enviar datos), alertar.
  • Segmentación de Entornos: Las máquinas de desarrollo deben tener privilegios limitados. No deben tener tokens persistentes de CI/CD o nube y deben usar cuentas distintas de las de producción.
  1. Controles de Seguridad Automatizados (Para DevSecOps)
  • Escaneo de Dependencias: Implementar escaneo automático de dependencias (SBOM) y configurar alertas cuando se instalen paquetes nuevos o de baja reputación.
  • Auditoría de Cuentas: Auditar las cuentas de mantenedores de dependencias propias e internas, forzando la Autenticación Multifactor (MFA) para npm/GitHub.
  • Privilegios Mínimos en Pipelines: Aplicar la política de privilegio mínimo en todos los pipelines: los tokens utilizados para publicación de paquetes o CI deben tener permisos mínimos necesarios y deben ser rotados periódicamente.
  • Monitoreo de Tokens: Monitorizar registros para detectar actividad inusual en GitHub Actions o creación de forks o sucursales desconocidas originadas por tokens de desarrollo.

Related Post