fix: corrigir bugs críticos de segurança e memory leaks (v1.2.4)

- 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
This commit is contained in:
2026-01-31 16:09:25 +00:00
parent 22601e1680
commit 0329a1179a
22 changed files with 2868 additions and 67 deletions

View File

@@ -1,11 +1,12 @@
# Pedido de Auditoria de Segurança - MCP Outline PostgreSQL v1.2.2
# 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. A versão anterior (v1.2.1) passou por uma auditoria que identificou vulnerabilidades de SQL injection e falta de transacções em operações bulk.
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.2 (após correcções 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)
@@ -23,6 +24,35 @@ Este é um servidor MCP (Model Context Protocol) que fornece acesso directo via
### 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:
@@ -60,20 +90,33 @@ Por favor, realiza uma auditoria de segurança completa ao código actual, focan
```
src/
├── index.ts # MCP entry point
├── 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
── 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
├── desk-sync.ts # TRANSACÇÕES v1.2.2 + INT VALIDATION v1.2.3
├── export-import.ts # TRANSACÇÕES v1.2.2
── [outros 27 módulos]
── 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
@@ -115,4 +158,4 @@ cat src/tools/bulk-operations.ts
---
*MCP Outline PostgreSQL v1.2.2 | Descomplicar® | 2026-01-31*
*MCP Outline PostgreSQL v1.2.3 | Descomplicar® | 2026-01-31*