Missing admin-target guard in UsersController::actionActivateUser can lead to permission escalation
Beschreibung
Ein Benutzer mit "administrateUsers"-Berechtigungen kann ein deaktiviertes Administratorkonto aktivieren. Dies erfordert ein Bedienfeld Benutzerkonto mit `administrateUsers` Berechtigungen. ``php $this->userActionChecks(); $this->requirePermission('administrateUsers'); // 1079 $userId = $this->request->getRequiredBodyParam('userId'); // 1082 $user = Craft::$app->getUsers()->getUserById($userId); // 1083 Craft::$app->getUsers()->activateUser($user); // 1090 — no admin guard ``` Die Mirror-Aktion `actionDeactivateUser` (2199-2200) macht explizit `if ($user->admin) $this->requireAdmin(false);``actionActivateUser` nicht. Ein Nicht-Admin mit "administrateUsers" kann ein ausstehendes / inaktives Admin-Konto aktivieren. In Kombination mit dem Aktivieren und Zurücksetzen des Passworts eines Administrators oder dem Wiederaufleben eines absichtlich deaktivierten Administrators entsteht eine Privilegienlücke und die Symmetrie zwischen absichtlicher Aktivierung und Deaktivierung wird unterbrochen. ### Datenfluss 1. `POST users/activate-user`, `userId=`. 2. Guard: "administrateUsers" (nicht-admin grantable). Keine Admin-Zielprüfung. 3. Sink: `activateUser($user)` aktiviert das Admin-Konto. ID des Berichts: 1569
Quellen & weiterführende Informationen
Hier werden ausschließlich tatsächlich zu dieser Schwachstelle gespeicherte Quellenbelege angezeigt.
Was ist zur Behebung zu tun?
Auf eine behobene Version aktualisieren: 5.10.12.
Empfohlene Schritte
- Betroffene Systeme identifizieren: Pixel & Tonic Craft CMS.
- Exposition prüfen: Internet-Erreichbarkeit, Admin-Oberflächen, VPN, Mail- oder Webdienste.
- Update/Rollout auf behobene Version vorbereiten und priorisiert einspielen.
- Nacharbeiten dokumentieren: betroffene Assets, Maßnahme, Zeitpunkt, Restrestrisiko.
Übergangsmaßnahmen
- Zugriff auf betroffene Dienste auf vertrauenswürdige Netze einschränken.
- WAF/IDS/EDR-Regeln und Hersteller-IOCs aktivieren, sofern verfügbar.
- Nicht benötigte Funktionen, Plugins oder Dienste temporär deaktivieren.