stefankittel
Goto Top

Sicherheit bei der Anmeldung an Webanwendungen allgemein - 3 Felder oder 3 Seiten?

Hallo,

ja, es ist schon Freitag.

Ich fange gerade an die Web-Anwendung einer meiner Produkte zu überarbeiten.
Parallel habe ich heute ein QNAP-NAS aktualisiert.

Dabei ist mit aufgefallen, dass die Web-Anmeldung das NAS neuerdings auf zwei Seiten verteilt ist.
1. Seite: Benutzername
2. Seite: Kennwort
2FA gibt es bei diesem NAS nicht. Vermutlich wäre es eine 3. Seite.

Bisher halte ich das so, dass es eine Seite mit 3 Feldern (Benutzername, Kennwort, 2FA) gibt.
Dies bietet einem Angreifer keine Möglichkeit zu erkennen ob eines der 3 Felder korrekt ist.
Egal ob Benutzername, Kennwort oder 2FA falsch sind, er bekommt immer die gleiche Meldung.
Leider auch der Benutzer der nun nicht weiß ob sein Kennwort oder 2FA falsch waren.

Die Variante mit mehreren Seiten macht einem die Nutzerführung einfacher und ich kann dem Benutzer besser helfen sich anzumelden. Bietet einem menschlichen Angreifer aber auch mehr Informationen. Er kann z.B. erkennen, dass ein Kennwort schon mal korrekt ist.

Ein technischen Angriff mittels Skript hat mehr Probleme weil es nicht ein API Aufruf sondern mehrere gestaffelt sind.

Wie sehr Ihr das?

Viele Grüße

Stefan

Content-Key: 61205311016

Url: https://administrator.de/contentid/61205311016

Printed on: May 28, 2024 at 07:05 o'clock

Member: maretz
maretz Mar 08, 2024 at 05:46:18 (UTC)
Goto Top
naja - auch bei mehreren Seiten wäre es ziemlich doof zu sagen was da nich korrekt war -> du gibst ja schon mal dann frei welcher benutzername überhaupt existiert...

Komfortabler finde ICH wenn es auf einer Seite ist - zB. auch bei der Verwendung von Passwort-Managern (die ja generell dann bessere Passwörter erlauben). Dann sehe ich wenigstens welches Feld der will und gut...

Um da nen Missbrauch zu verhindern würde ich eher einen Lockout mit einbauen -> zB. nach 10 Versuchen erstmal 10 Min Zwangspause... Das dürfte das "erraten" idR. schwer machen - zumal heute die Angriffe ja eh eher so gestrickt sind das mir der Mitarbeiter die Daten "gibt" und ich somit gar nich mehr testen will... Da ist es dann auch egal ob eine oder zwei Seiten...
Member: kpunkt
kpunkt Mar 08, 2024 at 06:06:55 (UTC)
Goto Top
Ich seh das eher anders. Und zwar zuvorderst aus Usersicht.
Amazon macht das z.B. bei der CC-Authentifizierung so.
Erste Seite: mTAN eingeben.
Zweite Seite: Passwort eingeben

Das Problem: die zweite Seite sieht fast genauso aus wie die erste. Sogar der Text mit der mTAN steht noch da und auch das Formularfeld ist an der exakt gleichen Stelle. Die vorher eingegebene mTAN ist aber weg. Das sieht auf den ersten Blick nach Fehler im System aus aka TAN wurde nicht übermittelt oder so. Klopft man sie also ein zweites mal ein, schließlich sagt der Text das ja auch so. Wenn da dann die Fehlermeldung kommt, dass die Eingabe nicht korrekt war, schaut man erst doof.
Bis man merkt, dass in dem Formularfeld jetzt in grauer Farbe "Passwort" steht. Es wird aber nicht angegeben, welches Passwort die jetzt genau wollen. Das von Amazon? Das von der CC? Das von der Online-Seite der CC?
Und schwupps kommt die Meldung, dass die CC für Online-Käufe gesperrt ist und man eine andere Zahlform wählen muss.

Da wünsche ich mir schon seit immer, dass da alle Felder auf einer Seite sind. Aber auch andere Seiten haben da unterschiedliche Seiten. Und das ist jedesmal nervig. Da wird jede Eingabe geprüft, was jedes Mal dauert. Somit wird der Einlog-Vorgang unnötig in die Länge gezogen. Und wenns dann noch Probleme mit dem Backbone gibt, kanns sein, dass zwischen den beiden Eingaben die Verbindung abschmiert und sich gar nix mehr tut.

Man muss ja nicht angeben, welche Eingabe jetzt falsch war.

Insgesamt funktionieren mehrere Seiten ja schon, wenn sie denn gut gemacht sind und man auf einen Blick erkennen kann, was denn nun benötigt wird. Solange ein Passwortmanager das mitmacht gibts ja wenig Probleme.
Schwierig wirds dann auch, wenn es für einen Dienst quasi mehrere Passwörter gibt (siehe CC-Gedöns)
Member: StefanKittel
StefanKittel Mar 08, 2024 at 08:11:46 (UTC)
Goto Top
Zitat von @maretz:
naja - auch bei mehreren Seiten wäre es ziemlich doof zu sagen was da nich korrekt war -> du gibst ja schon mal dann frei welcher benutzername überhaupt existiert...
Nein, die Seite mit dem Kennwort erscheint unabhängig ob der User exists oder nicht.

Komfortabler finde ICH wenn es auf einer Seite ist - zB. auch bei der Verwendung von Passwort-Managern (die ja generell dann bessere Passwörter erlauben). Dann sehe ich wenigstens welches Feld der will und gut...
"Komfortabler" zählt nicht.

Um da nen Missbrauch zu verhindern würde ich eher einen Lockout mit einbauen -> zB. nach 10 Versuchen erstmal 10 Min Zwangspause...
Das habe ich sowieso. RateLimiter, Geo Blocking, etc.
Member: StefanKittel
StefanKittel Mar 08, 2024 at 08:14:03 (UTC)
Goto Top
Zitat von @kpunkt:
...Solange ein Passwortmanager das mitmacht gibts ja wenig Probleme.
Gutes Stichwort. Sind Passwortmanager in den Händen von Laien denn hilfreich.

Die gehen auf die Seite, geben Benutzername und Kennwort ein und klicken dann auf "Speichern".
Also werden die Informationen im Browser unverschlüsselt (Default) gespeichert.

Richtige Passwortmanager mit Kennwort sind sinnvoll.
Aber diese Browser-Kennwort-Speicherung nicht.

Stefa
Member: kpunkt
kpunkt Mar 08, 2024 at 08:33:29 (UTC)
Goto Top
Ich mein da eigenständige Passwortmanager, nicht dieses Browserzeugs.
Aber die wird man wohl so schnell nicht mehr los. Sind halt zum einen kostenlos und arbeiten oftmals automatisch.
Member: Visucius
Visucius Mar 08, 2024 at 08:37:45 (UTC)
Goto Top
Schön, dass sich mal jemand Gedanken dazu macht. Ich muss unter Safari jetzt nämlich sowohl den Namen als auch (2. Seite) das PW einzeln per Fingerprint freigeben. Will mich dann noch jemand zu 2FA nötigen, gehe ich die Wände hoch!
Member: StefanKittel
StefanKittel Mar 08, 2024 at 08:38:25 (UTC)
Goto Top
Zitat von @kpunkt:
Ich mein da eigenständige Passwortmanager, nicht dieses Browserzeugs.
Das war mir schon klar. Aber für normalen User sehen da keinen Unterschied.

Und wenn die Seite so gestaltet ist, dass ein Passwordmanager funktioniert, funktioniert auch das Browserzeugs.

Dann überlege ich eher das Kennwort wegzulassen.
Nur Benutzername und 2FA.
Mal schauen.

Stefan
Member: StefanKittel
StefanKittel Mar 08, 2024 at 08:39:52 (UTC)
Goto Top
Zitat von @Visucius:
Schön, dass sich mal jemand Gedanken dazu macht. Ich muss unter Safari jetzt nämlich sowohl den Namen als auch (2. Seite) das PW einzeln per Fingerprint freigeben. Will mich dann noch jemand zu 2FA nötigen, gehe ich die Wände hoch!

Das "Problem" ist ja die Eingabe so zu gestalten, dass sie für den Benutzer einfach ist, sonst macht der nicht mit, und gleichzeitig sicher ist. Meist ist es nur eines von beiden.
Also unsicher aber einfach oder sicher und unbenutzbar?

Stefan
Member: Visucius
Visucius Mar 08, 2024 at 09:04:02 (UTC)
Goto Top
Das "Problem" ist ja die Eingabe so zu gestalten,…
Das ist mir schon klar. Ich wollte nur auf die zweimalige Fingerprint-Thematik hinweisen, anschließend noch ne Zertifikatemeldung und dann noch irgendein DSGVO-Dreck, den Du wegdrücken musst – dann ist der Vormittag gelaufen.

PS: Bei mir werden die Cookies bei Neustart gelöscht … das is jedes mal nen Spaß ­čĄ¬

imho wäre eine Konfiguration wünschenswert die man an das Sicherheitsbedürfnis anpasst. Im Prinzip wie bei Syno und dem deaktivieren von https. Hilft halt nur nix, wenn dann der Browser brüllt, dass die Seite unsicher ist. Alles maximal nervig mittlerweile und in vielen Fällen einfach sinnfrei.

Aber das hilft Dir für Deine Webanwendung wohl auch nicht weiter ­čśë
Member: StefanKittel
StefanKittel Mar 08, 2024 updated at 10:39:14 (UTC)
Goto Top
Moin,

ich werfe dann noch Client-Web-Zertifikate in den Raum.
Nachdem der User sich einmal ganz angemeldet hat und das Zertifikat installiert hat reicht der 2FA Code.

Oder einen Fido-Stick.
Oder Windows-Hello.

Stefan
Member: pantox
pantox Mar 08, 2024 at 15:24:12 (UTC)
Goto Top
Servus,

der Grund für die mehrseitigen Anmeldeformulare sind schlichtweg unterschiedliche Authentifizierungsmethoden. Und dafür muss der Seitenbetreiber erstmal wissen wer sich anmelden will, um dann die richtige Methode auszuwählen und anzuzeigen. Neben Standard Benutzername/Passwort gibt es mittlerweile verschiedenste Dienste wie z.B. Single Sign On (SSO), Authenticator Apps, Login mit Facebook, Google, Github etc. auch verbreiten sich Passkeys immer weiter. Der Trend geht hin zur passwortlosen Authentisierung. Leider ist das ein schleichender Prozess und darum muss die Abwärtskompatibilität zum Passwort eben z.B. durch mehrseitige Anmeldeformulare sichergestellt werden.

Eine etwas ältere aber immer noch gute Zusammenfassung gibt es auf Twilio.

Es ist also weniger eine Sicherheitsfrage als die schlichte Notwendigkeit eines mehrseitigen Anmeldeprozesses.

Wenn du für deine eigene Webanwendung jedoch nur Benutzername / Passwort anbietest, kannst du auf die vorherige Nutzerverifizierung auch verzichten.

Ich will das Märchen vom Kapuze-tragenden Hacker, der stundenlang unterschiedliche Kombinationen über die Eingabemaske einer Webseite versucht zu knacken, nicht mehr so recht glauben. Passwörter - oder vielmehr deren Hashs - werden auf Serverseite durch Sicherheitslücken Datenbankweise abgezogen, im stillen Kämmerlein geknackt und dann gewinnbringend verkauft. Wer dann Zugriff auf eine Webanwendung haben will, probiert einfach solange Schlüssel aus, bis einer passt. Ob dabei nun der Benutzername, das Passwort oder beides falsch ist, juckt den Angreifer wenig, er nimmt einfach den nächsten Schlüssel aus der Tüte.

Solange die User die Ein-Passwort-Für-Alles-Methode anwenden, haben es Angreifer leicht, da es sich bei den erbeuteten Schlüsseln um Generalschlüssel handelt. Passwortmanager (auch die in den Browser integrierten) helfen genau dieses Problem abzuschwächen indem sie das Nutzerverhalten fördern sich für jeden Dienst ein eigenes Passwort anzulegen.

Stephan
Member: maretz
maretz Mar 08, 2024 at 18:50:40 (UTC)
Goto Top
Zitat von @StefanKittel:

Komfortabler finde ICH wenn es auf einer Seite ist - zB. auch bei der Verwendung von Passwort-Managern (die ja generell dann bessere Passwörter erlauben). Dann sehe ich wenigstens welches Feld der will und gut...
"Komfortabler" zählt nicht.


Naja - natürlich kann man den Nutzerkomfort ignorieren. Und sich dann wundern wenn die Anwender eher suboptimale Wege finden... Setze zB. als Vorgabe das "komplexe" Passwörter genutzt werden müssen mit min 10 Zeichen und natürlich nur zufällige Zeichen -> und du wirst auf den Desktops die übliche "password.txt" finden... Daher würde ich das ganze eben auch immer aus der Nutzersicht sehen - wenn du nämlich eben nicht willst das man das eh direkt im Browser oder sonstwo speichert... Ich kenne zB. aus einigen Erfahrungen wo die IT natürlich auch die "password.txt" verboten hat das die Mitarbeiter dann einfach kurz das Passwort im Klartext zB. in Word gemacht haben und dann mitm Handy nen Foto... ob DAS besser ist wenn das Handy mal verloren ist darf man sich selbst überlegen.
Member: mbehrens
mbehrens Mar 11, 2024 at 20:12:36 (UTC)
Goto Top
Zitat von @StefanKittel:

Ich fange gerade an die Web-Anwendung einer meiner Produkte zu überarbeiten.

Ich fand hierzu den Vortrag Passwords are not going away von Per Thorsheim auf der NDC recht interessant.
Insbesondere auch zur Passwortvergabe, Eingabereihenfolge und MFA.
Member: StefanKittel
StefanKittel Mar 12, 2024 at 08:19:02 (UTC)
Goto Top
Moin,

ich hatte gerade ein praktisches Beispiel warum man mehrere Seiten braucht.
Aktuell: 3 Felder (Username, Password, 2FA).

Bei Password hat er den 2FA Code eingetragen und das Feld 2FA leer leergelassen.

Stefan