Vulnerabilidade "ClawJacked" no OpenClaw: Como Proteger a Tua Instância Self-Hosted

Em Maio de 2026, a comunidade de segurança descobriu a "ClawJacked" — uma vulnerabilidade classificada como High que permite o sequestro remoto de instâncias locais do OpenClaw através do WebSocket em localhost. A falha recebeu cobertura no The Hacker News, catapultando a discussão para fora do nicho técnico habitual. A equipa de desenvolvimento respondeu com patches nas versões 2026.2.25 e 2026.3.2, mas milhares de instâncias self-hosted permanecem vulneráveis. Este guia explica o vector de ataque, as correcções disponíveis e como blindar definitivamente a tua instalação.

⚠️ Acção Imediata: Se operas uma instância self-hosted de OpenClaw, actualiza imediatamente para a versão 2026.3.2 ou superior. Verifica se o WebSocket está configurado com autenticação por token e se a binding está restringida a 127.0.0.1 com validação de Origin. Consulta o Guia de Segurança para instruções completas.

O Que É a Vulnerabilidade "ClawJacked"

A "ClawJacked" é uma falha de segurança no mecanismo de comunicação WebSocket que o OpenClaw utiliza para coordenar a interface local com o motor de execução do agente. Em instâncias self-hosted, este WebSocket escuta por defeito em ws://localhost:3100 — um endpoint que, por design, não requeria autenticação nas versões anteriores à 2026.2.25.

O nome "ClawJacked" — um trocadilho com "carjacking" — foi cunhado pelos investigadores que a descobriram, reflectindo a natureza do ataque: sequestrar o controlo total de uma instância OpenClaw activa sem que o utilizador perceba o que está a acontecer.

Classificação da Vulnerabilidade

Severidade: High
Vector: Network (Adjacent)
Complexidade: Low
Privilégios: None
Impacto: Confidentiality, Integrity, Availability
Versões afectadas: < 2026.2.25

O Vector de Ataque: Como Funciona o Sequestro

O ataque "ClawJacked" explora uma cadeia de fraquezas na implementação do WebSocket local do OpenClaw. O vector é particularmente perigoso porque não requer acesso físico à máquina — basta que a vítima visite uma página web maliciosa enquanto tem o OpenClaw a correr.

Passo a Passo do Ataque

1. Reconhecimento — O atacante embede JavaScript numa página web (ou anúncio) que tenta conectar ao ws://localhost:3100. Se a ligação for aceite, a instância OpenClaw está activa e vulnerável.
2. Ligação WebSocket — Como o endpoint não validava a Origin da ligação (falta de Origin checking), o browser permite a conexão cross-origin ao localhost sem restrições CORS (WebSockets não estão sujeitos a CORS).
3. Injecção de Comandos — Com a ligação estabelecida, o atacante envia mensagens ao agente como se fosse o utilizador legítimo. Pode executar ferramentas, ler ficheiros, aceder a credenciais armazenadas e exfiltrar dados.
4. Persistência — O atacante pode instalar skills maliciosas ou modificar configurações para manter acesso mesmo após o browser ser fechado, criando um backdoor no fluxo de automação.

O aspecto mais crítico é a invisibilidade do ataque. O utilizador continua a usar o OpenClaw normalmente enquanto o atacante opera em paralelo através da mesma ligação WebSocket. Não há indicação visual de comprometimento na interface.

Impacto Real para Administradores Self-Hosted

A discussão no r/sysadmin do Reddit expôs cenários reais de impacto que vão muito além do theoretical exploit:

Exfiltração de credenciais — Instâncias com integrações configuradas (APIs, SSH keys, tokens de serviços) expõem todas as credenciais armazenadas ao atacante.
Execução remota de código — Em instâncias com ferramentas de shell activas, o atacante ganha RCE completo na máquina host.
Movimento lateral — Em redes corporativas, uma instância comprometida serve de pivot para atacar outros sistemas internos.
Imagens Docker expostas — Deployments em Docker com portas mapeadas para 0.0.0.0:3100 (em vez de 127.0.0.1:3100) amplificam o problema exponencialmente, expondo o WebSocket à rede inteira.

Patches: Diferenças Entre 2026.2.25 e 2026.3.2

A equipa de desenvolvimento do OpenClaw respondeu em duas fases, com camadas de protecção progressivamente mais robustas.

Medida de Segurança v2026.2.25 v2026.3.2
Validação de Origin Sim (allowlist) Sim (strict mode)
Autenticação por token Opcional Obrigatória por defeito
Binding restringido 127.0.0.1 por defeito 127.0.0.1 forçado (override requer flag)
Rate limiting WebSocket Nao Sim (10 msg/s por sessão)
Logging de conexões Básico Detalhado (IP, Origin, User-Agent)
Sessões simultâneas Ilimitadas Máximo 2 (configurável)
Plugin sandbox Nao Sim (isolamento por namespace)

Recomendação: A versão 2026.2.25 corrige o vector principal, mas a 2026.3.2 adiciona defesas em profundidade. Se possível, actualiza directamente para a 2026.3.2 — a diferença em termos de superfície de ataque residual é significativa.

Guia Prático: Proteger a Tua Instância Self-Hosted

Independentemente da versão instalada, estas medidas de hardening reduzem drasticamente a superfície de ataque. Aplica-as por ordem de prioridade.

1. Actualizar para a Versão Corrigida

openclaw update --channel stable

# Verifica a versão instalada:
openclaw --version
# Output esperado: openclaw 2026.3.2 ou superior

2. Configurar Autenticação do WebSocket

Na versão 2026.3.2, a autenticação por token é obrigatória. Se actualizaste a partir de uma versão anterior, verifica que o token foi gerado:

# Gerar novo token de WebSocket:
openclaw config set ws.auth.token $(openssl rand -hex 32)

# Verificar configuração activa:
openclaw config get ws.auth

3. Restringir o Binding do WebSocket

Confirma que o WebSocket está vinculado exclusivamente a 127.0.0.1 e não a 0.0.0.0:

# No ficheiro de configuração (~/.openclaw/config.yaml):
websocket:
  host: "127.0.0.1"
  port: 3100
  origin_allowlist:
    - "http://localhost:*"
    - "http://127.0.0.1:*"

4. Hardening Docker

Para deployments em Docker — o cenário mais discutido no r/sysadmin — aplica estas práticas:

Binding de portas explícito

docker run -p 127.0.0.1:3100:3100 openclaw/agent:2026.3.2

Nunca usar -p 3100:3100 sem especificar o bind address — expõe o WebSocket a todas as interfaces de rede.

Rede isolada

docker network create --internal openclaw-net

Usar uma rede Docker interna impede que o contentor comunique directamente com a internet sem proxy explícito.

Read-only filesystem

docker run --read-only --tmpfs /tmp openclaw/agent:2026.3.2

Filesystem read-only impede a instalação de backdoors persistentes no contentor em caso de comprometimento.

Limitar capabilities

docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE openclaw/agent:2026.3.2

Drop ALL capabilities e adiciona apenas as estritamente necessárias. Reduz o impacto de um container escape.

5. Segurança de Plugins e Skills

A versão 2026.3.2 introduziu sandbox de plugins por namespace, mas a configuração defensiva requer passos manuais adicionais:

# Activar verificação de integridade de skills:
openclaw config set plugins.verify_signatures true

# Restringir permissões de skills a read-only por defeito:
openclaw config set plugins.default_permissions "read"

# Listar skills com permissões elevadas:
openclaw skills list --filter="permissions:write,execute"

6. Monitorização e Alertas

Configura logging detalhado para detectar tentativas de exploração:

# Activar logging verbose para WebSocket:
openclaw config set logging.websocket.level "debug"

# Alertas por conexões rejeitadas (Origin inválida):
openclaw config set alerts.ws_rejected true

Lições para o Ecossistema de Agentes Autónomos

A "ClawJacked" não é um caso isolado — é sintomática de um problema estrutural na forma como agentes de IA self-hosted gerem comunicação local. As lições estendem-se a todo o ecossistema:

Localhost não significa seguro

A assunção de que serviços em localhost são inacessíveis remotamente é perigosa. Browsers modernos permitem JavaScript cross-origin a conectar via WebSocket a qualquer porta local — sem CORS a bloquear.

Zero-trust para comunicação inter-processo

Mesmo comunicação entre componentes locais deve ser autenticada e encriptada. Tokens por sessão, validação de Origin e limitação de sessões simultâneas devem ser o padrão, não a excepção.

Containers como fronteira de segurança

Docker não é apenas conveniência de deployment — é uma camada de defesa. Mas apenas se configurado correctamente: bind addresses explícitos, capabilities mínimas, filesystem read-only e network isolation.

Plugins como superfície de ataque

Qualquer sistema de plugins sem verificação de assinatura e sandboxing é um vector de persistência para atacantes. O ClawHub introduziu verificação em Março de 2026 — mas skills instaladas antes dessa data podem conter código não auditado.

Timeline da Resposta

Maio 2026 — Investigadores reportam a vulnerabilidade ao programa de segurança do OpenClaw
21 Maio 2026 — The Hacker News publica cobertura da falha, amplificando a visibilidade
25 Maio 2026 — Lançamento da versão 2026.2.25 com patch inicial (Origin validation + auth opcional)
Maio-Junho 2026 — Discussão intensa no r/sysadmin sobre configurações Docker vulneráveis
2 Junho 2026 — Versão 2026.3.2 com hardening completo (auth obrigatória, rate limiting, plugin sandbox)
Últimas Notícias Ver Todas →