# 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*