---
title: "Guía de Seguridad de OpenClaw: CVE-2026-25253, Skills Maliciosos y Más de 40 Correcciones"
description: "Una guía práctica de hardening de seguridad para OpenClaw que cubre CVE-2026-25253 (el ataque a la cadena de suministro de ClawHub), las más de 40 correcciones de vulnerabilidades incluidas en versiones recientes, los fundamentos del modelo de confianza y los procedimientos de bloqueo paso a paso."
date: 2026-02-24
categories: ["AI"]
tags: ["ai-tools","openclaw","security"]
---

import Notice from "@components/widgets/Notice.astro";
import ListCheck from "@components/widgets/ListCheck.astro";
import Accordion from "@components/widgets/Accordion.astro";
import Tabs from "@components/widgets/Tabs.astro";
import Tab from "@components/widgets/Tab.astro";
import Button from "@components/widgets/Button.astro";

OpenClaw funciona 24/7 en tu servidor con acceso completo al shell, claves API en su configuración y la capacidad de instalar y ejecutar skills desde un marketplace comunitario. La seguridad no es algo que puedas dejar para después. En febrero de 2026, investigadores descubrieron que el 12% de los skills en ClawHub estaban infectados con malware. El CHANGELOG del proyecto lista más de 40 correcciones de seguridad en las versiones recientes. Si estás usando OpenClaw, deberías conocer ambos problemas.

He revisado el CVE, las vulnerabilidades parcheadas, el modelo de confianza y las opciones de hardening. Esto es lo que realmente importa.

<Notice type="error" title="Acción Requerida Si Instalaste Skills de ClawHub">
Si instalaste algún skill de ClawHub (openclawdir.com) antes de mediados de febrero de 2026, ejecuta `openclaw security audit --deep` inmediatamente y revisa los indicadores de skills maliciosos que se listan a continuación. El ataque a la cadena de suministro afectó a 341 de los 2,857 skills auditados (tasa de infección del 12%).
</Notice>

## CVE-2026-25253: El Ataque a la Cadena de Suministro de ClawHub

El 13 de febrero de 2026, investigadores de seguridad reportaron ([GitHub issue #16052](https://github.com/openclaw/openclaw/issues/16052)) que 341 skills en ClawHub, el marketplace comunitario de skills, fueron comprometidos en un ataque coordinado a la cadena de suministro. El CVE recibió una puntuación CVSS de 8.8 (ALTO).

### Cómo Funcionó el Ataque

Los skills maliciosos parecían herramientas normales. El ejemplo más documentado, `deeps-agnw6h`, se hacía pasar por una herramienta de investigación "Deep-Agent/Deep-Search". Los skills infectados contenían hasta tres vectores de ataque:

**1. Dropper para macOS (Shell Codificado en Base64)**

Un payload en base64 se decodificaba en un comando curl que descargaba y ejecutaba código arbitrario desde un servidor controlado por el atacante en `91.92.242.30` (rango de hosting búlgaro, vinculado a infraestructura de robo de información).

**2. Instalador Falso para Windows**

Un repositorio de GitHub (`toolitletolate/openclaw_windriver`) alojaba un instalador MSI malicioso disfrazado de paquete de drivers.

**3. Backdoor MCP**

Un endpoint oculto de servidor MCP enrutado a través de tunneling `bore.pub` hacia la infraestructura del atacante, dando acceso remoto a cualquier máquina que ejecutara el skill infectado.

### Indicadores de Compromiso

Si sospechas que tu instancia pudo verse afectada, busca lo siguiente:

| Tipo | Valor | Notas |
|------|-------|-------|
| **Dirección IP** | `91.92.242.30` | Servidor de entrega del payload para macOS |
| **Ruta URL** | `http://91.92.242.30/6wioz8285kcbax6v` | Payload del dropper |
| **Dominio de túnel** | `bore.pub` | Tunneling reverso para backdoor MCP |
| **Puerto de túnel** | `44876` | Endpoint del backdoor MCP |
| **Repositorio GitHub** | `toolitletolate/openclaw_windriver` | Instalador falso para Windows |

Revisa tus logs de red en busca de conexiones a estas direcciones. Si encuentras coincidencias, asume que hubo compromiso y rota todas las claves API y credenciales almacenadas en tu configuración de OpenClaw.

### Qué Hacer Ahora Mismo

<ListCheck>
<ul>
<li>Actualiza OpenClaw a la última versión (`npm update -g openclaw`)</li>
<li>Ejecuta `openclaw security audit --deep` y revisa cada hallazgo</li>
<li>Verifica los skills instalados: `openclaw skills list` — elimina cualquier cosa que no reconozcas</li>
<li>Busca en tus logs de red `91.92.242.30` y `bore.pub`</li>
<li>Si hubo compromiso: rota todas las claves API, tokens de gateway y credenciales de canales</li>
<li>Revisa las conexiones abiertas: `ss -tlnp | grep openclaw` en Linux para verificar listeners inesperados</li>
</ul>
</ListCheck>

---

## El Hook soul-evil: Un Riesgo Incorporado

Independientemente del ataque a ClawHub, investigadores señalaron otro problema en el [issue #8776](https://github.com/openclaw/openclaw/issues/8776): OpenClaw venía con un hook incluido llamado `soul-evil` que podía intercambiar silenciosamente el prompt de sistema principal del agente (`SOUL.md`) por un archivo alternativo (`SOUL_EVIL.md`). Deshabilitado por defecto, pero el código estaba ahí en cada instalación.

Lo que lo hacía peligroso: un atacante con acceso a inyección de prompts podía encadenar la herramienta `write` para crear `SOUL_EVIL.md` y luego usar `config.patch` para habilitar el hook. El agente entonces funcionaría bajo instrucciones controladas por el atacante sin ninguna notificación. Peor aún cuando se combinaba con CVE-2026-25253, ya que un token de gateway exfiltrado podía habilitar este hook de forma remota.

El problema se cerró en la versión 2026.2.1. Verifica que estás ejecutando al menos esa versión:

```bash
openclaw --version
```

---

## Más de 40 Correcciones de Seguridad en Versiones Recientes

Conté más de 40 correcciones de seguridad en el CHANGELOG de OpenClaw a lo largo de las versiones 2026.2.x. Esto es lo que se parcheó, agrupado por categoría.

### Bypasses de Aprobación de Ejecución (7 Correcciones)

El sistema de aprobación de ejecución, la capa que pregunta "¿debería OpenClaw ejecutar este comando?", tenía múltiples rutas de bypass:

| Corrección | Qué Estaba Mal |
|------------|----------------|
| Replay entre nodos | Las solicitudes `system.run` aprobadas podían replicarse entre diferentes nodos |
| Aprobaciones huérfanas | El registro de aprobación en dos fases tenía una condición de carrera que permitía a las aprobaciones saltarse el paso de espera |
| Bypass `env -S` | La interpretación incorrecta del wrapper `env --split-string` permitía a los comandos evadir las verificaciones de la allowlist |
| Applets `busybox`/`toybox` | Los binarios multiplexores no eran reconocidos en el análisis de wrappers, permitiendo bypasses de allow-always |
| Colisión de rutas en `autoAllowSkills` | Las colisiones de basename en rutas absolutas podían satisfacer las verificaciones de auto-allow de skills |
| Brechas en la denylist de flags safe-bin | Las abreviaciones desconocidas de opciones largas GNU y los flags de `sort` dependientes del sistema de archivos no estaban bloqueados |
| Detección de comandos ofuscados | Los comandos ofuscados no se verificaban antes de las decisiones de la exec allowlist |

### Escapes de Sandbox y Path Traversal (4 Correcciones)

| Corrección | Qué Estaba Mal |
|------------|----------------|
| Escape de workspace en `apply_patch` | Las rutas montadas en sandbox como `/agent` permitían escrituras/eliminaciones fuera del límite del workspace |
| Path traversal en herramienta de imagen | `tools.fs.workspaceOnly` no se aplicaba para la resolución de rutas de `image` en sandbox |
| Fallback de shell en env | El fallback de ruta de shell con prefijo de confianza permitía shells no confiables; ahora solo se confía en las entradas de `/etc/shells` |
| Path traversal en config | Los segmentos de claves prototype y el traversal de propiedades heredadas no se rechazaban en las rutas de `config get/set/unset` |

### XSS e Inyección (5 Correcciones)

| Corrección | Qué Estaba Mal |
|------------|----------------|
| Inyección HTML en exportación de sesión | Los tokens de markdown HTML sin procesar en el visor de sesión exportado no estaban escapados |
| Inyección de data-URL en imágenes exportadas | Los campos MIME/base64 de imágenes en el HTML exportado no estaban validados |
| XSS en galería HTML de skills | El skill `openai-image-gen` no escapaba los valores controlados por el usuario en el HTML generado |
| Escape de symlinks en empaquetado de skills | `skill-creator` no omitía los symlinks ni rechazaba las rutas que escapaban de la raíz del skill |
| Exfiltración por deep link en iOS | Las solicitudes `openclaw://agent` se reenviaban al gateway sin confirmación local |

### Prototype Pollution y Seguridad de Configuración (3 Correcciones)

| Corrección | Qué Estaba Mal |
|------------|----------------|
| Normalización de Account-ID | Las claves prototype reservadas no estaban bloqueadas en la normalización de account-id |
| Mutaciones en escritura de config | `unsetPaths` podía mutar los objetos proporcionados por el llamador |
| Filtración de credenciales en CLI config | La salida de `openclaw config get` no estaba redactada antes de imprimirse |

### Control de Canales y Acceso (5 Correcciones)

| Corrección | Qué Estaba Mal |
|------------|----------------|
| Suplantación de remitente de comandos | `commands.allowFrom` coincidía con identidades `From` con forma de conversación (canales, grupos, hilos) |
| Coincidencia de nombres mutables | `allowFrom` coincidía con nombres/tags/emails mutables en lugar de IDs estables |
| Inconsistencia en política de coincidencia de nombres | Las verificaciones de `dangerouslyAllowNameMatching` variaban entre el core y los canales de extensión |
| Alcance de auto-aprobación ACP | Los nombres de herramientas desconocidos y las lecturas de archivos fuera de alcance se auto-aprobaban |
| Bypass de `selfChatMode` | El control de acceso de entrada de WhatsApp no respetaba la configuración de `selfChatMode` |

### SSRF y Red (2 Correcciones)

| Corrección | Qué Estaba Mal |
|------------|----------------|
| SSRF en media de Telegram | El rango de benchmark RFC2544 (`198.18.0.0/15`) no estaba bloqueado por defecto para descargas de media |
| Política SSRF del navegador | El acceso a red privada estaba permitido por defecto sin configuración explícita |

### Voz, Webhooks y Otros (4+ Correcciones)

| Corrección | Qué Estaba Mal |
|------------|----------------|
| Replay de webhook de Twilio | Los IDs de eventos del proveedor no se preservaban a través de la normalización, permitiendo ataques de replay |
| Filtración de credenciales OTEL | Las claves API y tokens se incluían en los diagnósticos de exportación OTLP |
| Filtración de razonamiento/thinking | Los bloques internos de razonamiento se filtraban como respuestas visibles para el usuario en WhatsApp, Discord, Web |
| Filtración de credenciales en reset de sesión | Los mensajes de confirmación de `/new` y `/reset` exponían prefijos de claves API |

<Notice type="warning" title="Esta Lista No Está Completa">
Estas son las correcciones de seguridad documentadas en el CHANGELOG para las versiones 2026.2.22 y 2026.2.23 más parches no publicados. Las versiones anteriores contienen correcciones adicionales. Siempre ejecuta la última versión.
</Notice>

---

## Entendiendo el Modelo de Confianza de OpenClaw

Antes de cambiar cualquier configuración, conoce lo que OpenClaw considera dentro y fuera del alcance de seguridad. Malinterpretar esto lleva a falsa confianza o esfuerzo desperdiciado.

### Principios fundamentales

<Tabs>
<Tab name="Qué Es De Confianza">

- **Los llamadores autenticados del gateway** se tratan como operadores de confianza
- **Los identificadores de sesión** (sessionKey, IDs de sesión, etiquetas) son controles de enrutamiento, no límites de autorización
- **Los plugins/extensiones** se ejecutan en proceso con privilegios completos del SO
- **Los archivos de memoria del workspace** (MEMORY.md, memory/*.md) se tratan como estado local de operador de confianza
- **Las aprobaciones de ejecución** son guardarraíles del operador, no un límite de autorización multi-tenant

</Tab>
<Tab name="Qué NO Es un Límite">

- Un gateway NO es un límite de usuarios adversarios multi-tenant
- Si un operador puede ver datos de otro en el mismo gateway, eso es esperado
- Que la búsqueda de memoria devuelva contenido escrito por otro proceso es comportamiento esperado
- Que los plugins tengan los mismos privilegios del SO que el proceso de OpenClaw es por diseño

</Tab>
<Tab name="Configuración Recomendada">

- **Un usuario por máquina/host** (o VPS)
- **Un gateway por usuario** con uno o más agentes dentro
- Para múltiples usuarios: usa instancias VPS separadas o límites de usuario del SO
- Para acceso remoto: túnel SSH o Tailscale, no exposición a internet público

</Tab>
</Tabs>

### Qué significa esto en la práctica

Si alguien comparte un gateway contigo, puede ver tus conversaciones, tus claves API y tus archivos de memoria. Eso es por diseño. El límite de seguridad de OpenClaw está a nivel de máquina/usuario del SO, no a nivel de gateway. Los dominios de confianza separados necesitan instancias separadas.

---

## Guía de hardening

En orden de importancia, esto es lo que debes configurar.

### 1. Mantén OpenClaw Actualizado

La mayoría de las más de 40 correcciones mencionadas se incluyen en la versión de npm. Verifica tu versión y actualiza:

```bash
openclaw --version
npm update -g openclaw
```

### 2. Ejecuta la Auditoría de Seguridad Integrada

OpenClaw tiene un escáner de seguridad integrado:

```bash
openclaw security audit --deep
```

Verifica patrones de configuración riesgosos, allowlists mutables, credenciales expuestas y problemas conocidos. Agrega `--fix` para auto-remediar lo que pueda:

```bash
openclaw security audit --deep --fix
```

### 3. Vincula el Gateway a Loopback

La superficie HTTP del gateway (Control UI, canvas, endpoints de API) no está endurecida para internet público. Mantenla en localhost:

```json
{
  "gateway": {
    "bind": "loopback"
  }
}
```

Para acceso remoto, usa túnel SSH o Tailscale:

```bash
# SSH tunnel
ssh -L 3000:localhost:3000 root@your-server

# Or Tailscale serve
tailscale serve --https=443 http://localhost:3000
```

### 4. Habilita el Modo Sandbox

Por defecto, `agents.defaults.sandbox.mode` está en `off`. Actívalo:

```json
{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "on"
      }
    }
  }
}
```

### 5. Restringe el Acceso al Sistema de Archivos

Mantén las herramientas dentro del directorio del workspace:

```json
{
  "tools": {
    "fs": {
      "workspaceOnly": true
    },
    "exec": {
      "applyPatch": {
        "workspaceOnly": true
      }
    }
  }
}
```

### 6. Cambia las Allowlists de Canales a IDs Estables

Después del cambio importante en la versión no publicada, la coincidencia de `allowFrom` es solo por ID por defecto. Si estás en una versión anterior, migra tus allowlists de nombres a IDs:

```json
{
  "channels": {
    "telegram": {
      "allowFrom": ["123456789"]
    }
  }
}
```

Los nombres mutables (nombres de usuario, nombres para mostrar, direcciones de email) en las allowlists son peligrosos. Cualquiera puede cambiar su nombre para mostrar en cualquier momento. Usa IDs numéricos estables.

### 7. Establece Orígenes Explícitos para la Control UI

Para despliegues fuera de loopback, especifica los orígenes permitidos:

```json
{
  "gateway": {
    "controlUi": {
      "allowedOrigins": ["https://your-tailscale-domain.ts.net"]
    }
  }
}
```

Sin esto, el gateway se negará a iniciar (comportamiento fail-closed).

### 8. Revisa los Skills Antes de Instalarlos

Después de CVE-2026-25253, trata cada skill de ClawHub como potencialmente hostil hasta verificarlo:

<ListCheck>
<ul>
<li>Lee el código fuente del skill antes de instalarlo</li>
<li>Busca payloads codificados en base64 o comandos ofuscados</li>
<li>Busca conexiones de red salientes a hosts desconocidos</li>
<li>Verifica la identidad e historial del autor del skill</li>
<li>Prefiere skills con uso significativo de la comunidad y reseñas</li>
<li>Considera ejecutar los skills en un entorno sandboxed primero</li>
</ul>
</ListCheck>

### 9. Hardening con Docker

Si ejecutas OpenClaw en Docker, usa configuraciones restrictivas:

```bash
docker run --read-only --cap-drop=ALL \
  -v openclaw-data:/app/data \
  openclaw/openclaw:latest
```

La imagen oficial se ejecuta como un usuario `node` sin privilegios de root. `--read-only` previene escrituras en el sistema de archivos fuera de los volúmenes montados, y `--cap-drop=ALL` elimina las capabilities de Linux.

### 10. Versión de Node.js

OpenClaw requiere Node.js 22.12.0 o posterior. Las versiones anteriores tienen vulnerabilidades conocidas:

```bash
node --version  # Should be v22.12.0 or later
```

---

## Lista de Verificación de Auditoría de Seguridad

Usa esto como una lista de verificación periódica:

| Verificación | Comando / Acción | Esperado |
|--------------|-----------------|----------|
| Versión de OpenClaw | `openclaw --version` | Última versión |
| Versión de Node.js | `node --version` | v22.12.0+ |
| Auditoría de seguridad | `openclaw security audit --deep` | Sin hallazgos críticos |
| Vinculación del gateway | Verificar config `gateway.bind` | `loopback` |
| Modo sandbox | Verificar config `agents.defaults.sandbox.mode` | `on` |
| FS solo workspace | Verificar config `tools.fs.workspaceOnly` | `true` |
| Allowlists de canales | Verificar entradas basadas en nombres | Solo IDs |
| Skills instalados | `openclaw skills list` | Solo skills reconocidos |
| Conexiones de red | `ss -tlnp \| grep openclaw` | Solo listeners esperados |
| Rotación de claves API | Revisar antigüedad de las claves | Rotadas en los últimos 90 días |

---

## Guías relacionadas

El resto del stack de OpenClaw:

- La [Guía de Configuración de OpenClaw](/es/guia-configuracion-openclaw/) cubre la instalación completa en Hetzner VPS o Mac Mini, incluyendo la configuración del token de gateway
- [Los Mejores Modelos Open Source para OpenClaw](/es/mejores-modelos-opensource-openclaw/) cubre la configuración de GLM-5 y MiniMax M2.5, comparación de costos, y por qué enrutar suscripciones a través de OpenClaw puede banearte
- [Búsqueda DuckDuckGo para OpenClaw](/es/busqueda-duckduckgo-openclaw/) explica cómo agregar búsqueda web gratuita sin claves API
- [Alternativas a OpenClaw](/es/alternativas-openclaw/) cubre NanoClaw, IronClaw, NullClaw y otros con sus propios enfoques de seguridad
- [Los Mejores Dashboards de OpenClaw](/es/mejores-dashboards-openclaw/) clasifica nueve dashboards, incluyendo el OpenClaw Dashboard con hardening de seguridad y TOTP MFA

---

<Accordion label="Preguntas Frecuentes" group="faq" expanded="true">

**¿Fueron robados mis datos en el ataque CVE-2026-25253?**

Si instalaste uno de los 341 skills infectados, el malware tuvo acceso a todo lo que OpenClaw podía acceder — tus claves API, historial de conversaciones, archivos en el workspace y potencialmente toda la máquina si el modo sandbox estaba desactivado. Asume compromiso total y rota todas las credenciales.

**¿Cómo sé si instalé un skill malicioso?**

Ejecuta `openclaw skills list` y verifica cada skill contra los resultados de la auditoría de ClawHub. Busca en tus logs del sistema y tráfico de red las direcciones IoC listadas arriba (`91.92.242.30`, `bore.pub:44876`). El comando `openclaw security audit --deep` también verifica patrones maliciosos conocidos.

**¿Es seguro ejecutar OpenClaw en internet público?**

No. La superficie HTTP del gateway no está endurecida para exposición pública. Vincúlalo a loopback y usa túnel SSH o Tailscale para acceso remoto. Múltiples entradas del CHANGELOG señalan correcciones de problemas que solo importan con exposición de red.

**¿Debería habilitar `dangerouslyAllowNameMatching`?**

No, a menos que no tengas otra opción. Las allowlists basadas en nombres son vulnerables porque los usuarios pueden cambiar sus nombres para mostrar, nombres de usuario o direcciones de email en cualquier momento. Migra a IDs estables.

**¿Cuál es la diferencia entre `sandbox.mode` y `workspaceOnly`?**

`sandbox.mode` controla si el agente se ejecuta en un contenedor aislado (Docker/Apple Container). `workspaceOnly` restringe las operaciones de archivos al directorio del workspace incluso sin un runtime de sandbox. Ambos deberían estar habilitados para máxima protección. Se complementan mutuamente.

**¿Con qué frecuencia debería ejecutar `openclaw security audit`?**

Después de cada actualización de OpenClaw, después de instalar cualquier skill nuevo, y al menos semanalmente para instancias en uso activo. Agrega `--deep` para el escaneo exhaustivo que verifica exposición de red y patrones de credenciales.

**¿El modelo de confianza significa que OpenClaw es inseguro?**

No, significa que el límite de seguridad está a nivel de máquina/usuario del SO en lugar del nivel de gateway. Esto es común para herramientas auto-alojadas. La clave es entender que todos los que tienen acceso al gateway tienen privilegios completos de operador — planifica tu despliegue en consecuencia.

**¿Puede la inyección de prompts comprometer mi instancia de OpenClaw?**

La inyección de prompts está listada como fuera del alcance en el modelo de seguridad de OpenClaw cuando no viola un límite. Pero el hook `soul-evil` demostró cómo la inyección de prompts puede encadenarse con otras funcionalidades para lograr un compromiso persistente. Mantén la superficie de ataque pequeña: sandbox activado, sistema de archivos solo workspace, skills auditados.

</Accordion>

Las versiones 2026.2.x corrigieron mucho. Pero el ataque a ClawHub demostró que el ecosistema de skills es una amenaza real, y muchas de las vulnerabilidades parcheadas habían estado ahí desde las primeras versiones. Espero que lleguen más correcciones de seguridad a lo largo de 2026.

Mantén OpenClaw actualizado y ejecuta `openclaw security audit --deep` regularmente. Esa es la acción de mayor valor que puedes hacer. El resto de esta guía es defensa en profundidad sobre esa base.

Para todo lo demás: [guía de configuración](/es/guia-configuracion-openclaw/), [recomendaciones de modelos](/es/mejores-modelos-opensource-openclaw/), [búsqueda web gratuita](/es/busqueda-duckduckgo-openclaw/), [dashboards](/es/mejores-dashboards-openclaw/), [modelos locales con Ollama](/es/openclaw-ollama-modelos-locales/) y [plataformas alternativas](/es/alternativas-openclaw/).