Files
sgse-app/scripts/REVISAO_CIBERSECURITY.md

6.5 KiB

Revisão e Melhorias do Módulo de Cibersecurity

Data: 12/01/2026
Módulo: /ti/cibersecurity
Objetivo: Garantir funcionamento seguro do sistema mesmo diante de ataques

Resumo das Melhorias Implementadas

1. Controle de Acesso (Admin-Only)

Problema identificado: Qualquer usuário autenticado podia executar ações críticas de segurança (bloquear IPs, criar regras, deletar configurações).

Solução implementada:

  • Adicionado helper assertAdmin() em packages/backend/convex/security.ts
  • Todas as queries e mutations sensíveis agora exigem role admin === true
  • Removido parâmetro usuarioId do cliente; o ID é derivado do usuário autenticado
  • Criado +page.server.ts na rota /ti/cibersecurity para redirecionar não-admins

Funções protegidas:

  • listarEventosSeguranca, obterVisaoCamadas, listarReputacoes
  • atualizarReputacaoIndicador, configurarRegraPorta, deletarRegraPorta
  • solicitarRelatorioSeguranca, deletarRelatorio
  • salvarAlertConfig, deletarAlertConfig, listarAlertConfigs
  • criarConfigRateLimit, atualizarConfigRateLimit, deletarConfigRateLimit, listarConfigsRateLimit
  • registrarAcaoIncidente

2. Hardening de Endpoints Dev-Only

Problema identificado: Endpoints e mutations de teste estavam acessíveis em produção.

Solução implementada:

  • Criado helper assertDevOnly() que verifica:
    • Flag SECURITY_DEV_TOOLS === 'true'
    • URL contém localhost ou 127.0.0.1
    • Deployment local (anonymous-*)
    • NODE_ENV !== 'production'
  • Endpoint HTTP /security/rate-limit/seed-dev retorna 404 em produção
  • Mutations criarEventosTeste, limparEventosTeste, seedRateLimitDev bloqueadas em produção

3. Enforcement Real de Blacklist e Rate Limit

Problema identificado: As políticas eram apenas registradas no banco, sem enforcement real no tráfego.

Solução implementada:

  • Criada mutation enforceRequest que verifica:
    1. Blacklist de IPs: Consulta ipReputation e bloqueia com 403 se blacklist === true e ativo
    2. Rate limit por endpoint: Aplica regras configuradas para o path específico
    3. Rate limit por IP: Aplica regras globais ou específicas por IP
  • Integrado no hooks.server.ts do SvelteKit para proteger /api/auth/*
  • Integrado no handler HTTP /security/analyze do Convex
  • Respostas consistentes: 403 (blacklist) ou 429 (rate limit) com header Retry-After

Arquivos modificados:

  • packages/backend/convex/security.ts - função enforceRequest
  • packages/backend/convex/http.ts - enforcement no /security/analyze
  • apps/web/src/hooks.server.ts - enforcement no /api/auth/*

4. Melhorias de UX/UI

Problema identificado:

  • Alerta sonoro falhava por autoplay policy
  • Uso de confirm()/alert() nativos (inconsistente)
  • Componente muito grande (difícil manter)

Solução implementada:

  • Alerta sonoro: Agora requer interação do usuário (toggle) para ativar AudioContext
  • Confirmações: Substituído confirm() por modal <dialog> nativo com estado reativo
  • Feedback: Substituído alert() por sistema de feedback já existente (feedback state)

Arquivos modificados:

  • apps/web/src/lib/components/ti/CybersecurityWizcard.svelte

Funcionalidades Validadas

Dashboard Principal

  • Threat Matrix (gráfico de camadas) - 6h de dados
  • Feed de eventos em tempo real com filtros (severidade/tipo)
  • Contador de novos eventos
  • Lista negra (blacklist) com ações rápidas
  • Regras de porta (CRUD completo)
  • Relatórios refinados (solicitar, listar, imprimir PDF, excluir)
  • Rate limiting avançado (CRUD + ativar/desativar)
  • Alertas e notificações (configurações múltiplas, email/chat)

Backend (Convex)

  • Queries protegidas (admin-only)
  • Mutations protegidas (admin-only)
  • Enforcement de blacklist
  • Enforcement de rate limit
  • Detecção automática de ataques (SQLi, XSS, DDoS, etc.)
  • Sistema de reputação de IPs
  • Alertas automáticos (email/chat)

Pontos de Atenção

⚠️ Enforcement de Rate Limit

  • O enforcement atual funciona para:
    • Endpoints HTTP do Convex (/security/analyze)
    • Rotas /api/auth/* do SvelteKit
  • Recomendação: Para proteção completa, considere:
    • Proxy reverso (Nginx/Traefik) com rate limiting
    • WAF (Web Application Firewall) na borda
    • Cloudflare ou similar para DDoS protection

⚠️ Testes Automatizados

  • Script existente: scripts/teste_seguranca.py
  • Recomendação: Executar periodicamente para validar:
    • Detecção de ataques (SQLi, XSS, brute force, DDoS)
    • Bloqueio de IPs na blacklist
    • Rate limiting funcionando

⚠️ Ambiente de Produção

  • Endpoints dev-only estão protegidos, mas verifique:
    • NODE_ENV está configurado corretamente
    • CONVEX_DEPLOYMENT não começa com anonymous- em produção
    • Flag SECURITY_DEV_TOOLS não está definida em produção

Como Testar

1. Teste de Autorização

# Como usuário não-admin, tentar acessar /ti/cibersecurity
# Esperado: redirecionamento para /ti

2. Teste de Enforcement

# Bloquear um IP via painel
# Tentar fazer login com esse IP
# Esperado: 403 Forbidden

3. Teste de Rate Limit

# Configurar rate limit baixo (ex: 5 req/20s) para /api/auth/sign-in/email
# Fazer 6 tentativas de login rapidamente
# Esperado: 429 Too Many Requests na 6ª tentativa

4. Teste de Detecção de Ataques

python scripts/teste_seguranca.py --teste brute_force
python scripts/teste_seguranca.py --teste sql_injection
python scripts/teste_seguranca.py --teste ddos

Próximos Passos Recomendados

  1. Monitoramento: Implementar dashboard de métricas em tempo real
  2. Automação: Cron job para expirar bloqueios temporários automaticamente
  3. Integração: Conectar com WAF/proxy reverso para enforcement na borda
  4. Testes E2E: Criar suite de testes automatizados para validação contínua
  5. Documentação: Adicionar guia de uso para equipe TI

Arquivos Modificados

  • packages/backend/convex/security.ts - Guards de admin, enforcement, dev-only
  • packages/backend/convex/http.ts - Enforcement no endpoint HTTP
  • apps/web/src/hooks.server.ts - Enforcement no SvelteKit
  • apps/web/src/routes/(dashboard)/ti/cibersecurity/+page.server.ts - Guard de rota (novo)
  • apps/web/src/lib/components/ti/CybersecurityWizcard.svelte - UX melhorada

Status: Implementação completa
Próxima revisão: Após testes em ambiente de staging/produção