6 puntos por darjeeling 6 일 전 | 4 comentarios | Compartir por WhatsApp

El equipo de investigación de seguridad de JFrog descubrió que la versión 2026.4.0 de @bitwarden/cli en npm fue secuestrada. Manteniendo intactos los metadatos y el branding legítimos de Bitwarden, solo se reemplazaron el script preinstall y el punto de entrada del binario bw por un cargador malicioso (bw_setup.js).

Cómo funciona

Durante la instalación, el cargador primero descarga el runtime de Bun desde GitHub y luego ejecuta una carga útil de JavaScript ofuscada (bw1.js). El uso de Bun en lugar de Node.js es en sí mismo una estrategia para evadir la detección.

La carga útil recopila ampliamente credenciales de estaciones de trabajo de desarrolladores y entornos de CI mediante tres recolectores.

  • Recolector del sistema de archivos: claves SSH (~/.ssh/), credenciales de Git (.git-credentials), tokens de npm (~/.npmrc), .env, credenciales de AWS (~/.aws/credentials), credenciales de GCP (~/.config/gcloud/credentials.db) y más
  • Recolector del shell/entorno: ejecución del comando gh auth token, escaneo de process.env para buscar patrones de tokens de GitHub y npm
  • Recolector de GitHub Actions: inyecta workflows en repositorios donde el token tiene permisos para extraer incluso los secretos de Actions

Un punto especialmente llamativo es que también incluye como objetivo archivos de configuración de herramientas de IA y MCP, como ~/.claude.json, ~/.claude/mcp.json y ~/.kiro/settings/mcp.json.

Ruta de exfiltración doble

Los datos robados se comprimen con gzip y luego se envían tras pasar por cifrado híbrido AES-256-GCM + RSA-OAEP.

  • Ruta primaria: HTTPS POST a audit.checkmarx.cx/v1/telemetry (disfrazado como si fuera un servicio de seguridad legítimo)
  • Ruta secundaria (abuso de GitHub): si la primaria falla, busca y extrae en mensajes de commit de GitHub un PAT codificado en Base64 doble con el marcador LongLiveTheResistanceAgainstMachines. Mediante el marcador beautifulcastle y verificación de firma RSA, también recupera dinámicamente dominios alternativos de exfiltración. Finalmente, crea un nuevo repositorio en la cuenta de GitHub de la víctima y sube el JSON cifrado al directorio results/.

Cómo identificar la infección

Los metadatos legítimos integrados de Bitwarden CLI indican 2026.3.0, pero la raíz del paquete figura como 2026.4.0, lo que sugiere que la capa maliciosa fue añadida externamente y no por el pipeline de build legítimo.

Cómo responder

Si existe historial de instalación de esa versión, debe asumirse que todas las credenciales de ese host fueron comprometidas.

  • npm uninstall -g @bitwarden/cli y limpieza de caché
  • Rotación completa de GitHub PAT, tokens de npm y claves de acceso de AWS
  • Revisar los logs de auditoría de Azure Key Vault / GCP Secret Manager
  • Verificar ejecuciones no autorizadas en workflows de GitHub Actions
  • Bloquear a nivel de red audit.checkmarx.cx y 94.154.172.43
  • Confirmar si hubo exposición de información sensible en archivos de configuración de herramientas de IA (Claude, Kiro, etc.)

Más allá de un ladrón común de credenciales de npm, se trata de un ataque sofisticado que combina compromiso de la cadena de suministro + robo multietapa de secretos + uso de la infraestructura de GitHub como arma.

4 comentarios

 
savvykang 6 일 전

> THE MOST TRUSTED PASSWORD MANAGER
> Defiéndete de hackers y filtraciones de datos

La etiqueta de la página principal de la empresa me pareció vacía de sentido, así que cancelé mi cuenta.

 
t7vonn 6 일 전

Qué escalofriante;; lo usaba todos los días, y por suerte esta vez la parte de Homebrew no fue comprometida.
Uff... creo que por ahora tendré que eliminar todas las librerías globales de npm o desactivar pre/postinstall.

 
lamanus 5 일 전

Homebrew cambió para desactivar postinstall por defecto y permitirlo solo como excepción. No sé si llamarlo suerte, pero como actualizo por tags del repo sin mirar npm, esta versión me pasó de largo. Últimamente también entró el cooldown de npm, así que probablemente ni siquiera se habría distribuido aunque hubiera estado mirando npm.

 
sanghunka 6 일 전

Vaya, esto sí está un poco impactante.