Productos FTTH

Tienda FFTH desde 2004

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Vulneran 170 paquetes npm para robar secretos de GitHub, npm, AWS y Kubernetes


Un ataque de cadena de suministro a gran escala ha alertado a los desarrolladores de software en todo el mundo, después que comprometieran más de 170 paquetes de npm y dos de PyPI en una campaña coordinada para el robo de credenciales. Debido a que estos paquetes infectados se descargan colectivamente más de 200 millones de veces por semana, el impacto potencial de esta amenaza es enorme.



Un extenso ataque a la cadena de suministro ha puesto a los desarrolladores de software de todo el mundo en alerta máxima después de que unos hackers comprometieran más de 170 paquetes de npm y dos paquetes de PyPI en una campaña coordinada de robo de credenciales.

Los paquetes infectados se descargan colectivamente más de 200 millones de veces por semana, lo que hace que el radio de impacto potencial sea enorme.

El grupo de amenazas detrás de la campaña, rastreado como TeamPCP, inyectó cargadores maliciosos y payloads de JavaScript ofuscados en paquetes de desarrolladores ampliamente utilizados.

Estos payloads fueron diseñados para ejecutarse silenciosamente dentro de las máquinas de los desarrolladores y en los pipelines de CI/CD, recolectar credenciales sensibles y usar dichas credenciales para propagarse aún más. La escala de la exposición tomó desprevenidos a muchos equipos de desarrollo.

Investigadores de JFrog descubrieron el alcance total de esta campaña, nombrándola "Shai-Hulud: Here We Go Again" tras reconocer rasgos distintivos de ataques anteriores del mismo grupo.

Su análisis reveló que no se trató de una simple intrusión puntual, sino de una operación autorreplicante diseñada para seguir creciendo con cada nueva infección exitosa.

Hackers comprometen 170 paquetes de npm

El ataque comenzó dentro de un entorno de lanzamiento de GitHub confiable. Los atacantes explotaron un patrón de flujo de trabajo que permitía que el código controlado por un fork se ejecutara en un contexto de repositorio privilegiado, ganando un punto de apoyo sin levantar sospechas inmediatas.

Desde ahí, envenenaron una entrada de la caché de compilación, que un flujo de trabajo de lanzamiento posterior restauró durante lo que parecía ser una actividad de compilación rutinaria.

Una vez dentro, el malware extrajo tokens de identidad de GitHub Actions de la memoria del ejecutor y los canjeó por credenciales de publicación de npm.

Luego inyectó código malicioso en paquetes adicionales, aumentó sus números de versión y los volvió a publicar. Cada paquete comprometido se convirtió en una plataforma de lanzamiento para la siguiente ola de infecciones.

Lo que hace que esta campaña sea especialmente alarmante es su comportamiento similar al de un gusano. En lugar de robar secretos de una máquina y detenerse, el malware sigue moviéndose.

Después de recolectar tokens de npm o credenciales de publicación confiables, el payload busca cada paquete que la cuenta de la víctima pueda publicar, reescribe esos paquetes con código malicioso y envía nuevas versiones infectadas al registro público.

El malware también puede solicitar un token OIDC para el registro de npm y canjearlo por un token de publicación, todo mientras se esconde detrás de la misma identidad de flujo de trabajo confiable que usan los desarrolladores reales.

Esto significa que los paquetes infectados pueden parecer provenientes de fuentes verificadas y confiables mientras siguen llevando malware en su interior.

La campaña también se expandió a Python a través de dos comprometidos paquetes de PyPI. La variante de PyPI utiliza un disparador al momento de la importación, por lo que el simple hecho de importar el paquete en cualquier script de Python puede activar el cargador.

Ese cargador luego descarga silenciosamente un payload remoto desde servidores del atacante, que ha evolucionado hasta convertirse en un recolector completo de credenciales dirigido a proveedores de nube, Kubernetes, Vault, gestores de contraseñas y herramientas de desarrollo.

Robo de credenciales y el interruptor de hombre muerto

El payload de npm apunta a una amplia gama de secretos, incluidos tokens de GitHub, credenciales de npm, claves de acceso de AWS desde variables de entorno y servicios de metadatos de la nube, tokens de cuentas de servicio de Kubernetes, tokens de HashiCorp Vault, claves SSH, credenciales de Docker y claves API genéricas.

En entornos de nube, consulta el servicio de metadatos de EC2 para recuperar credenciales de roles IAM directamente. El malware utiliza el propio GitHub como canal de exfiltración.

Crea un repositorio público bajo un token robado, sube paquetes de credenciales cifradas y marca el repositorio con el nombre de la campaña como rastreador.

Los commits que contienen tokens de GitHub robados llevan un mensaje amenazante advirtiendo a los defensores que no revoquen el acceso. Esa amenaza está respaldada por un interruptor de hombre muerto real.

El malware instala un monitor en segundo plano que consulta GitHub cada 60 segundos y, si el token robado es revocado, activa inmediatamente un comando de borrado destructivo en la máquina afectada.

Debes eliminar completamente toda la persistencia antes de rotar cualquier credencial, o te arriesgas a activar tú mismo el borrador.

JFrog recomienda aislar todas las máquinas afectadas y los ejecutores de CI/CD antes de revocar cualquier token. Los archivos de persistencia y los servicios en segundo plano deben eliminarse primero.

Después de la limpieza, los equipos deben rotar los tokens de GitHub, tokens de npm, credenciales de AWS, cuentas de servicio de Kubernetes, tokens de Vault y claves SSH.

También debes revisar los repositorios en busca de commits authored como "claude@users.noreply.github.com" y buscar ramas inesperadas similares a Dependabot que no coincidan con los patrones normales de automatización.

Indicadores de Compromiso (IoCs):-

TipoIndicadorDescripción
Dirección IP83.142.209.194Servidor C2 principal del atacante y host de payload de PyPI
URLhxxps[:]//83.142.209.194/transformers.pyzURL de descarga de payload remoto de PyPI
URLhxxps[:]//83.142.209.194/v1/modelsEndpoint de recuperación de segunda etapa / cuarentena temprana de PyPI
URLhxxps[:]//83.142.209.194/v1/weightsEndpoint principal de exfiltración de credenciales de PyPI
URLhxxps[:]//83.142.209.194/audio.mp3Descarga de medios destructiva de segunda etapa de PyPI
Dominioseed1[.]getsession[.]orgNodo semilla de Session/Oxen para carga de credenciales cifradas
Dominioseed2[.]getsession[.]orgNodo semilla de Session/Oxen para carga de credenciales cifradas
Dominioseed3[.]getsession[.]orgNodo semilla de Session/Oxen para carga de credenciales cifradas
Dominiofilev2[.]getsession[.]orgServicio de carga de archivos de Session/Oxen
Dominiogit-tanstack[.]comInfraestructura de la campaña
Dominioapi[.]masscan[.]cloudInfraestructura de la campaña
Archivotransformers.pyzPayload descargado malicioso de PyPI
Ruta de archivo/tmp/transformers.pyzRuta de descarga del payload de PyPI en Linux
Archivosetup.mjsArchivo cargador de la campaña de npm
Archivorouter_init.js (también tanstack_runner.js)Payload de JavaScript malicioso de npm
Ruta de archivo~/.local/bin/gh-token-monitor.shScript de interruptor de hombre muerto en Linux
Ruta de archivo~/.config/systemd/user/gh-token-monitor.serviceServicio systemd de interruptor de hombre muerto en Linux
Ruta de archivo~/Library/LaunchAgents/com.user.gh-token-monitor.plistLaunchAgent de interruptor de hombre muerto en macOS
Ruta de archivo~/.local/bin/pgmonitor.pyPayload de persistencia de segunda etapa de PyPI (usuario Linux)
Ruta de archivo/usr/bin/pgmonitor.pyPayload de persistencia de segunda etapa de PyPI (root)
Nombre del serviciopgsql-monitor.servicePersistencia systemd de segunda etapa de PyPI, se hace pasar por un monitor de PostgreSQL
Email / Autor del Commitclaude@users.noreply.github.comMarcador de autor de commit de GitHub utilizado para exfiltración dead-drop
Palabra claveFIRESCALEPalabra clave de descubrimiento de C2 de respaldo de PyPI buscada en commits de GitHub
Descripción del repositorioShai-Hulud: Here We Go AgainDescripción del repositorio dead-drop de GitHub (variante npm)
Descripción del repositorioPUSH UR T3MPRRDescripción del repositorio de exfiltración de GitHub (variante PyPI)
Hash (SHA-1)29c729852fce5a53e30a1541d9fec79c915b2e13Hash del payload de npm
Hash (SHA-1)f1eda94a5978cf0aae0d88d92ec78d556d696e20Hash del payload de npm
Hash (SHA-1)8927cc503d48e4b5eb56b31abc2870c2ed2e98d6Hash del payload de npm
Hash (SHA-1)be27fc96ab4fcadaec49c03278063dd269ea5eefHash del payload de npm
Hash (SHA-1)82d24f2124a8e15d7b90f2fa8601266cHash del payload de npm
Hash (SHA-256)D4a2086ea18f5e39cd867b8b06918a524eabb21d45ea98aad07357b98173458aHash del payload de npm
Hash (SHA-256)2a314ea8be337e1ca9ec833ed13ed854d9fd38bce0a519cf288f3bec8d9e6f30Hash del payload __init__.py de PyPI
Hash (SHA-256)5245eb032e336b85cff0dbb3450d591826bf2ef214fd30d7eba1a763664e151bHash actualizado del payload transformers.pyz de PyPI

Nota: Las direcciones IP y los dominios han sido deshabilitados intencionadamente (ej. [.]) para evitar la resolución accidental o la creación de enlaces. Reactívalos solo dentro de plataformas de inteligencia de amenazas controladas como MISP, VirusTotal o tu SIEM.



Fuentes:
https://cybersecuritynews.com/hackers-compromise-170-npm-packages/

0 comentarios :

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.