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:
2026-08-24 11:59:06 +02:00
co-authored by Claude Opus 5
parent 389fd30094
commit b3a9ef6372
4 changed files with 81 additions and 4 deletions
+24
View File
@@ -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