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.
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
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
ws://localhost:3100. Se a ligação for aceite, a instância OpenClaw está activa e vulnerável.
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:
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:
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:
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:
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.
docker network create --internal openclaw-net
Usar uma rede Docker interna impede que o contentor comunique directamente com a internet sem proxy explícito.
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.
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:
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:
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:
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.
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.
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.
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.