Files
mcp-outline-postgresql/AUDIT-REQUEST.md
Emanuel Almeida 7c83a9e168 fix(security): Resolve 21 SQL injection vulnerabilities and add transactions
Security fixes (v1.2.2):
- Fix SQL injection in analytics.ts (16 occurrences)
- Fix SQL injection in advanced-search.ts (1 occurrence)
- Fix SQL injection in search-queries.ts (1 occurrence)
- Add validateDaysInterval(), isValidISODate(), validatePeriod() to security.ts
- Use make_interval(days => N) for safe PostgreSQL intervals
- Validate UUIDs BEFORE string construction

Transaction support:
- bulk-operations.ts: 6 atomic operations with withTransaction()
- desk-sync.ts: 2 operations with transactions
- export-import.ts: 1 operation with transaction

Rate limiting:
- Add automatic cleanup of expired entries (every 5 minutes)

Audit:
- Archive previous audit docs to docs/audits/2026-01-31-v1.2.1/
- Create new AUDIT-REQUEST.md for v1.2.2 verification

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 14:47:41 +00:00

119 lines
3.9 KiB
Markdown

# Pedido de Auditoria de Segurança - MCP Outline PostgreSQL v1.2.2
## 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.
**Versão actual:** 1.2.2 (após correcções de segurança)
**Total de tools:** 164 ferramentas em 33 módulos
## 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)
## 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
├── pg-client.ts # PostgreSQL client wrapper
├── config/database.ts # DB configuration
├── utils/
│ ├── logger.ts
│ └── security.ts # Validações, rate limiting
└── 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
├── export-import.ts # TRANSACÇÕES v1.2.2
└── [outros 27 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.2 | Descomplicar® | 2026-01-31*