Pentest R120: canAccess-403 zusätzlich tamper-evident auditieren

Der Retest deckte auf, dass abgewehrte Cross-Customer-Zugriffe
(canAccess*-403) nur im SecurityEvent-Monitoring-Stream landeten
(ACCESS_DENIED, /api/monitoring/events) – nicht im AuditLog, wo
der Pentester suchte. Der Monitoring-Stream ist zudem löschbar
(DELETE /api/monitoring/events) und nicht hash-verkettet.

emitAccessDenied schreibt jetzt zusätzlich einen tamper-evidenten
AuditLog-Eintrag (action READ, resourceType 'AccessDenied',
Sensitivity HIGH), der ein Clearen des Monitoring-Streams
überlebt und über die Hash-Kette manipulationssicher ist. Gilt
für alle canAccess*-403 (Contract + Customer, inkl. Vollmacht-
fehlt-Fall). Kein Enum-/Schema-Change: READ + distinktiver
resourceType, filterbar via searchAuditLogs.

Korrigiert damit auch meine frühere ungenaue Aussage „landet im
Audit" – vorher war das die falsche Tabelle.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 22:51:40 +02:00
co-authored by Claude Opus 4.7
parent 23c530be46
commit 42705145dd
4 changed files with 47 additions and 1 deletions
+3
View File
@@ -124,6 +124,9 @@ function determineSensitivity(resourceType: string): AuditSensitivity {
User: 'HIGH',
CustomerConsent: 'HIGH',
DataDeletionRequest: 'HIGH',
// Abgewehrter IDOR-/Cross-Boundary-Zugriffsversuch (canAccess*-403).
// HIGH, weil ein Treffer auf gezielte Fremddaten-Enumeration hindeutet.
AccessDenied: 'HIGH',
// MEDIUM
Contract: 'MEDIUM',
Address: 'MEDIUM',