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.
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:
- Der Client fordert einen
device_code
und den entsprechendenuser_code
für eine OAuthclient_id
an. Der “user_code” wird dem Benutzer präsentiert. - Der Benutzer gibt dem OAuth-Client seine Zustimmung, indem er sich bei Keycloak anmeldet und den
user_code
validiert.3.3. Der Client verwendet dendevice_code
, um ein Zugriffstoken für dieclient_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.