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 Usan cuentas de Microsoft Entra ID para robar datos de Microsoft 365 y Azure


Una versión comprometida de la popular extensión Nx Console para VS Code fue publicada en el marketplace de Visual Studio Code el 18 de mayo de 2026. El ataque tuvo como objetivo robar silenciosamente credenciales de desarrolladores, tokens de infraestructura en la nube y secretos de canalizaciones CI/CD en miles de máquinas, representando el segundo ataque a la cadena de suministro contra el ecosistema Nx en menos de un año.





La versión comprometida de la popular extensión Nx Console de VS Code fue publicada en el Visual Studio Code Marketplace el 18 de mayo de 2026, atacando silenciosamente credenciales de desarrolladores, tokens de infraestructura en la nube y secretos de tuberías CI/CD en miles de máquinas.

El incidente marca el segundo ataque a la cadena de suministro contra el ecosistema Nx en menos de un año, lo que plantea serias preocupaciones sobre la seguridad de las herramientas de desarrollo de código abierto en las que confían millones de personas en todo el mundo.

La versión 18.95.0 de la extensión, identificada como nrwl.angular-console, fue subida al marketplace con código malicioso oculto dentro de su archivo main.js empaquetado.

Con más de 2,2 millones de instalaciones en todo el mundo, la extensión es un elemento básico diario en muchos entornos de desarrollo profesional.

A los pocos segundos de que un desarrollador abriera cualquier espacio de trabajo, la extensión comprometida descargaba y ejecutaba silenciosamente una carga útil (payload) ofuscada de 498 KB, extraída de un commit huérfano oculto profundamente dentro del repositorio oficial de GitHub de nrwl/nx.

Investigadores de StepSecurity identificaron el ataque completo e ilustraron en un informe un desglose detallado de su compleja cadena de infección en múltiples etapas.

La carga útil se describe como un sofisticado robador de credenciales que va mucho más allá del simple robo de archivos, dirigiéndose a tokens de GitHub, credenciales de npm, secretos de AWS, tokens de HashiCorp Vault, configuraciones de Kubernetes e incluso elementos de la bóveda de 1Password que eran accesibles a través de la línea de comandos.

La versión maliciosa estuvo activa solo durante once minutos antes de que el equipo de Nx detectara la publicación fraudulenta y la eliminara del marketplace a las 12:47 UTC.

A pesar de esa breve ventana, el actor de la amenaza había diseñado la carga útil para operar con rapidez, convirtiéndose en un demonio (daemon) en segundo plano y ejecutando múltiples recolectores de credenciales simultáneamente para maximizar el volumen de secretos recolectados antes de que alguien pudiera intervenir.

Lo que hace que este ataque sea especialmente alarmante es su uso de la lógica de atestación de Sigstore, que podría dar al atacante la capacidad de publicar paquetes npm descendentes que lleven una procedencia válida y firmada criptográficamente.

Esto significa que los paquetes manipulados por el atacante podrían pasar los controles estándar de verificación de firmas, extendiendo potencialmente el daño mucho más allá de las máquinas de los desarrolladores que quedaron expuestas directamente durante la ventana de compromiso de once minutos.

Abusan de las cuentas de Microsoft Entra ID

El ataque comenzó cuando el token de acceso personal de GitHub de un colaborador fue robado durante un incidente de cadena de suministro previo y separado.

Utilizando ese token robado, el atacante subió un commit huérfano, referenciado como 558b09d7, al repositorio nrwl/nx a las 03:18 UTC.

Storm-2949 attack (Source - Microsoft)
Ataque Storm-2949 (Fuente – Microsoft)

Este commit no tenía commits padres y era completamente inalcanzable desde cualquier rama, lo que lo hacía invisible para cualquiera que no conociera el SHA exacto.

El commit huérfano reemplazó todo el monorepositorio de Nx con solo dos archivos: un package.json y una carga útil index.js fuertemente ofuscada.

A las 12:36 UTC, el atacante utilizó entonces credenciales de publicación robadas del Marketplace de VS Code para lanzar la extensión envenenada, la cual estaba configurada para descargar y ejecutar silenciosamente esa carga útil oculta en el momento en que un desarrollador abriera cualquier espacio de trabajo, todo sin mostrar ningún signo visible de actividad inusual.

Robo de credenciales y puerta trasera persistente

La carga útil ejecutó seis clases recolectoras especializadas simultáneamente, cada una diseñada para recolectar una categoría diferente de secretos.

En sistemas Linux, también buscó acceso sudo sin contraseña y, si tuvo éxito, inyectó una regla de sudoers para establecer un acceso persistente a nivel de root en el host afectado.

En macOS, la carga útil instaló una puerta trasera basada en Python en ~/.local/share/kitty/cat.py, registrada como un LaunchAgent para ejecutarse automáticamente cada hora.

Esta puerta trasera utilizaba la API de búsqueda de GitHub como un canal encubierto de comando y control (C2), consultando instrucciones firmadas por el atacante cada sesenta minutos, un enfoque que se mezcla naturalmente con el tráfico normal de los desarrolladores y es poco probable que active alertas de firewalls corporativos o herramientas de detección de endpoints.

Cualquier persona que haya tenido instalado Nx Console con la actualización automática activada y haya abierto un espacio de trabajo entre las 12:36 y las 12:47 UTC del 18 de mayo debe tratar su máquina como totalmente comprometida.

StepSecurity recomienda actualizar inmediatamente a la versión 18.100.0 o posterior, eliminar todos los artefactos de persistencia, finalizar los procesos en segundo plano huérfanos y rotar cada credencial accesible desde la máquina afectada, incluidos los tokens de GitHub, tokens de npm, claves SSH, credenciales de AWS y cualquier secreto que estuviera en la memoria del proceso en el momento del compromiso.

Indicadores de Compromiso (IoCs)

TipoIndicadorDescripción
Hash SHA-2561a4afce34918bdc74ae3f31edaffffaa0ee074d83618f53edfd88137927340b8Archivo VSIX malicioso (v18.95.0)
Hash SHA-256b0cefb66b953e5184b6adb3035e9e267335ac5eabfe1848e07834777b9397b74main.js malicioso dentro del VSIX
Hash SHA-256e7347d90653efc565f03733a95e9209d78f9cfa81e31ff2b2dd9d48d75a4b8b1Carga útil ofuscada index.js del commit huérfano
Hash SHA-25643f2b001846c4966073ebffa5be8f15e491a1e7d32bbd805d57406ff540e0dd9Dropper package.json del commit huérfano
Hash SHA-256228a2cf081d4cbea9b91cde14a8f9c4a4d003e7f32431496953fd6bac266f5a3VSIX limpio (v18.94.0) para comparación de referencia
Hash SHA-256cb86f4f223daa54467c7782a0d8607e9c84e2bb633e6f0e51d9a19579e200990VSIX remediado (v18.100.0)
Git SHA558b09d7ad0d1660e2a0fb8a06da81a6f42e06d2Commit huérfano malicioso en nrwl/nx
Git SHAba642fe2c7c65e42dd7f6444b83023dc6827e08cÁrbol de commits del commit huérfano
Git SHAacfc3f957a63b4cde93ff645f2b6bf26a8ed1bbfSHA del blob de index.js
Git SHA9d88f040c44b5f4d5f9db15ff89310776c168e99SHA del blob de package.json
URLapi.github.com/search/commits?q=firedalazerEndpoint de sondeo de la puerta trasera C2 de Python
Dirección IP169.254.169.254Endpoint IMDS de AWS consultado para robo de credenciales
Dirección IP169.254.170.2Endpoint de metadatos de contenedores ECS objetivo
Dirección IP127.0.0.1:8200Endpoint local de HashiCorp Vault objetivo
Dominiofulcio.sigstore.devUtilizado para la falsificación de atestación de Sigstore
Dominiorekor.sigstore.devUtilizado para entradas en el registro de transparencia de Sigstore
Dominiobun.sh/installInstalación del runtime Bun para la ejecución de la carga útil
Ruta de archivo~/.local/share/kitty/cat.pyPuerta trasera C2 de Python instalada en macOS/Linux
Ruta de archivo~/Library/LaunchAgents/com.user.kitty-monitor.plistLaunchAgent de macOS para persistencia horaria
Ruta de archivo/var/tmp/.gh_update_stateArchivo de estado anti-replay de C2
Ruta de archivo/tmp/kitty-*Directorios temporales de almacenamiento utilizados por la carga útil
Versión Extensiónnrwl.angular-console@18.95.0Versión comprometida de la extensión de VS Code
Variable Entorno__DAEMONIZED=1Establecida en el proceso malicioso de fondo daemonizado

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



Fuentes:
https://cybersecuritynews.com/hackers-abuse-microsoft-entra-id-accounts/

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.