Pentest R102: contractNumber-Whitelist nachgezogen
INFO-Finding: die interne CRM-Vertragsnummer war im Update-Path
nicht durch validateContractIdentifier abgedeckt. <script>… →
stripHtml → leerer String → Vertragsnummer silent überschrieben
(R87.1-Pattern auf einem sechsten Feld).
Fix: contractNumber zu CONTRACT_IDENTIFIER_FIELDS hinzugefügt.
Bestehende Whitelist (^[A-Za-z0-9_\-/. ]{0,100}$) und Raw-Input-
Validierung greifen automatisch. Legitime generierte Nummern
(GAS-MPVJ4P10FE8) bleiben OK, <script>/Overflow/CRLF/Tags → 400.
Kein Migration- oder Frontend-Change – der Fix nutzt den
bestehenden R86-Mechanismus.
Doku in SECURITY-HARDENING.md § Runde 102 und docs/todo.md.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,16 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🔒 Pentest R102 – Interne Vertragsnummer nachziehen**
|
||||
- INFO-Finding: `contractNumber` (interne CRM-Nummer) hatte im
|
||||
Update-Path keine Whitelist. `<script>alert(1)</script>` →
|
||||
`stripHtml` → leerer String → Vertragsnummer silent überschrieben.
|
||||
- Fix: `contractNumber` zu `CONTRACT_IDENTIFIER_FIELDS` hinzugefügt –
|
||||
bestehende R86-Whitelist (`^[A-Za-z0-9_\-/. ]{0,100}$`) greift
|
||||
automatisch, R87-Fix (Raw-Input vor stripHtml) ist auch drin.
|
||||
Legitime `GAS-MPVJ4P10FE8` bleibt OK, alle Angriffs-Payloads → 400.
|
||||
- Doku in `SECURITY-HARDENING.md § Runde 102`.
|
||||
|
||||
- [x] **🔧 Pentest R101.1 – Inline-Preview-Pfad refaktoriert + Diagnose-Log**
|
||||
- Pentester R101.1 (INFO/funktional) berichtet: `?disposition=inline`
|
||||
bewirkt nichts, Browser zeigt Download-Dialog. Die Logik im
|
||||
|
||||
Reference in New Issue
Block a user