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:
@@ -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*
|
||||
|
||||
Reference in New Issue
Block a user