Security Advisory

Keycloak Device Grant Spoofing

Angreifer können Teile eines Device Grant Flows fälschen und so Access-Tokens für andere OAuth2 Clients erhalten.

Advisory ID: MLSA-2023-003
CVE: CVE-2023-2585
CVSS: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:U/C:L/I:L/A:N
Kritikalität: low
Betroffene Versionen: < 21.1.2
Behoben in: 21.1.2
Gefunden von: Timo Müller

Produktbeschreibung

Keycloak ist ein Open-Source-Software, die das Single Sign-On mit Identitäts- und Zugriffsmanagement für moderne Anwendungen und Dienste ermöglicht.

Details

Betroffene Keycloak-Instanzen verifizieren den Inhaber eines Device-Codes nicht richtig. Dies kann es einem Angreifer erlauben, Zugriffstoken für andere Clients zu erhalten.

Der Device Authorization Grant bietet einen OAuth-Flow, der verwendet werden kann, falls das System keinen Browser hat (z. B. bei ein IoT Gerät).

Dieser Grant erfordert drei Schritte:

  1. Der Client fordert einen device_code und den entsprechenden user_code für eine OAuth client_id an. Der “user_code” wird dem Benutzer präsentiert.
  2. Der Benutzer gibt dem OAuth-Client seine Zustimmung, indem er sich bei Keycloak anmeldet und den user_code validiert.3.3. Der Client verwendet den device_code, um ein Zugriffstoken für die client_id im Namen des Benutzers abzurufen.

Bei CVE-2023-2585 handelt es sich um eine Schwachstelle, da der im Schritt 1 generierte device_code und die client_id nicht miteinander verknüpft sind. Aufgrund dieser fehlenden Verknüpfung können Angreifer einen device_code verwenden, um Zugriffstoken für andere OAuth-Clients anzufordern. Abhängig von den verfügbaren Clients könnte dies einem Angreifer Zugriff auf einen Access-Token für eine administrative Anwendung verschaffen.

Es wird darauf hingewiesen, dass Angreifer nur einen Access-Token für Clients anfordern können, bei denen die Geräteautorisierung aktiviert ist. Standardmäßig ist diese Einstellung für neue Keycloak OAuth-Clients nicht aktiviert.

Workarounds

  • Deaktivierung des Keycloak Device Grant Flows für alle OAuth Clients.

Indicators of Compromise

  • Prüfen der Keycloak AdminUI Suche nach verdächtigen Consent-Einträgen (unter User details Consents).

Coordinated Disclosure Zeitverlauf

  • 12/04/2023 Initiale Kontakaufnahme mit dem Keycloak Security Team.
  • 17/04/2023 Bestätigung des Maileingangs, Analyse des Problems wurde gestartet.
  • 18/04/2023 Abschluss des initialen Analyse.
  • 26/06/2023 Security-Fix zur Behebung der Schwachstelle wurde in das Keycloak Repository commited.
  • 28/06/2023 Veröffentlichung von neuem Keykloak-Release mit Behebung der Schwachstelle.