Doce horas y cinco mil máquinas: la extensión de Claude Code que no era de Anthropic

En algún momento del jueves, una compilación de la extensión de Claude Code que estaba en el marketplace de Cursor dejó de ser lo que decía ser. Dos versiones —2.1.312 y 2.1.313— llevaban una puerta trasera SSH persistente. La ficha siguió publicada casi doce horas. El cálculo de Cursor de desarrolladores afectados es «hasta 5.000».
Los detalles vienen de un grupo de análisis de seguridad publicados con un día de diferencia entre ellos: Step Security, Sophos, BleepingComputer, el blog de seguridad de Microsoft y Ars Technica, que fue el más preciso al reconstruir la cronología. Según esos informes, la extensión manipulada hacía lo que se supone que hace una puerta trasera: abrir una vía de entrada que sobrevive a un reinicio, en este caso por SSH. El resumen del incidente de The Verge señala que la carga maliciosa recogía nombres de host, nombres de usuario y direcciones IP.
Esa es la versión corta. La larga tiene que ver con qué es un marketplace de extensiones y por qué esto iba a pasar tarde o temprano.
Qué quedó comprometido en realidad
No los servidores de Anthropic. No el modelo Claude. Un canal de distribución.
Claude Code se distribuye como CLI y como extensiones de editor. Cursor tiene su propio marketplace de extensiones, igual que VS Code, y la ficha en cuestión estaba marcada como la extensión oficial de Claude Code. Para un desarrollador que buscaba «claude code» dentro de su editor, la ficha parecía correcta: el nombre correcto, el icono correcto, la descripción correcta.
Lo que se ejecutaba al instalar era una compilación troyanizada. El mecanismo descrito en los informes es una puerta trasera SSH persistente: una modificación que permite a un atacante entrar en la máquina más tarde, por SSH, sin que el usuario tenga que hacer nada más. Para un portátil de desarrollador, es casi la peor carga posible. No es un minero de criptomonedas que aparece en el Monitor de Actividad. Es una puerta silenciosa.

Por qué los desarrolladores son el objetivo ideal
Una máquina de desarrollador comprometida no es solo un portátil. Es un conjunto de credenciales con un alcance inusualmente amplio: código fuente de repositorios privados, tokens de CI, claves de nube, cadenas de conexión a bases de datos en un archivo .env que alguien pensaba limpiar en marzo, claves SSH que confían unas en otras por toda una flota.
Una puerta trasera SSH encaja especialmente bien en ese entorno, porque las máquinas de los desarrolladores ya ejecutan SSH, ya tienen archivos authorized_keys y ya esperan conexiones entrantes de otras máquinas. Una clave nueva en ese archivo no parece anómala como lo parecería una conexión saliente nueva hacia una IP desconocida.
Súmale el momento: un jueves, en plena jornada laboral, en medio de un ciclo de lanzamiento para muchos equipos. La ventana no fue larga, pero doce horas bastan para unos miles de instalaciones si la ficha aparece cerca del principio de un resultado de búsqueda.
La parte que nadie quiere decir en voz alta
Los marketplaces de extensiones no son tiendas de apps en el sentido en que las entiende el consumidor. Se parecen más a los registros de paquetes. Hay un proceso de revisión, pero está orientado a detectar comportamiento obviamente malicioso en el momento del envío, no a verificar de forma continua que quien publica sigue siendo quien dice y que el binario sigue siendo el binario.
No es un fallo exclusivo de Cursor. Es la debilidad estructural de todo ecosistema que permite a terceros publicar código que se ejecuta con privilegios locales completos: npm, PyPI, las extensiones de VS Code, las extensiones de navegador y ahora los marketplaces que han crecido alrededor de las herramientas de programación con IA. La superficie de ataque no es el modelo. Es el instalador.
Lo que hizo notable este caso fue la marca. Una extensión con el nombre de un producto de IA conocido, en un marketplace donde la mayoría de los usuarios busca exactamente ese producto, es un atajo de confianza contra el que es difícil defenderse. El nombre hace la ingeniería social.
Cómo fue la respuesta
La ficha se retiró y Cursor publicó un recuento de usuarios. Los proveedores de seguridad publicaron indicadores. Anthropic, según la cobertura, no fue quien distribuyó la compilación mala: la extensión del marketplace de Cursor era un canal de distribución distinto del de Anthropic.
Esa distinción importa para repartir culpas, pero no para el riesgo. Desde la perspectiva de un desarrollador, «instalé la extensión de Claude Code desde el marketplace de mi editor» es una sola acción, y la cadena de custodia que hay detrás es invisible.
Qué hacer esta semana
Si usas Cursor, o cualquier editor con un marketplace de terceros, esta es una buena semana para hacer tres cosas aburridas.
Primero, lista tus extensiones instaladas y revisa quién las publica. No los nombres: quién las publica y, si puede ser, la fuente de instalación. Lo que no reconozcas, fuera. Lo que duplique una función que ya tienes de una fuente oficial, fuera.
Segundo, revisa ~/.ssh/authorized_keys en tus máquinas de desarrollo. Buscas claves que no reconozcas. En un portátil que solo se conecta hacia fuera, ese archivo suele estar vacío o no existir, lo que hace fácil detectar una entrada inesperada.
Tercero, rota las credenciales a las que esa máquina tenía acceso. Este es el paso caro y el que la gente se salta. Si no puedes rotarlo todo, rota lo que más dolería: las claves del proveedor de nube, los tokens de los registros de paquetes y cualquier cosa con acceso de escritura a un repositorio de producción.
Para los equipos hay una más: fijar las versiones de las extensiones e instalar desde una lista revisada, en lugar de dejar que cada persona instale lo que salga bien posicionado en la búsqueda. Es una política que casi todos los equipos ya tienen para las dependencias de npm y que casi ninguno tiene para los plugins del editor.
Por qué nadie se dio cuenta en medio día
Doce horas no son mucho en términos absolutos, pero son muchísimo en la vida de un canal de distribución. Durante esa ventana la extensión se podía instalar, instalar significaba ejecutar, y ejecutar significaba que todo desarrollador que pulsara instalar en una jornada normal quedaba potencialmente expuesto.
La detección, y esto es notable, vino de fuera. Los proveedores de seguridad que vigilaban comportamientos sospechosos lo señalaron; el marketplace no. No es una crítica específica a Cursor: así funcionan estos ecosistemas. Los registros están optimizados para la disponibilidad, no para la monitorización continua del comportamiento de cada artefacto que alojan. La economía de escanear en tiempo real cada actualización de cada extensión es brutal, y el incentivo para hacerlo es débil hasta que algo se rompe.
La recuperación fue más rápida que la detección. Ficha retirada, avisos publicados, indicadores compartidos. Pero el orden importa: primero la exposición, después la explicación. Para cualquiera que instalara durante la ventana, la información útil llegó después de la decisión que importaba.
La conclusión incómoda
La categoría de herramientas de programación con IA lleva dos años compitiendo por capacidad: ventanas de contexto, bucles de agente, cuántos archivos puede editar la cosa sin perder el hilo. Ha dedicado casi nada a competir por la integridad de la cadena de suministro, porque hasta ahora el modelo de amenaza era «el modelo escribe código malo», no «la extensión es malware».
Cinco mil máquinas y doce horas es un incidente pequeño para los estándares de la última década de ataques a la cadena de suministro de software. También es un avance de lo que viene. El siguiente será un servidor MCP, o un paquete de skills, o un plugin que un agente popular recomiende por su nombre. El patrón es el mismo: un nombre de confianza, un canal de distribución con verificación ligera y una carga que no necesita hacer ruido.
La lección no es «no uses extensiones». Es que «oficial» en la ficha de un marketplace no significa prácticamente nada, y la única defensa que escala es tratar los plugins del editor con la misma desconfianza que ya aplicas a un npm install cualquiera de un paquete del que nunca has oído hablar.
Artículos relacionados
Meta prueba sus apps de IA más extrañas primero en el sudeste asiático
Un probador virtual con IA en Indonesia, Singapur y Tailandia. Un diario con mascota en Filipinas. Ninguno se anunció, y esa es la cuestión.
Ollie tenía SOC 2 y 7,5 millones de dólares. Aun así no pudo superar a Muse.
Un asistente familiar centrado en la privacidad, con una ronda semilla liderada por Khosla y una auditoría SOC 2 real, cierra el 6 de noviembre. La lección no va de privacidad. Va de distribución.
Runware quiere construir centros de datos como Detroit construía coches
Treinta megavatios al día para 2028, módulos operativos en 48 horas, un gigavatio al mes. El límite de la capacidad de IA dejó de ser los chips y pasó a ser los dos años que cuesta levantar un edificio.
Genspark convirtió un equipo de rodaje en un menú
Tres modelos de lenguaje dirigen, setenta versiones de modelos ejecutan y tu trabajo se convierte en treinta y cinco aprobaciones seguidas. Una prueba práctica de cómo se siente realmente la producción de vídeo orquestada.