- fix(pagination): SQL injection em cursor pagination - validação de nomes de campos - fix(transaction): substituir Math.random() por crypto.randomBytes() para jitter - fix(monitoring): memory leak - adicionar .unref() ao setInterval - docs: adicionar relatório completo de bugs (BUG-REPORT-2026-01-31.md) - chore: actualizar versão para 1.2.4
5.7 KiB
5.7 KiB
Pedido de Auditoria de Segurança - MCP Outline PostgreSQL v1.2.3
Contexto
Este é um servidor MCP (Model Context Protocol) que fornece acesso directo via PostgreSQL à base de dados do Outline Wiki. Passou por múltiplas auditorias de segurança.
Versão actual: 1.2.3 (security hardened) Total de tools: 164 ferramentas em 33 módulos Security Score: 8.5/10
Correcções Aplicadas (v1.2.2)
SQL Injection Prevention
- 21 vulnerabilidades corrigidas em
analytics.ts,advanced-search.ts,search-queries.ts - Validação de UUIDs ANTES de construir strings SQL
- Novas funções:
validateDaysInterval(),isValidISODate(),validatePeriod() - Uso de
make_interval(days => N)para intervalos seguros
Transacções Atómicas
bulk-operations.ts: 6 operaçõesdesk-sync.ts: 2 operaçõesexport-import.ts: 1 operação
Rate Limiting
- Cleanup automático de entradas expiradas (cada 5 minutos)
Correcções Aplicadas (v1.2.3)
Cryptographic Random Generation
oauth.ts: OAuth secrets usamcrypto.randomBytes()em vez deMath.random()api-keys.ts: API keys usam geração criptográfica segurashares.ts: Share URL IDs usamcrypto.randomBytes()
API Key Security
- API keys armazenam apenas hash SHA-256, nunca o secret plain text
- Previne exposição em caso de breach da base de dados
URL Protocol Validation
- Nova função
isValidHttpUrl()rejeita protocolos perigosos (javascript:, data:, file:) - Aplicada em:
emojis.ts,webhooks.ts,users.ts(avatar URLs)
Integer Validation
desk-sync.ts: Validação de desk_project_id e desk_task_id como inteiros positivos- Previne injection via parâmetros numéricos
Memory Leak Fix
- Rate limiter com lifecycle management (
startRateLimitCleanup,stopRateLimitCleanup) unref()para permitir processo terminar- Graceful shutdown handler em
index.ts
Code Quality
- Adicionado radix 10 explícito a todos os
parseInt()(5 ficheiros) - Substituído
.substr()deprecated por abordagem moderna sanitizeSavepointName()para prevenir SQL injection em savepoints
Pedido de Auditoria
Por favor, realiza uma auditoria de segurança completa ao código actual, focando em:
1. SQL Injection (Verificação)
- Confirmar que todas as interpolações de strings foram eliminadas
- Verificar se existem novos vectores de ataque
- Validar que as funções de validação são suficientes
2. Transacções
- Verificar se as transacções estão correctamente implementadas
- Identificar operações que ainda possam beneficiar de transacções
- Verificar tratamento de erros e rollback
3. Autenticação/Autorização
- Verificar se existe controlo de acesso adequado
- Analisar uso de "admin user" hardcoded em algumas operações
4. Validação de Input
- Verificar sanitização de inputs em todas as tools
- Identificar campos que podem ser explorados
5. Rate Limiting
- Verificar eficácia do rate limiter actual
- Sugerir melhorias se necessário
6. Logging e Auditoria
- Verificar se operações sensíveis são registadas
- Identificar lacunas em logging
7. Dependências
- Verificar se existem dependências com vulnerabilidades conhecidas
Estrutura do Projecto
src/
├── index.ts # MCP entry point (graceful shutdown v1.2.3)
├── pg-client.ts # PostgreSQL client wrapper
├── config/database.ts # DB configuration
├── utils/
│ ├── index.ts # Export all utilities
│ ├── logger.ts
│ ├── security.ts # Validações, rate limiting, URL validation (v1.2.3)
│ ├── transaction.ts # Transaction helpers with retry
│ ├── query-builder.ts # Safe parameterized queries
│ ├── validation.ts # Zod-based validation
│ ├── audit.ts # Audit logging
│ ├── monitoring.ts # Pool health monitoring
│ └── pagination.ts # Cursor-based pagination
└── tools/ # 33 módulos de tools
├── analytics.ts # CORRIGIDO v1.2.2
├── advanced-search.ts # CORRIGIDO v1.2.2
├── search-queries.ts # CORRIGIDO v1.2.2
├── bulk-operations.ts # TRANSACÇÕES v1.2.2
├── desk-sync.ts # TRANSACÇÕES v1.2.2 + INT VALIDATION v1.2.3
├── export-import.ts # TRANSACÇÕES v1.2.2
├── oauth.ts # CRYPTO v1.2.3
├── api-keys.ts # CRYPTO + HASH-ONLY v1.2.3
├── shares.ts # CRYPTO v1.2.3
├── emojis.ts # URL VALIDATION v1.2.3
├── webhooks.ts # URL VALIDATION v1.2.3
├── users.ts # URL VALIDATION v1.2.3
└── [outros 21 módulos]
Ficheiros Prioritários para Análise
src/utils/security.ts- Funções de validação e rate limitingsrc/tools/analytics.ts- Maior quantidade de correcçõessrc/tools/bulk-operations.ts- Operações críticas com transacçõessrc/tools/documents.ts- CRUD principalsrc/tools/users.ts- Gestão de utilizadores
Output Esperado
- Score de segurança (0-10)
- Lista de vulnerabilidades encontradas (se houver)
- Confirmação das correcções - validar que v1.2.2 resolve os problemas anteriores
- Recomendações para próximas melhorias
- Priorização (P0 crítico, P1 alto, P2 médio, P3 baixo)
Comandos Úteis
# Ver estrutura
tree src/ -I node_modules
# Build
npm run build
# Verificar interpolações (deve retornar vazio)
grep -rn "INTERVAL '\${" src/tools/*.ts
grep -rn "= '\${" src/tools/*.ts
# Ver security.ts
cat src/utils/security.ts
# Ver ficheiros corrigidos
cat src/tools/analytics.ts
cat src/tools/bulk-operations.ts
MCP Outline PostgreSQL v1.2.3 | Descomplicar® | 2026-01-31