Pentest R120: Audit-Log /:id mit nicht-numerischer ID → 400 statt 500
Beim Suchen eines verify-integrity-Endpoints stiess der Pentester
auf einen 500er: GET /api/audit-logs/verify matcht GET /:id (das
echte Verify ist POST /verify), parseInt("verify") = NaN → Prisma
findUnique({ where:{ id: NaN }}) wirft. Gleiche 400-statt-500-
Klasse wie R64.1/R104.1.
Fix: Number.isNaN-Guard in getAuditLogById, getAuditLogsByCustomer
und updateRetentionPolicy → sauberer 400 „Ungültige ID".
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,15 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🔧 Pentest R120 – Audit-Log `/:id` mit nicht-numerischer ID → 500 statt 400**
|
||||
- Pentester stiess beim Suchen eines `verify-integrity`-Endpoints auf
|
||||
einen 500er. Ursache: `GET /api/audit-logs/verify` matcht `GET /:id`
|
||||
(das echte Verify ist `POST /verify`), `parseInt("verify")` = NaN →
|
||||
Prisma `findUnique({ where:{ id: NaN }})` wirft → 500. Gleiche
|
||||
„400 statt 500"-Klasse wie R64.1/R104.1.
|
||||
- Fix: `Number.isNaN`-Guard in `getAuditLogById`,
|
||||
`getAuditLogsByCustomer` und `updateRetentionPolicy` → sauberer 400.
|
||||
|
||||
- [x] **🔴 Pentest R120 – CRITICAL IDOR: Vertragsbaum fremder Kunden lesbar**
|
||||
- `GET /api/contracts?tree=true&customerId=<fremd>` returnte für
|
||||
Portal-User den vollständigen Vertragsbaum eines beliebigen
|
||||
|
||||
Reference in New Issue
Block a user