- 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
162 lines
5.7 KiB
Markdown
162 lines
5.7 KiB
Markdown
# 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ções
|
|
- `desk-sync.ts`: 2 operações
|
|
- `export-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 usam `crypto.randomBytes()` em vez de `Math.random()`
|
|
- `api-keys.ts`: API keys usam geração criptográfica segura
|
|
- `shares.ts`: Share URL IDs usam `crypto.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
|
|
|
|
1. `src/utils/security.ts` - Funções de validação e rate limiting
|
|
2. `src/tools/analytics.ts` - Maior quantidade de correcções
|
|
3. `src/tools/bulk-operations.ts` - Operações críticas com transacções
|
|
4. `src/tools/documents.ts` - CRUD principal
|
|
5. `src/tools/users.ts` - Gestão de utilizadores
|
|
|
|
## Output Esperado
|
|
|
|
1. **Score de segurança** (0-10)
|
|
2. **Lista de vulnerabilidades** encontradas (se houver)
|
|
3. **Confirmação das correcções** - validar que v1.2.2 resolve os problemas anteriores
|
|
4. **Recomendações** para próximas melhorias
|
|
5. **Priorização** (P0 crítico, P1 alto, P2 médio, P3 baixo)
|
|
|
|
## Comandos Úteis
|
|
|
|
```bash
|
|
# 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*
|