gb/prompts/sec-bigpickle.md

5.7 KiB

Análise de Segurança - BigPickle/General Bots

Data: 2026-03-11 Escopo: botserver, botlib, bottest


1. Resumo Executivo

Categoria Status Severidade
Execução de Comandos ⚠️ PARCIAL ALTA
Rate Limiting IMPLEMENTADO -
CSRF Protection IMPLEMENTADO -
Security Headers IMPLEMENTADO -
Error Handling ⚠️ PARCIAL MÉDIA
SQL Injection IMPLEMENTADO -

2. Execução de Comandos (IMP-02)

2.1 SafeCommand - Bom

O projeto implementa SafeCommand em botserver/src/security/command_guard.rs:

  • Lista branca de comandos permitidos (ffmpeg, pdftotext, pandoc, etc.)
  • Bloqueio de comandos perigosos (wget, nc, netcat, dd, mkfs)
  • ~190 usos corretos no codebase

2.2 Command::new Direto - PROBLEMA

Encontrados 8 arquivos com Command::new direto (sem SafeCommand):

Arquivo Linha Comando Risco
core/bootstrap/bootstrap_utils.rs 39,53,76,99,112,126,133,161,176,211,231 pkill, pgrep, sh, curl, nc, bash ALTO
auto_task/container_session.rs 27,52,117 lxc MÉDIO
core/bootstrap/bootstrap_manager.rs 255 caddy MÉDIO
llm/local.rs 434,530 cmd_path (dinâmico) ALTO
botmodels/python_bridge.rs 198 python_path (config) MÉDIO
monitoring/real_time.rs 595 df BAIXO
core/package_manager/cli.rs 1136 psql MÉDIO

Recomendação: Migrar todos para SafeCommand ou AsyncCommand (para async).


3. Rate Limiting (IMP-07)

Implementado corretamente

  • Usa crate governor com algoritmo token bucket
  • Arquivos:
    • security/rate_limiter.rs - Rate limiter HTTP global
    • core/rate_limit.rs - Rate limiter combinado
    • llm/rate_limiter.rs - Rate limiter LLM
    • core/bot/channels/whatsapp_rate_limiter.rs - Rate limiter WhatsApp

Limites configurados

Tipo Limite Burst
Default 100 req/s 200
Strict 50 req/s 100
Relaxed 500 req/s 1000
API 100 req/s 150

Status: CONFORME


4. CSRF Protection (IMP-08)

Implementado corretamente

  • Arquivo: security/csrf.rs
  • Usa padrão Double-Submit Cookie
  • Configurações:
    • Token expiry: 60 minutos
    • Cookie secure: true
    • SameSite: Strict
    • Exempt paths: /api/health, /api/version
    • Exempt methods: GET, HEAD, OPTIONS

Status: CONFORME


5. Security Headers (IMP-09)

Implementado corretamente

  • Arquivo: security/headers.rs
Header Valor Padrão Valor Strict
Content-Security-Policy self + inline self apenas
X-Frame-Options DENY DENY
X-Content-Type-Options nosniff nosniff
Strict-Transport-Security 1 ano 2 anos + preload
Referrer-Policy strict-origin-when-cross-origin no-referrer
Permissions-Policy Bloqueado Bloqueado

Status: CONFORME


6. Error Handling (IMP-01)

6.1 Error Sanitizer - Bom

Arquivo: security/error_sanitizer.rs

  • 72 usos de log_and_sanitize() no codebase
  • Remove informações sensíveis de logs

6.2 unwrap()/expect() - PROBLEMA

Encontrados 945 usos de .unwrap() e .expect():

  • Concentrados em:
    • whatsapp/mod.rs (~20)
    • llm/mod.rs (~15)
    • security/jwt.rs (~15)
    • attendance/mod.rs (~10)

6.3 panic!/todo!/unimplemented! - BOM

Apenas 5 ocorrências:

  • 2 panic! (1 em WhatsApp - crítico, 1 em installer)
  • 2 todo! (em bottest - aceitável)
  • 1 panic! em teste

Recomendação: Substituir .unwrap() por tratamento adequado com ?, ok_or_else(), ou match.


7. SQL Injection (IMP-04)

Implementado corretamente

  • Arquivo: security/sql_guard.rs
  • 69 usos de sanitize_identifier() no codebase
  • Previne SQL injection em operações de tabela

Status: CONFORME


8. Autenticação e Autorização

8.1 JWT

  • Arquivo: security/jwt.rs
  • Implementação robusta com tokens

8.2 RBAC

  • Arquivo: security/rbac_middleware.rs
  • Permissões baseadas em roles

8.3 Zitadel

  • Arquivo: security/zitadel_auth.rs
  • Integração com IdP externo

Status: CONFORME


9. Outras Vulnerabilidades

9.1 Secrets Management

  • Arquivo: security/secrets.rs
  • Integração com Vault

9.2 Password Security

  • Arquivo: security/password.rs
  • Hashing adequado

9.3 MFA/Passkey

  • Arquivos: security/mfa.rs, security/passkey.rs, security/passkey_service.rs

9.4 DLP (Data Loss Prevention)

  • Arquivo: security/dlp.rs

9.5 File Validation

  • Arquivo: security/file_validation.rs

10. Recomendações Prioritárias

# Ação Severidade Esforço
1 Migrar Command::new de bootstrap_utils.rs para SafeCommand ALTA MÉDIO
2 Migrar Command::new de container_session.rs para AsyncCommand ALTA MÉDIO
3 Corrigir .unwrap() em whatsapp/mod.rs ALTA BAIXO
4 Migrar llm/local.rs (cmd_path dinâmico) para SafeCommand ALTA ALTO
5 Remover panic! em core/bot/channels/whatsapp.rs:65 CRÍTICA BAIXO

11. Métricas

  • Linhas de código Rust: ~150,000
  • Arquivos de segurança: 30+
  • Testes de segurança: Presentes
  • Cobertura de linting: 0 warnings (clippy)

12. Conclusão

O projeto tem uma base de segurança sólida com:

  • Rate limiting, CSRF, Headers implementados
  • SQL guard implementado
  • SafeCommand para maioria das execuções

Pontos de atenção:

  • ~8 locais ainda usam Command::new direto
  • ~945 .unwrap() que podem causar panics
  • 1 panic! crítico em produção

Recomendação: Corrigir os itens de alta prioridade antes de push para produção.