feat: implement security enhancements for Jitsi integration, including JWT token generation and automatic blocking of detected attacks, improving system resilience and user authentication

This commit is contained in:
2026-01-12 04:34:00 -03:00
parent b965514e53
commit 664d90c2e0
27 changed files with 6174 additions and 329 deletions

View File

@@ -0,0 +1,166 @@
# 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
```bash
# Como usuário não-admin, tentar acessar /ti/cibersecurity
# Esperado: redirecionamento para /ti
```
### 2. Teste de Enforcement
```bash
# Bloquear um IP via painel
# Tentar fazer login com esse IP
# Esperado: 403 Forbidden
```
### 3. Teste de Rate Limit
```bash
# 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
```bash
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