Ich habe gerade einen Designfehler als schwere #Sicherheitslücke bei Androids mit #Passkeys auf externen Token wie z.B. #Yubikeys mit #FIDO2 entdeckt...
Aber bevor ich einen Murdsbahö mache, würd ich gerne mal rückfragen, ob jene die sich mit #Security hier befassen, das auch so sehen.
Folgendes Szenario:
Ich habe #keycloak als Authentifikations-Service vor div. Services bei mir im Einsatz.
Dort habe ich einen Authentication-Flow der mir "Passwortlose" Authentifizierung erlaubt. Also der einen Passkey verwenden kann.
Als Passkey habe ich einen Yubikey 5C mit NFC im Einsatz.
Wenn ich diese Authentifikation am Laptop wähle, so muss der Yubikey eingesteckt sein. Ich gebe meinen Benutzernamen ein. Dann fragt mich der Browser nach dem PIN des Yubikeys. Den gebe ich ein, und dann werde ich aufgefordert, da drauf zu drücken, und schon bin ich angemeldet.
Genauso funktioniert das am Smartphone auch, wenn der Token per USB eingesteckt ist.
Ein Angreifer, der sich meinen Token stiehlt muss immer noch den PIN dazu wissen. Und nach 3x-iger falscher Eingabe ist der Token unbrauchbar.
Die Sicherheit ist also relativ hoch.
Aber Android (ich hab GrapheneOS im Einsatz) fragt mich auch, ob ich die Authentifizierung per NFC machen möchte. Das ist eine Google-App. Ja auch auf #GrapheneOS da diese noch nicht portiert wurde. Aber es ist egal, auf den allermeisten Androids rennt diese Google-App die für FIDO-Authentifizierung genutzt wird.
Wenn ich also NFC wähle, so muss ich nur den Token präsentieren und schon bin ich drin in meinem Account.
Es fehlt die Abfrage nach dem PIN des Token.
Ich habe in keycloak nichts gefunden, wo ich einstellen könnte, dass auch bei Authentifizierung mittels NFC der PIN abgefragt werden muss. Also scheint es die Google-App zu entscheiden, dass über USB der PIN abgefragt wird und über NFC nicht.
Und das sehe ich als gewaltige Sicherheitslücke, welche diesen Authentifizierungsflow in keycloak ad Absurdum führt.
Wenn ich einen Passkey eines Gerätes nehme, auf dem ich mich einloggen muss... ok. Es muss jemand meinen Laptop oder mein Smartphone stehlen und sich in meinen Account einloggen... dann passt es, dass kein PIN per NFC abgefragt wird.
Aber wenn ich bloß einen Yubikey stehlen muss und schon komm ich ohne dem Faktor "Wissen" in keycloak-Accounts rein... ist das NICHT GUT.
@kuketzblog @padeluun @publicvoit wie seht ihr das?