Apunte el agente a código en el que no confía. No pierda nada cuando muerda.
Los agentes clonan repos de terceros, instalan dependencias y ejecutan scripts de build escritos por desconocidos. Un hook postinstall malicioso o una instrucción enterrada en un README no debería llegar a sus tokens, a sus claves ni a su red. En una VM de Bromure, no puede.
El problema
Cada npm install es ejecución remota de código
En el momento en que un agente ejecuta `npm install`, `pip install` o un Makefile de un repo no confiable, código arbitrario de gente que nunca ha conocido se ejecuta con los privilegios de su ingeniero. Un script postinstall envenenado, un paquete typosquatted, un paso de build que llama a casa — cada uno corre como el usuario, con las claves SSH, las credenciales cloud y el entorno del usuario a una syscall de distancia.
La codificación agéntica hace esto más frecuente y más peligroso. El agente clona con entusiasmo el repo al que apuntaba un ticket, instala lo que diga el lockfile y ejecuta la suite de tests — y una inyección de prompt en el README del proyecto puede dirigirlo a “ejecuta este script de configuración” antes de que un humano revise una sola línea.
La respuesta de Bromure
El radio de impacto es una VM a punto de ser borrada
Bromure ejecuta el agente — y todo lo que ejecuta — dentro de una VM de Linux desechable con su propio kernel, sistema de archivos y pila de red. El repo no confiable, sus dependencias y sus scripts de build corren ahí, no en el portátil del ingeniero. Las credenciales reales nunca entran en la VM; el agente llega a Git y a los registros de paquetes a través de un proxy que guarda los secretos.
Si un hook postinstall intenta leer `~/.ssh`, exfiltrar una variable de entorno o abrir un shell inverso, se encuentra con una VM efímera sin secretos reales, con la salida limitada a una lista de permitidos y sin nada tuyo que robar. Cuando la tarea termina, la VM se destruye, y todo lo que el paquete haya plantado se va con ella. Y si el README o un script de compilación intenta dirigir al propio agente, la detección de inyección de prompt en el dispositivo de Bromure marca el intento — de modo que una instrucción hostil queda detectada, no solo contenida.
Cómo funciona
Las credenciales nunca entran en la sala
El acceso a Git y a los registros pasa por un proxy de credenciales. El agente y el código no confiable que ejecuta obtienen acceso acotado y de corta duración — nunca ven un token real ni una clave SSH.
Salida con correa
El acceso de red está en una lista permitida por perfil. Una dependencia que hace beacon a un dominio nuevo o a una IP literal se bloquea, y el intento aparece en el log.
Entorno de build efímero
Clonar, instalar y construir ocurren en una VM destruida al terminar la tarea. Un implante persistente no tiene nada persistente en lo que vivir.
Inyección detectada, no solo contenida
Un clasificador en el dispositivo analiza lo que el agente lee — READMEs, comentarios de código, páginas descargadas, salida de herramientas — y los archivos de reglas tipo CLAUDE.md en los que confía, en busca de instrucciones que intenten dirigirlo. El intento se marca o se bloquea antes de que el modelo actúe, no simplemente se aísla después.
No confiable por defecto
Los repos nuevos reciben automáticamente el perfil bloqueado — descargas contenidas, secretos por proxy, salida restringida — así que “ejecutar el agente en este proyecto externo” es seguro antes de que nadie lo evalúe.
En la práctica
Qué ocurre cuando el paquete es hostil
Un ingeniero pide al agente que evalúe una librería de código abierto que sugería un ticket. El agente clona el repo en una VM de Bromure nueva y ejecuta `npm install`. Sin que nadie lo sepa, una dependencia transitiva incluye un script postinstall que lee variables de entorno y las envía por POST al endpoint de un atacante.
Dentro de la VM, el script se ejecuta — y no encuentra nada que valga la pena llevarse. No hay credenciales reales en el entorno; Git y el registro se alcanzaron a través del proxy, que nunca expuso un token. El POST al dominio del atacante no está en la lista permitida de salida del perfil, así que se descarta y se registra. El registro de la sesión muestra la lectura del entorno, la conexión bloqueada y el destino.
El ingeniero lee el informe, marca el paquete y cierra la sesión. La VM — y el implante, los archivos modificados, el payload en caché — se destruye. El portátil nunca ejecutó una línea del código hostil, y lo único que el atacante aprendió es que la puerta estaba cerrada.
Arquitectura e integración
Cómo está construido realmente
Aquí termina el marketing. Lo que sigue es el sustrato técnico sobre el que se asienta cada despliegue de Bromure — el mismo, tanto si protege una plantilla BYOD como si segrega niveles de clasificación dentro de un organismo regulado.
Aislamiento impuesto por el hipervisor
Cada perfil se ejecuta en su propia VM Linux ligera sobre Virtualization.framework de Apple — un kernel, un sistema de archivos y una pila de red separados del host. La imagen base es una compilación Alpine firmada y reproducible, clonada vía copia en escritura de APFS en el inicio de sesión (coste de disco prácticamente nulo). El host no puede leer la memoria de la VM; la VM no puede leer el portapapeles, el sistema de archivos ni los adaptadores de red del host salvo que la política del perfil lo permita explícitamente.
Identidad: SSO para usuarios, mTLS para dispositivos
El enrolamiento y el inicio de sesión se controlan con dos factores que su organización ya opera. OIDC / SAML contra Google Workspace, Okta, Microsoft Entra o Authentik identifica al usuario. Un certificado cliente mTLS por dispositivo, emitido desde su PKI y vinculado a la instalación, identifica la máquina. Revoque cualquiera y la siguiente sesión no podrá iniciarse — sin agente que manipular, sin política local que sortear.
Profile-as-code
El perfil de trabajo — lista permitida de SaaS, postura de descargas / portapapeles / capturas, configuración de VPN, disposición de teclado, CAs raíz, reglas de salida de red — es un artefacto declarativo firmado. Versiónelo en Git. Distribúyalo mediante su MDM o el endpoint de configuración de Bromure. Los perfiles manipulados fallan la verificación de firma y la sesión se niega a iniciarse. Lo que se ejecuta en la máquina del usuario es bit a bit lo que usted ha escrito.
Plano de red por perfil
Cada perfil lleva su propia NIC virtual. Elija NAT a través del host, bridge a una interfaz física o túnel vía WireGuard, IKEv2 / IPsec o Cloudflare WARP — todos terminados dentro de la VM, invisibles al host. Añada sobreescrituras de DNS, listas blancas de puertos de salida, aislamiento de LAN y un proxy HTTP. La segmentación la impone el hipervisor, no una pegatina en el firewall.
Pipeline de auditoría
Cada petición — marca de tiempo, verbo, URL, estado, usuario, perfil, dispositivo — se captura fuera de la VM en un flujo JSON Lines resistente a manipulación y se entrega al sink de logs que usted ya alimenta (SIEM, data lake, archivo de retención). Grabación de sesión opcional, solo cabeceras o de cuerpo completo, para tráfico sospechoso. Esquema estable, campos documentados, sin dependencia de proveedor en el formato.
Efímero por defecto, persistente por opt-in
Cierre la ventana y la VM se destruye. Tokens, cookies, caché, descargas y cualquier malware que haya aterrizado durante la sesión se van con ella. Los perfiles que necesitan estado — un conjunto de favoritos, una sesión guardada, un SaaS con sesión iniciada — pueden activar un disco persistente cifrado con LUKS y clave vinculada al Keychain de macOS. La clave nunca abandona el dispositivo del usuario.
Preguntas frecuentes
¿No hace ya esto un contenedor o un runner de CI nuevo?
+
Los contenedores comparten el kernel del host y se escapan de forma rutinaria; los runners de CI a menudo guardan las mismísimas credenciales de despliegue que un atacante quiere. Bromure usa VMs aisladas por hardware con su propio kernel y mantiene los secretos reales totalmente fuera de la VM tras un proxy — así que incluso una fuga a nivel de kernel no encuentra nada que robar.
¿Cómo publica el agente código o instala paquetes privados sin secretos?
+
A través del proxy de credenciales. Se autentica a su host de Git y a los registros privados en nombre de la VM, inyectando acceso acotado y de corta duración en la capa de red. El agente obtiene Git y npm funcionales; nunca obtiene una credencial que pudiera exfiltrar.
¿Qué impide que una inyección de prompt en un README escale?
+
Dos capas. Primero, la detección en el dispositivo de Bromure analiza el contenido que el agente lee — READMEs, comentarios, páginas descargadas, salida de herramientas — y los archivos de reglas tipo CLAUDE.md en los que confía, y marca o bloquea las instrucciones inyectadas antes de que el modelo actúe. Y aunque alguna se cuele, se ejecuta dentro de la VM — sin credenciales reales, con salida limitada a una lista de permitidos, sin alcance al host — de modo que el peor caso es cómputo desperdiciado en un sandbox que está a punto de eliminarse, y todo ello queda registrado.
¿Podemos igualmente obtener los artefactos de build que queríamos?
+
Sí. Las salidas legítimas se promueven fuera de la VM por la misma ruta controlada que cualquier descarga — opcionalmente con control de VirusTotal — así que conserva el resultado sin conservar el riesgo.
Ejecute el repo no confiable. Conserve sus claves.
Dé a los agentes un entorno de build donde el código hostil no encuentra nada y no deja nada atrás.