Dienstkonto-Kennzeichen gegatet und laut protokolliert (Pentest R184)
Mit dem Scharfschalten des Feldes wurde ein alarm-senkendes Attribut ueber den normalen Benutzer-Update-Pfad setzbar - dieselbe Klasse wie R183-01, nur neu gebaut. Wer sein eigenes Konto so markiert, laesst die eigenen auffaelligen Anmeldungen als Routine erscheinen. Alle drei Sorgen des Pentesters bestaetigt: kein Gate, Protokollierung nur als MEDIUM (Standardstufe fuer User), und jeder mit users:update konnte es auf jedes Konto setzen, auch auf das eigene. Fix analog zur Retention-Absenkung: Bestaetigung confirm SERVICE_ACCOUNT beim Aktivieren; CRITICAL statt MEDIUM mit eigenem Label und Wer/Vorher/Nachher; kein Selbstbedienen (403 am eigenen Konto, muss ein anderer Administrator vornehmen). Das Frontend sendet die Bestaetigung mit - der Haken im Formular ist die Bestaetigung. Verifiziert ueber den echten Controller: ohne Bestaetigung 400, mit 200, am eigenen Konto 403, Protokolleintrag CRITICAL mit sprechendem Label. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -97,6 +97,30 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
|
||||
|
||||
## ✅ Erledigt
|
||||
|
||||
- [x] **🔒 Dienstkonto-Kennzeichen gegatet, laut protokolliert, kein Selbstbedienen (Pentest R184)** (2026-08-24)
|
||||
- Der Pentester hat sofort erkannt, was das Scharfschalten des Feldes
|
||||
bedeutet: Ein Attribut, das die **Alarmstufe senkt**, war ueber den
|
||||
normalen Benutzer-Update-Pfad setzbar – dieselbe Klasse wie R183-01,
|
||||
nur neu gebaut. Wer sein eigenes Konto so markiert, laesst die eigenen
|
||||
auffaelligen Anmeldungen als Routine erscheinen. Das ist die Waesche.
|
||||
- Ist-Zustand vor dem Fix, alle drei seiner Sorgen bestaetigt: kein Gate,
|
||||
Protokollierung nur als MEDIUM (Standardstufe fuer `User`), und jeder mit
|
||||
`users:update` konnte es auf jedes Konto setzen – auch auf das eigene.
|
||||
- Fix, analog zur Retention-Absenkung:
|
||||
* **Bestaetigung** `{"confirm":"SERVICE_ACCOUNT"}` beim Aktivieren, mit
|
||||
Klartext, was das bedeutet.
|
||||
* **CRITICAL** statt MEDIUM, mit eigenem Label („Dienstkonto-Kennzeichen
|
||||
GESETZT fuer … – Anmeldungen werden kuenftig als Routine gefuehrt“) sowie
|
||||
Wer/Vorher/Nachher.
|
||||
* **Kein Selbstbedienen**: am eigenen Konto ist das Kennzeichen weder
|
||||
setzbar noch entfernbar (403 mit Begruendung) – muss ein anderer
|
||||
Administrator vornehmen.
|
||||
- Frontend sendet die Bestaetigung mit; der Haken im Formular IST die
|
||||
Bestaetigung, der Betreiber merkt nichts davon.
|
||||
- Verifiziert ueber den echten Controller: ohne Bestaetigung 400, mit 200,
|
||||
am eigenen Konto 403, Protokolleintrag CRITICAL mit sprechendem Label.
|
||||
`npm run build` (inkl. `tsc`) und Backend-`tsc` gruen.
|
||||
|
||||
- [x] **🖱️ Dienstkonto-Kennzeichen in der Benutzerverwaltung** (2026-08-24)
|
||||
- Nachgezogen: Das Feld `isServiceAccount` lag zwar in der Datenbank, war
|
||||
aber **nirgends setzbar** – weder im Formular noch ueber die API. Der
|
||||
|
||||
Reference in New Issue
Block a user