XSS-Sanitization für AppSettings (companyName & Co)
Pentest-Befund (MEDIUM): companyName und weitere Plain-Text-Setting- Keys nahmen via PUT /api/settings/:key XSS-Payloads wie <img src=x onerror=alert(1)> ungefiltert entgegen. Nur Admin triggerbar, aber E-Mail-Templates/PDF-Generatoren hätten den Wert unescaped rendern können. Fix in appSetting.service.ts: sanitizeSettingValue(key, value) strippt HTML außer für die expliziten Editor-Keys (imprintHtml, privacyPolicyHtml, authorizationTemplateHtml, websitePrivacyPolicyHtml). Greift in updateSetting + updateSettings. cleanup-xss-and-mass-assignment.ts bereinigt bestehende dreckige Werte beim Container-Start (idempotent). Live-verifiziert auf dev: - PUT companyName="<img onerror=alert(1)>OpenCRM<script>alert(2)</script>" → DB: "OpenCRM" - Bulk-PUT mit XSS auf companyName + defaultEmailDomain → gestrippt - imprintHtml mit "<h1>...<p>" → unverändert (HTML-allowed) - Cleanup-Skript auf dirty value: "EvilCo" statt mit Tags Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -120,6 +120,24 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
- **Live-verifiziert**: 4867 Datensätze + 1 Datei in 13.2s
|
||||
wiederhergestellt, Log-Modal zeigt den vollständigen Verlauf.
|
||||
|
||||
- [x] **🛡️ XSS-Sanitization für Plain-Text-AppSettings (Pentest MEDIUM)**
|
||||
- `companyName` (und weitere Plain-Text-Keys wie `defaultEmailDomain`,
|
||||
`monitoringAlertEmail`, Schwellenwerte) konnten via PUT
|
||||
`/api/settings/:key` mit XSS-Payloads befüllt werden – das war
|
||||
nur Admin-triggerbar, aber E-Mail-Templates/PDF-Generatoren
|
||||
hätten den Wert ungescaped rendern können.
|
||||
- Fix: neuer `sanitizeSettingValue(key, value)` in
|
||||
`appSetting.service.ts` strippt HTML außer für die expliziten
|
||||
HTML-Editor-Keys (`imprintHtml`, `privacyPolicyHtml`,
|
||||
`authorizationTemplateHtml`, `websitePrivacyPolicyHtml`).
|
||||
Greift in `updateSetting` (Einzel) und `updateSettings` (Bulk).
|
||||
- Cleanup-Skript erweitert: bestehende AppSettings mit HTML in
|
||||
Plain-Text-Keys werden beim Container-Start gestrippt
|
||||
(idempotent).
|
||||
- **Live-verifiziert** auf dev: `<img src=x onerror=alert(1)>OpenCRM
|
||||
<script>alert(2)</script>` via PUT → DB-Wert: `"OpenCRM"`.
|
||||
`imprintHtml` mit `<h1><p>` → unverändert.
|
||||
|
||||
- [x] **🐛 Rollen-Perms-Sync beim Container-Start (Follow-up DSGVO-Fix)**
|
||||
- Bestehende Installationen liefen weiter mit veraltetem
|
||||
Permission-Set für die DSGVO-Rolle (audit:read u.a. fehlten),
|
||||
|
||||
Reference in New Issue
Block a user