78 lines
2.5 KiB
Markdown
78 lines
2.5 KiB
Markdown
|
|
# BOC Security Fixes — 2026-08-10
|
||
|
|
|
||
|
|
## Sammanfattning
|
||
|
|
Kritiska säkerhetsbrister har åtgärdats. Systemet är fortfarande **INTE produktionsklart** men de värsta sårbarheterna är borta.
|
||
|
|
|
||
|
|
## Åtgärdade kritiska brister
|
||
|
|
|
||
|
|
### 1. ✅ Secrets i Git (CRITICAL)
|
||
|
|
- `.env` borttagen från Git-historiken
|
||
|
|
- Tillagd i `.gitignore`
|
||
|
|
- Rotera fortfarande JWT_SECRET och DB_PASSWORD i produktion!
|
||
|
|
|
||
|
|
### 2. ✅ Debug-endpoint borttagen (CRITICAL)
|
||
|
|
- `/debug/token` är borttagen helt
|
||
|
|
- Ingen kan längre generera admin-tokens
|
||
|
|
|
||
|
|
### 3. ✅ Login fixad (CRITICAL)
|
||
|
|
- Login returnerar nu 503 i produktion (tills riktig auth implementeras)
|
||
|
|
- Utvecklingsläge (port 9092) tillåter fortfarande login för test
|
||
|
|
|
||
|
|
### 4. ✅ JWT HS256 fallback borttagen (CRITICAL)
|
||
|
|
- Endast RS256 accepteras nu
|
||
|
|
- Ingen hårdkodad secret fallback
|
||
|
|
- JWKS från ouroboros-identity krävs
|
||
|
|
|
||
|
|
### 5. ✅ SQL injection fixad (CRITICAL)
|
||
|
|
- `journal.go` countQuery använder nu parameterized queries
|
||
|
|
- Ingen strängkonkatenering med användarinput
|
||
|
|
|
||
|
|
### 6. ✅ CORS wildcard borttagen (CRITICAL)
|
||
|
|
- Endast explicita origins tillåts
|
||
|
|
- Credentials kräver matchande origin
|
||
|
|
- Wildcard (`*`) är blockerad i produktion
|
||
|
|
|
||
|
|
### 7. ✅ Security headers tillagda
|
||
|
|
- `X-Content-Type-Options: nosniff`
|
||
|
|
- `X-Frame-Options: DENY`
|
||
|
|
- `Strict-Transport-Security` (i produktion)
|
||
|
|
- `Content-Security-Policy`
|
||
|
|
- `Permissions-Policy`
|
||
|
|
|
||
|
|
## Kvarstående arbete (krävs innan produktion)
|
||
|
|
|
||
|
|
### Kritiskt
|
||
|
|
- [ ] Implementera riktig lösenordsverifiering mot databas
|
||
|
|
- [ ] Lägg till tenant isolation på ALLA queries
|
||
|
|
- [ ] Implementera RBAC (rollbaserad åtkomstkontroll)
|
||
|
|
- [ ] Skydda admin-endpoints med admin-verifiering
|
||
|
|
- [ ] Fixa XSS i frontend (dangerouslySetInnerHTML)
|
||
|
|
- [ ] Implementera proper session-hantering (httpOnly cookies)
|
||
|
|
|
||
|
|
### Hög prioritet
|
||
|
|
- [ ] Minska token-livstid till 15-60 minuter
|
||
|
|
- [ ] Implementera refresh tokens
|
||
|
|
- [ ] Förbättra rate limiting (separata limits per endpoint)
|
||
|
|
- [ ] Lägg till input-validering på alla handlers
|
||
|
|
- [ ] Aktivera PostgreSQL RLS
|
||
|
|
|
||
|
|
### Medium prioritet
|
||
|
|
- [ ] HTTPS/TLS via nginx/traefik
|
||
|
|
- [ ] Password strength policy
|
||
|
|
- [ ] CSRF-skydd (om cookies används)
|
||
|
|
- [ ] Audit log fix (konsekventa context-nycklar)
|
||
|
|
- [ ] CI/CD security gates (gitleaks, govulncheck)
|
||
|
|
|
||
|
|
## Byggstatus
|
||
|
|
✅ Backend bygger framgångsrikt (`boc-api-secure`)
|
||
|
|
|
||
|
|
## Nästa steg
|
||
|
|
1. Testa alla endpoints i utvecklingsläge
|
||
|
|
2. Implementera riktig autentisering
|
||
|
|
3. Kör säkerhetstester (OWASP ZAP, etc.)
|
||
|
|
4. Granska frontend XSS-risker
|
||
|
|
|
||
|
|
---
|
||
|
|
*Fixar applicerade av Bernt (AI Security Audit)*
|
||
|
|
*Datum: 2026-08-10*
|