Lo que el incidente de 28K realmente mostró
El número «28K» que circuló por la comunidad OpenClaw en abril era el conteo de sistemas que un único paquete malicioso comprometió antes de que nadie lo notara. El troyano entró a través de una popular extensión de OpenClaw, recogió todas las claves API a su alcance y se incrustó silenciosamente en los prompts de los agentes que se ejecutaron durante el resto de la semana.
No entró porque OpenClaw sea «inseguro». Entró porque la mayoría de los despliegues de OpenClaw están configurados como suelen estarlo las herramientas de desarrollo: claves en variables de entorno, agentes corriendo en el portátil del desarrollador, extensiones instaladas por confianza y ningún registro de auditoría entre «el agente hizo algo» y «llegó la factura». Cada uno de esos valores por defecto está bien por sí solo. Apilados, forman exactamente el modelo de amenaza para el que se escribió el troyano.
Este post no es un post de funcionalidades. Office Claws no es un runtime de OpenClaw — somos un gestor de escritorio Codex-first, y la mayoría de los controles de abajo aplican igualmente a cualquiera de los dos agentes. Lo que queremos exponer es el modelo de amenazas que los usuarios de OpenClaw realmente afrontan después de este incidente, y las prácticas locales aburridas que convierten al siguiente en un no-evento.
El modelo de amenazas que los usuarios de OpenClaw realmente tienen
Tres cosas convierten a las plataformas de agentes en blancos más jugosos que una herramienta de desarrollo normal, y OpenClaw no es la excepción.
- Las claves valen dinero real. Una clave filtrada de OpenAI o Anthropic no es solo una credencial — es un cajero medido. Un atacante puede quemar 5.000 $ en una clave durante un fin de semana antes de que se disparen las alertas de facturación.
- Los agentes tienen manos. Un agente con acceso a shell puede leer tu base de código, hacer push a tus repositorios y ejecutar scripts como tú. Un troyano dentro del prompt o de la lista de herramientas del agente puede hacer lo mismo.
- La cadena de suministro es ancha. Cada extensión, servidor MCP o «pack comunitario» que instalas corre en la misma zona de confianza que el agente. Una configuración de OpenClaw con doce extensiones tiene doce posibles puntos de entrada.
Cualquier práctica que no aborde al menos una de esas tres es decoración.
| Riesgo | Mal valor por defecto | Control aburrido que funciona |
|---|---|---|
| Exfiltración de claves | Claves en .env junto al código | Llavero del SO local, rotación de corta duración |
| Agente en el portátil con acceso total | Un uid, un sistema de archivos | Agente en su propia VPS, tokens con scope |
| Cadena de suministro de extensiones | Auto-actualización, sin revisión | Versiones fijadas, lectura del diff, sin instalación automática |
| Gasto invisible | La factura llega a fin de mes | Tope de gasto por agente + monitorización diaria |
Cinco controles que de verdad mueven la aguja
1. Las claves se quedan en la máquina del operador
El control de mayor palanca después de este incidente es también el más antiguo: no envíes el secreto al lugar donde corre el código no confiable. En Office Claws, tus claves de proveedor viven en el almacén local de tu app de escritorio. Se pasan al agente por un túnel cifrado de Tailscale solo cuando el agente llama a un proveedor, y nunca se escriben en disco en la VPS. Si un troyano aterriza en la caja del agente, no encuentra la clave — porque la clave nunca estuvo allí.
Si te quedas en OpenClaw, el equivalente es sacar las claves de los archivos .env del proyecto y meterlas en el llavero del SO (Keychain en macOS, secret-tool en Linux, DPAPI en Windows) y leerlas al inicio de la sesión. Es molesto. También es la diferencia entre «comprometido» y «vagamente embarazoso».
2. El agente vive en otro sitio
Correr el agente en la misma máquina que tu árbol de fuentes significa que un único compromiso alcanza todo. Correrlo en una VPS — tu propia caja Contabo por unos pocos euros al mes — convierte la mayoría de los ataques en «el atacante rooteó una sola droplet efímera». Esa droplet no tiene claves SSH para tus otros repos, ni sesión de navegador en tu banco, ni acceso al Slack de tu equipo. La destruyes y la reaprovisionas; el radio es una máquina.
Ese es el modelo que enviamos. Office Claws self-hosted aprovisiona una droplet de Contabo desde un snapshot pre-horneado en menos de tres minutos; el agente corre allí, tu portátil le habla a través de Tailscale.
3. Fija cada extensión que instales
El troyano de 28K fue un ataque de cadena de suministro. Auto-actualizar extensiones de la comunidad es el equivalente OpenClaw de curl | bash. Fija versiones. Lee el diff antes de subir. Trata cualquier extensión que pida «todas las herramientas, todos los directorios» como tratarías a una extensión de navegador que pide leer todas las páginas — con una pausa larga y una alternativa más pequeña.
Dos reglas prácticas:
- Una extensión que necesita salida de red a un dominio del que nunca has oído hablar es un no.
- Una extensión cuyo historial de GitHub del mantenedor tiene tres commits es un no.
4. Pon un tope de gasto en el proveedor
Cada proveedor compatible tiene un tope de gasto por clave. Configura uno. El troyano de 28K fue rentable porque nadie se dio cuenta hasta que llegó la factura; el mismo troyano contra una clave con un tope de 50 $/día es una molestia, no un incidente. Office Claws muestra tu consumo de tokens por agente en la app de escritorio, pero la defensa autoritativa es el tope que pones en el lado de OpenAI o Anthropic. Nosotros no podemos imponerlo por ti, y tampoco querríamos.
5. Ten un registro de auditoría que no hayas escrito tú
Si tu único registro de «lo que hizo el agente» es el propio scrollback del agente, no tienes registro. Cada prompt y cada llamada a herramienta del agente debería aterrizar en algún sitio que tú controlas: el log del gateway en la VPS del agente, un stack Loki/Grafana que tú operas, o — en planes managed — el feed de actividad en la app de escritorio. El objetivo no es leerlo a diario. El objetivo es que después de un incidente, puedas responder «qué tocó esta clave» en minutos, no en semanas.
Cómo se ve esto en la práctica
Concretamente, un usuario de OpenClaw que se tomó el incidente en serio salió de abril con aproximadamente este stack:
laptop ── Tailscale ──► VPS (one per agent)
│ │
│ ├─ agent runtime
│ ├─ pinned extensions
│ └─ gateway log → operator-side
│
├─ keys in OS keychain (NOT in .env)
├─ provider spend cap set per key
└─ desktop app showing per-agent token burnEse es el mismo stack que Office Claws envía por defecto para los agentes Codex. Si migraste fuera de OpenClaw después del bloqueo de la suscripción, te llevaste la postura de seguridad como efecto secundario de la migración de coste. Si te quedaste en OpenClaw, la arquitectura de arriba sigue siendo alcanzable — simplemente depende de ti cablearla.
Recomendaciones
- Saca las claves de
.envhoy. Aunque no hagas nada más de esta lista, la próxima extensión filtrada no podrá exfiltrar una clave que no puede leer. - Configura topes de gasto antes de la próxima sesión de código. Cinco minutos en el panel del proveedor. El control con mayor ROI de esta página.
- Audita tus extensiones instaladas. Cualquier cosa que no uses activamente, desinstálala. Cualquier cosa que uses, fíjala a un commit conocido y bueno.
- Saca al agente del portátil. Ya sea OpenClaw en una caja self-hosted o Codex en Office Claws, el portátil es el lugar equivocado para un agente de larga duración con acceso a shell.
- Mantén un único log del lado del operador. No tiene por qué ser sofisticado. Tiene que existir antes del próximo incidente, no después.
El incidente de 28K no fue el último. Las plataformas de agentes ahora son lo bastante lucrativas como para que «cadena de suministro → clave → factura» sea un modelo de negocio, no una casualidad. Los controles de arriba no detienen eso. Hacen el radio de impacto lo suficientemente pequeño como para que el siguiente sea un ticket de viernes por la tarde y no una sala de guerra de fin de semana.
Lecturas relacionadas
- ¿Suscripción de OpenClaw bloqueada? La ruta de migración a Codex que mantiene tus agentes corriendo — la mitad de coste de la misma historia de migración
- AI Agent Security: cómo Office Claws mantiene tus claves seguras — el detalle arquitectónico detrás del manejo local-first de claves
- Self-Hosted vs Managed — elegir el plan que encaja con el modelo de amenazas de arriba, con precios aquí