OpenClaw: Buenas Prácticas de Seguridad — Lecciones del Incidente del Troyano de 28K

OpenClaw: Buenas Prácticas de Seguridad — Lecciones del Incidente del Troyano de 28K — Un troyano que infectó 28.000 sistemas usó OpenClaw para exfiltrar claves y bases de código. Aquí está el modelo de amenazas honesto, los controles que de verdad importaron y cómo un gestor local-first hace que el siguiente sea aburrido.
29 abr 20268 min de lectura
Share with

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.

Radio de impacto del troyano de OpenClaw: extensión → claves → prompts del agente → gasto en API

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.

RiesgoMal valor por defectoControl aburrido que funciona
Exfiltración de clavesClaves en .env junto al códigoLlavero del SO local, rotación de corta duración
Agente en el portátil con acceso totalUn uid, un sistema de archivosAgente en su propia VPS, tokens con scope
Cadena de suministro de extensionesAuto-actualización, sin revisiónVersiones fijadas, lectura del diff, sin instalación automática
Gasto invisibleLa factura llega a fin de mesTope 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.

Agente en su propia VPS, clave permaneciendo en la máquina del operador

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 burn

Ese 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

  1. Saca las claves de .env hoy. Aunque no hagas nada más de esta lista, la próxima extensión filtrada no podrá exfiltrar una clave que no puede leer.
  2. 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.
  3. Audita tus extensiones instaladas. Cualquier cosa que no uses activamente, desinstálala. Cualquier cosa que uses, fíjala a un commit conocido y bueno.
  4. 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.
  5. 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

Autor

Office Claws Team

Construyendo el futuro de la gestión de agentes de IA en Office Claws. Compartiendo conocimientos sobre infraestructura, seguridad y experiencia del desarrollador.

Mantente al día

Recibe los últimos artículos sobre agentes de IA, infraestructura y novedades del producto directamente en tu bandeja de entrada.

Sin spam. Cancela tu suscripción en cualquier momento.