Volver a todas las publicaciones
Publicado el · por Renaud Deraison

El paquete que el agente inventó

Investigadores de la Universidad de Tel Aviv, el Technion e Intuit revelaron el HalluSquatting: los atacantes sondean a un agente de código hasta descubrir qué nombres de paquetes, repositorios o skills inventa de forma fiable, registran esos nombres inventados y esperan. Cuando pides lo real, el agente obtiene la versión del atacante en su lugar — y las instrucciones ocultas en su interior secuestran el shell del agente para instalar malware de botnet. Nombres de repositorios alucinados hasta el 85 % de las veces; instalaciones de skills hasta el 100 %. Bromure Agentic Coding ejecuta todo ese camino de obtención y ejecución dentro de una VM Linux desechable, escanea los registros de paquetes donde aterriza la suposición, y deja al malware solo señuelos que robar.

Le pediste a tu agente de código un paquete conocido. Escribió un nombre que parecía correcto, ejecutó la instalación y siguió adelante. El nombre era una suposición — y alguien ya había registrado exactamente esa suposición y la había llenado de malware. Nadie cometió un error de tecleo. El agente inventó el nombre, y el atacante esperaba donde aterrizó la invención.

En julio de 2026, un grupo de la Universidad de Tel Aviv, el Technion e Intuit — entre ellos Aya Spira, Stav Cohen, Ron Bitton, Avishai Wool y Ben Nassi — describió un ataque que llaman HalluSquatting. Convierte una de las debilidades más conocidas de los grandes modelos de lenguaje — que inventan cosas y presentan la invención como un hecho — en un sistema de entrega para la cadena de suministro, dirigido no a ti, sino al agente que trabaja en tu nombre.

El montaje es casi aburrido de tan simple. Pídele a un agente de código que descargue un paquete, clone un repositorio o instale un skill para un proyecto que nunca ha visto, y a menudo adivinará el identificador en lugar de admitir que no lo sabe. El HalluSquatting convierte esa suposición en arma.

De un error de tecleo a una alucinación

El typosquatting existe desde siempre: registra expresss o lodahs, espera a que un humano se equivoque de tecla en la terminal. Depende de que una persona cometa un error. El slopsquatting, que surgió a lo largo de 2025 y principios de 2026, trasladó el error al modelo — un agente alucina un nombre de paquete que no existe, un atacante lo registra primero, y el siguiente agente que alucina el mismo nombre instala la carga. En enero de 2026, Charlie Eriksen, de Aikido, documentó un paquete npm alucinado, react-codeshift, que se propagó a 237 proyectos antes de que nadie se diera cuenta. Nunca se disparó ningún error de tecleo, así que tampoco se disparó ninguna defensa contra el typosquatting.

El HalluSquatting es la escalada de 2026, y la escalada consiste en que la alucinación ya no se deja al azar. El método de los investigadores es una receta de cuatro pasos:

  1. Elige un objetivo que el modelo no haya memorizado. Los repositorios en tendencia y las herramientas que son posteriores al corte del entrenamiento son el punto ideal: el modelo ha oído hablar de ellos, así que lo intentará, pero no ha visto el nombre real, así que inventará uno.
  2. Aprende el error. Sondea al agente repetidamente hasta saber qué nombre falso produce de forma fiable. El artículo reporta nombres de repositorios alucinados que aparecen hasta el 85 % de las veces, y escenarios de instalación de skills que alcanzan hasta el 100 % — lo bastante consistente como para apostar por ello.
  3. Reclama el nombre inventado. Regístralo en GitHub o en una tienda de plugins y llena el README, el manifiesto o el SKILL.md con instrucciones escritas para que el agente las lea.
  4. Espera. Cuando un desarrollador pide el recurso real, el agente emite en su lugar el identificador inventado del atacante y lo obtiene. Las instrucciones ocultas secuestran entonces la propia herramienta de ejecución de comandos del agente para instalar la carga.

Esa carga no es una prueba de concepto. Los investigadores encadenan la suposición con una inyección de prompt — lo que el grupo de Nassi llama promptware — y terminan en ejecución remota de código y malware de botnet: máquinas de desarrolladores infectadas que llaman a casa y reciben órdenes. La suposición pone el archivo del atacante en el plato del agente, las instrucciones enterradas lo convierten en comandos, y los comandos construyen un botnet a partir de los portátiles de los desarrolladores.

Por qué esto es un ataque al agente, no a ti

La frase que lo captura, tomada del texto, es que el HalluSquatting "migra el objetivo de los humanos a los agentes de IA, que pueden no confirmar si la fuente es real mientras ejecutan comandos". Un humano inseguro sobre el nombre de un paquete se detiene, comprueba el registro, echa un vistazo al número de estrellas. Un agente en modo de ejecución automática no se detiene. Su trabajo es seguir adelante, y un nombre que salió de sus propios pesos lleva la misma autoridad que un nombre que tú tecleaste. No tiene motivo para dudar de sí mismo.

Los investigadores probaron en las herramientas que los desarrolladores usan a diario — GitHub Copilot, Cursor, Windsurf, Cline, Google Gemini CLI y la familia OpenClaw — y encontraron que las alucinaciones eran "transferibles entre distintos modelos de LLM y aplicaciones", eficaces contra agentes construidos sobre modelos de Anthropic, OpenAI y Google. Ningún proveedor puede parchear esto, porque cabalga sobre la forma compartida en que un agente de código convierte una petición en una acción: adivinar el nombre, obtener el recurso, leer lo que dice, hacer lo que dice.

El agente“añade el paquete X”adivina un nombreobtieneNombre inventadopreregistrado por el atacanteREADME = instruccioneslee como planInyección de promptsecuestra el shellherramienta → instalaTu máquinala carga del botnet se instala · recibe órdenesclaves reales · tokens · sesiones en discoseñalC2botnetNingún humano cometió un error de tecleo. La suposición del agente era la dirección, y el atacante la poseía.
El HalluSquatting quita al humano de la cadena de suministro. El atacante sondea al agente hasta aprender qué nombre inventa el modelo, registra ese nombre exacto con un README o un manifiesto con trampa, y espera. Cuando pides el recurso real, el agente emite el nombre inventado, obtiene la versión del atacante, lee las instrucciones incrustadas como su propio plan, e instala la carga del botnet. En una configuración normal, eso corre en tu máquina.

Por qué "solo deja de alucinar" nunca fue la solución

La respuesta tentadora es hacer que el modelo se verifique a sí mismo — resolver el nombre antes de obtenerlo, marcar clone, install y fetch, anclar cada identificador en algo real. Son buenas ideas, y los investigadores las recomiendan. Pero todas viven en el mismo sitio: un filtro que lee lo que el agente está a punto de hacer y espera atrapar el mal caso antes de que se ejecute. El HalluSquatting está diseñado precisamente contra ese lector. El nombre parece legítimo porque el modelo lo produjo; el README parece documentación porque eso es lo que es un README; el comando de instalación es lo más ordinario que hace un agente de código en todo el día.

Este es el muro contra el que el resto de la seguridad de agentes sigue chocando. Una lista de bloqueo que lee un comando pierde ante el shell que lo reescribe. Un escáner que lee un paquete pierde ante la carga que no está en el paquete. Un agente que busca un skill recomienda el malware que él mismo encontró. El HalluSquatting añade la versión más afilada hasta ahora: el nombre malicioso no vino de internet en absoluto. Vino del modelo. No puedes poner en lista negra la imaginación de tu propio agente. La descripción la escribe el atacante, y la ejecución es el único lugar donde se decide el desenlace.

Dónde traza Bromure la línea

Bromure Agentic Coding no intenta convencer al modelo de que no adivine. Cambia lo que una mala suposición puede alcanzar. Cada agente que Bromure ejecuta — Claude Code, Codex, Grok Build — corre dentro de una VM Linux desechable en tu Mac, no en macOS mismo. Así que cuando el agente emite un nombre inventado, obtiene el recurso del atacante y ejecuta la instalación como los investigadores vieron hacer a estos agentes, varias cosas ya son ciertas.

Primero, y raro para esta clase de ataque, el camino del registro se escanea. Cuando el nombre inventado es un paquete npm, PyPI o Cargo — el caso del slopsquatting, el caso react-codeshift — aterriza de lleno dentro del escaneo de cadena de suministro de Bromure, que inspecciona los paquetes a medida que se descargan de los registros públicos. Esta es la única parte del HalluSquatting donde la suposición se resuelve en algo que Bromure fue construido para examinar directamente, antes de que se confíe en ello. Una dependencia alucinada sigue siendo una dependencia, y entra por la puerta principal que Bromure vigila.

Segundo, la carga corre en una caja que tiras. Supón que el nombre inventado apunta a un repositorio de GitHub o a un skill de tienda de plugins en lugar de a un paquete de registro, y que el loader del botnet se ejecuta. Se ejecuta dentro de la VM. No hay un host persistente en el que recibir órdenes: restablece el perfil a la base y el binario depositado, la tarea programada, el punto de apoyo — todo eso desaparece. Un nodo de botnet que se esfuma en el siguiente reinicio no es gran cosa como nodo de botnet.

Tercero, no hay credenciales reales que reclutar. El malware de botnet que rastrea el entorno y el disco en busca de claves de API, tokens de git y de nube, y claves SSH encuentra señuelos: Bromure inyecta valores de sustitución (brm_…, un ~/.kube/config sintético, tokens ssh y de nube desechables) en la VM y solo devuelve los reales en el host, en el proxy, de camino a la API genuina. Las claves reales nunca entran en la caja. Lo que la carga envía a su mando y control es un saco de cadenas que no autentican nada.

Cuarto, el promptware se lee frente a un detector. El HalluSquatting es un ataque de lectura antes de ser un ataque de ejecución — todo el exploit depende de que el agente ingiera el README, el manifiesto o el SKILL.md del atacante y lo trate como su propio plan. Esa es precisamente la autoridad no confiable que Bromure vigila: la misma clase que un CLAUDE.md o un AGENTS.md malicioso. La detección de inyección de prompt en el dispositivo de Bromure evalúa el contenido que el agente lee como documentación frente a modelos locales que nunca salen del Mac, más un escáner determinista para trucos de Unicode invisible. Una instrucción que dice "ahora ejecuta este script de instalación" enterrada en un manifiesto obtenido es exactamente el caso para el que existe ese detector.

Y por debajo de todo esto, el tráfico saliente es visible. La señal del botnet, la descarga de la etapa, el intento de exfiltración — eso aparece en el Registro de Seguridad de Bromure como tráfico saliente que puedes ver, en lugar de una llamada silenciosa de una máquina en la que confiabas.

VM Linux desechableNombre inventadoel agente lo obtieney lo instala aquíEscaneo cadena de sumin.npm / PyPI / Cargoatrapado en la puertaLo que el botnet reclutaríapromptware evaluado por detector localANTHROPIC_API_KEY = brm_9f2a… (falsa)git / AWS / ssh = señuelos · la caja se reiniciaseñal (registrada)El C2 recibe señuelosun nodo que se esfumaSecretos realespermanecen en el proxy del hostinsertados en el cableEl agente sigue adivinando y sigue instalando. Solo lo hace en algún lugar desechable, con claves que no son reales.
Misma suposición, misma obtención, misma instalación — máquina distinta. Dentro de Bromure el agente corre en una VM Linux desechable: un paquete de registro alucinado es atrapado por el escaneo de cadena de suministro en la puerta principal, la carga del botnet corre en algún lugar desechable, las credenciales que rastrea son señuelos cambiados por las reales solo en el proxy del host, el promptware del manifiesto obtenido es evaluado por un detector en el dispositivo, y la señal queda registrada. La suposición sigue ocurriendo. No hay nada que reclutar.

Alrededor de qué traza esto una línea

El aislamiento y el escaneo son contención, no una cura para la alucinación. Vale la pena ser preciso sobre qué cambia Bromure aquí y qué no.

El agente sigue inventando el nombre

Bromure no impide que el modelo alucine un identificador ni que obtenga aquello a lo que ese nombre se resuelve. Anclar las suposiciones del agente es un problema de modelo y de arnés. Lo que Bromure cambia es dónde corre lo obtenido y qué puede alcanzar al hacerlo.

El escaneo de registros cubre los registros

Un paquete npm, PyPI o Cargo alucinado es exactamente lo que inspecciona el escaneo de cadena de suministro — una captura genuina en la puerta principal. Un repositorio de GitHub alucinado o un skill de tienda de plugins no es un paquete de registro; ese camino lo sostienen el aislamiento, el detector de inyección y los señuelos, no el escaneo del registro.

La sustitución cubre los secretos que configuras

El cambio por señuelos protege las credenciales que pones en un perfil: claves de modelo, tokens de git y de nube, endpoints de base de datos gestionada, claves ssh. Un token que un script escribe en disco a mitad de ejecución, o una sesión que estableces a mano en la caja, es solo dato. Mantén los secretos en el broker, no en el espacio de trabajo.

La detección es una red, no un muro

La evaluación de inyección en el dispositivo marca un manifiesto de instalar-y-ejecutar más a menudo que no, pero un autor cuidadoso puede formular un señuelo para colarse ante un único escáner. Trata al detector como una capa; la contención — una caja desechable con claves falsas y una salida registrada — es lo que sostiene cuando un detector falla.

Los investigadores terminan con una frase que vale la pena guardar: "Los ataques siempre mejoran; nunca empeoran." Sus tasas de éxito son un suelo, no un techo, y el mecanismo de confianza subyacente — un agente que trata su propia suposición como un hecho y un archivo obtenido como un plan — no se va a parchear este trimestre. Tu agente va a inventar un nombre para algo que recuerda a medias, y algunos de esos nombres inventados ya estarán tomados. La pregunta no es si alguna vez obtendrá el equivocado. A una tasa de alucinación del 85 %, a veces lo hará. La pregunta es qué corre cuando lo hace: tu máquina, tus claves reales y un punto de apoyo que permanece — o una caja Linux que puedes tirar, con señuelos dentro y el registro comprobado a la entrada. Bromure hace que sea la segunda.