Alerta de cadena de suministro: un paquete de npm aparentemente confiable roba tokens de Codex y abre la puerta a ataques persistentes

Autor: Publicada 5 min de lectura 157 lecturas

Las imágenes de este artículo han sido generadas con inteligencia artificial. Cómo publicamos

Un nuevo caso de compromisos en la cadena de suministro de software vuelve a poner en evidencia una tendencia peligrosa: los atacantes están dejando de depender de paquetes “de relleno” o typosquats para esconderse y, en su lugar, están envenenando proyectos legítimos y funcionales que ya han ganado confianza entre desarrolladores. En este incidente concreto, la biblioteca npm codexui-android —promocionada como una interfaz remota para OpenAI Codex y con decenas de miles de descargas semanales— introdujo silenciosamente código que roba tokens de autenticación almacenados localmente y los envía a un servidor controlado por el atacante.

Lo que hace especialmente grave esta campaña es que el paquete era funcional y había sido desarrollado activamente antes de que se añadieran las rutinas de exfiltración, una técnica diseñada para construir confianza y ampliar el alcance antes de activar el componente malicioso. Además, la misma cadena de exfiltración se observó en apps Android que ejecutan el paquete dentro de un userland emulado mediante PRoot, lo que demuestra cómo los vectores pueden mezclarse entre ecosistemas: npm para desarrolladores y APKs para usuarios finales.

Alerta de cadena de suministro: un paquete de npm aparentemente confiable roba tokens de Codex y abre la puerta a ataques persistentes
Imagen generada con IA.

El objetivo principal son los tokens de Codex, almacenados en archivos de texto plano como ~/.codex/auth.json o en los almacenes de credenciales del sistema operativo. Esos archivos contienen access_token, refresh_token, id_token y el identificador de cuenta; y, según los investigadores, el refresh_token en particular no expira, lo que permite a un atacante mantener acceso persistente e invisible a la cuenta comprometida. Robar un refresh_token equivale a una llave maestra que permite operar en nombre de la víctima hasta que se revoque manualmente.

Más allá del impacto inmediato sobre la cuenta Codex comprometida, las consecuencias pueden ser extensas: un token con privilegios puede permitir a un atacante exfiltrar datos, manipular proyectos, distribuir código malicioso adicional o pivotar a otros activos en la organización. En entornos corporativos, esto puede convertirse en una puerta de entrada a repositorios con secretos, sistemas de CI/CD o entornos cloud.

Desde el punto de vista preventivo y de respuesta, hay medidas concretas que cualquier desarrollador o equipo debería aplicar ahora mismo. Lo primero es asumir que los tokens almacenados en disco son equivalentes a contraseñas y tratarlos como tales: inspeccione y, si tiene dudas, elimine el archivo ~/.codex/auth.json y revoque/regenere los tokens desde la consola del proveedor. Si su organización centraliza identidades, fuerce cierre de sesión de sesiones activas y reemita credenciales con menor duración y scopes reducidos. Contacte al soporte del servicio afectado para notificar y solicitar revocación si no encuentra opciones directas en la interfaz.

En el plano de la cadena de suministro, es imprescindible endurecer cómo se consumen dependencias: fije versiones (pinning) y use sumas de integridad (package-lock, npm ci con verificación de integrity), automatice análisis de dependencias con herramientas como las ofertas de seguridad de repositorios y escáneres de terceros, y restrinja la instalación de paquetes en entornos críticos. Las organizaciones deben exigir pruebas de integridad y reproducibilidad cuando integran paquetes externos en pipelines de producción.

También es esencial limitar la superficie de ataque a través de mejores prácticas en la gestión de credenciales: favorecer tokens de corta vida y scopes mínimos, activar la autentificación multifactor donde sea posible, evitar almacenar tokens en texto plano y desplegar controles de detección de exfiltración en redes y endpoints. En CI/CD, bloquee egress innecesario desde runners y contenedores para que una dependencia maliciosa no pueda comunicarse libremente con servidores externos.

Para usuarios móviles, la recomendación es extrema: evite instalar apps que pidan ejecutar entornos Linux no verificados dentro del dispositivo y desconfíe de apps con permisos o comportamientos fuera de lo habitual. Las tiendas oficiales no garantizan ausencia total de engaños; vigile reseñas, origen del desarrollador y actividad de red de la app si está en entornos de riesgo.

Alerta de cadena de suministro: un paquete de npm aparentemente confiable roba tokens de Codex y abre la puerta a ataques persistentes
Imagen generada con IA.

La comunidad y los proveedores también tienen un papel. Los repositorios y registries deben mejorar la detección de cambios maliciosos en paquetes activos, aplicando controles que analicen diferencias entre versiones y monitoreen dominios vinculados por los autores. Los equipos de seguridad internos deben integrar la generación de SBOMs (bill of materials) y auditorías regulares de dependencias, y las empresas deberían habilitar bloqueos de dominios sospechosos en sus perímetros para mitigar canales de exfiltración conocidos.

Finalmente, la vigilancia y la información compartida son clave: al descubrir una intrusión, documente el vector, los artefactos afectados (nombres de paquetes, versiones, hashes y dominios de exfiltración) y comparta esa información con la comunidad y con plataformas de seguridad para que se tomen medidas coordinadas. Recursos públicos como el proyecto de seguridad en la cadena de suministro de OWASP pueden orientar estrategias defensivas: https://owasp.org/www-project-software-supply-chain/. Para comprender riesgos de paquetes y cómo abordarlos desde el propio ecosistema de desarrollo, los programas y guías de seguridad de plataformas como GitHub Security Lab ofrecen herramientas y recomendaciones prácticas: https://securitylab.github.com/. Si detecta paquetes que reporten exfiltración a servicios que se hacen pasar por terceros (por ejemplo, servidores que imitan a Sentry), consulte las páginas oficiales del servicio suplantado para reportar abuso y obtener orientación sobre mitigación; en el caso de Sentry: https://sentry.io/.

Este incidente recuerda que la seguridad moderna no es solo proteger código propio, sino controlar y verificar cada componente externo que introduce confianza en nuestros flujos. La recomendación práctica y urgente es revisar tokens y sesiones, endurecer la gestión de dependencias y aplicar controles de red y detección que identifiquen comportamientos de exfiltración antes de que un token robado se convierta en un compromiso persistente.

Cobertura

Relacionadas

Mas noticias del mismo tema.