Pentest R110: Mass-Assignment-Whitelist auf 7 Katalog-Endpunkten
MEDIUM: PUT /api/stressfrei-emails/:id und 6 weitere Update- Endpunkte (platform, tariff, contractCategory, cancellationPeriod, contractDuration, email-providers) reichten req.body ungefiltert an Prisma. Gleiche Bug-Klasse wie das gefixte M1-Finding, sieben Stellen mehr. Nachgewiesen via provisionError-Feld ausserhalb des TS-Types. Fix: sieben Whitelists + pickXxxUpdate()-Helper in sanitize.ts, in den jeweiligen Controllern eingehängt. Reuse der bewährten pick()-Infrastruktur (Customer/User seit Runde 7). EmailProvider bewusst OHNE stripHtmlFromStrings, weil Passwörter und API-Keys legitim Sonderzeichen enthalten dürfen. Doku: SECURITY-HARDENING.md § Runde 110 + docs/todo.md. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,19 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🔒 Pentest R110 – Mass-Assignment-Whitelist auf 7 Update-Endpunkten**
|
||||
- MEDIUM-Finding: `PUT /api/stressfrei-emails/:id` und 6 weitere Update-
|
||||
Endpunkte (`platform`, `tariff`, `contractCategory`,
|
||||
`cancellationPeriod`, `contractDuration`, `email-providers`) reichten
|
||||
`req.body` ungefiltert an Prisma – gleiche Bug-Klasse wie M1
|
||||
(Settings Mass Assignment). Nachgewiesen war es via
|
||||
`provisionError`-Feld ausserhalb des TS-Types.
|
||||
- Fix: sieben Whitelists + `pickXxxUpdate()`-Helper in `sanitize.ts`,
|
||||
in den jeweiligen Controllern eingehängt. Nur die vom Service-
|
||||
Interface deklarierten Felder passieren.
|
||||
- EmailProvider: bewusst ohne `stripHtmlFromStrings`, weil das
|
||||
Passwörter/API-Keys mit Sonderzeichen mutiliert hätte.
|
||||
|
||||
- [x] **🐞 Kündigungsdatum: Cursor sprang beim Tippen aus dem Feld**
|
||||
- `<input type=date>` feuerte `onChange` bei jedem Tastendruck; sobald
|
||||
z.B. `18.08.0002` ein gültiges Datum ergab, feuerte die PUT-Mutation,
|
||||
|
||||
Reference in New Issue
Block a user