Zum Inhalt springen

Passwortfelder werden automatisch ausgefüllt

CWE-522OWASP A07:2021Aktualisiert 4. September 20264 Min. Lesezeit

Das automatische Ausfüllen von Passwörtern auf einem Anmeldeformular ist nützlich und sollte eingeschaltet bleiben: Es macht Passwortmanager nutzbar, und das ergibt stärkere Passwörter. Aufmerksamkeit verlangt es dort, wo es sich nicht um ein eigenes Anmeldefeld handelt, etwa wenn ein Administrator ein Passwort für jemand anderen setzt oder an einem gemeinsam genutzten Arbeitsplatz.

Dieser Befund erscheint in praktisch jedem Bericht und wird beinahe ebenso oft falsch verstanden. Die Empfehlung, das automatische Ausfüllen bei Passwortfeldern abzuschalten, stammt aus einer Zeit ohne Passwortmanager, und ihre uneingeschränkte Anwendung macht Ihre Absicherung heute schwächer statt stärker. Die Feinheit liegt in der Art des Feldes, nicht in der Funktion selbst.

Was bewirkt das autocomplete-Attribut?

Browser können eingegebene Angaben behalten und später erneut einsetzen. Bei Passwörtern geschieht das über den eingebauten Passwortmanager oder über einen externen. Mit dem Attribut autocomplete an einem Eingabefeld geben Sie an, was der Browser mit diesem Feld tun darf.

Die klassische Empfehlung lautete: bei Passwortfeldern abschalten, denn ein gespeichertes Passwort kann von jemand anderem verwendet werden. Diese Empfehlung wurde aufgegeben, und das aus gutem Grund. Wer den Einsatz von Passwortmanagern erschwert, bekommt Nutzer, die sich ihre Passwörter selbst merken müssen, und diese wählen dann kurze, vorhersehbare oder wiederverwendete. Der Gewinn beim einen Risiko wiegt die Verschlechterung beim anderen nicht auf.

Es ist ein Schlüsselkasten, den Sie verbieten, weil jemand ihn aufbrechen könnte, woraufhin alle ihren Schlüssel unter die Fußmatte legen. Das ursprüngliche Risiko ist verschwunden, und das neue ist größer.

Was ist dann richtig?

Verwundbar:

<!-- Administrator setzt ein Passwort für einen anderen Nutzer -->
<form action="/verwaltung/nutzer/passwort" method="post">
  <input name="nutzer" value="j.walter@firma.de">
  <input name="passwort" type="password">
  <button>Setzen</button>
</form>

Dies ist der Fall, in dem das automatische Ausfüllen sehr wohl problematisch ist. Der Browser des Administrators sieht ein Passwortfeld und bietet an, das gespeicherte Passwort des Administrators selbst einzusetzen. Wird das übersehen, erhält der Nutzer das Passwort des Administrators zugewiesen, mit allen Folgen. Der Manager kann es zudem unter dem falschen Namen speichern, wodurch Einträge durcheinandergeraten.

Sicher:

<!-- Anmelden: Ausfüllen ist gerade erwünscht -->
<form action="/anmelden" method="post">
  <input name="email" type="email" autocomplete="username">
  <input name="passwort" type="password" autocomplete="current-password">
  <button>Anmelden</button>
</form>

<!-- Neues Passwort wählen: Der Manager schlägt ein starkes vor -->
<form action="/konto/passwort" method="post">
  <input name="aktuell" type="password" autocomplete="current-password">
  <input name="neu" type="password" autocomplete="new-password">
  <button>Ändern</button>
</form>

<!-- Ein Passwort für jemand anderen: Hier gehört Ausfüllen nicht hin -->
<form action="/verwaltung/nutzer/passwort" method="post">
  <input name="passwort" type="password" autocomplete="off">
  <button>Setzen</button>
</form>

Der Unterschied liegt in der Bestimmung des Feldes. Auf dem Anmeldeformular hilft das Ausfüllen, und die ausdrücklichen Werte sorgen dafür, dass Manager die Felder korrekt erkennen. Beim Wählen eines neuen Passworts gibt new-password dem Manager das Signal, ein starkes vorzuschlagen, statt das alte einzusetzen. Und bei einem Feld, das das Passwort einer anderen Person betrifft, gehört das Ausfüllen nicht hin.

Verlassen Sie sich nicht auf autocomplete="off" als Sicherheitsmaßnahme. Die meisten Browser ignorieren diesen Wert bei Passwortfeldern bewusst, da sie den Einsatz eines Passwortmanagers für sicherer halten als dessen Verhinderung. Es ist ein Hinweis an den Browser, keine Zusicherung.

Welche Auswirkungen haben automatisch ausgefüllte Passwortfelder?

Der Schweregrad ist niedrig, und das ist in praktisch allen Fällen berechtigt. Es bedarf einer bestimmten Lage: Jemand anderes muss physischen oder entfernten Zugang zum Gerät und zum Profil des Nutzers haben. Wer den hat, verfügt in der Regel bereits über schwerwiegendere Möglichkeiten.

Die Lage, in der es sehr wohl etwas bedeutet, ist der gemeinsam genutzte Arbeitsplatz. An einem Empfangstresen, in einer Produktionsumgebung oder in einem gemeinschaftlichen Raum, in dem mehrere Personen dasselbe Profil nutzen, kann ein gespeichertes Passwort vom nächsten Nutzer verwendet werden. Das ist allerdings eher ein Problem gemeinsam genutzter Profile als eines des Formulars.

Die umgekehrte Seite wiegt in der Praxis schwerer. Eine Anwendung, die den Einsatz eines Passwortmanagers erschwert, indem sie das Ausfüllen blockiert, das Einfügen verhindert oder eine niedrige Höchstlänge vorgibt, bekommt nachweislich schwächere Passwörter. Diese Wirkung trifft jeden Nutzer, jeden Tag, und nicht nur diejenigen, die ein Gerät teilen.

Wie spürt man automatisch ausgefüllte Passwortfelder auf?

Ein Tester betrachtet die Passwortfelder der Anwendung und achtet auf die Attribute: Steht dort ein ausdrücklicher autocomplete-Wert, und passt er zur Bestimmung des Feldes? Fehlt er auf dem Anmeldeformular, ist das eher eine verpasste Gelegenheit als ein Risiko.

Die Aufmerksamkeit richtet sich vor allem auf die Felder, bei denen es sehr wohl darauf ankommt: Verwaltungsmasken, in denen ein Passwort für jemand anderen gesetzt wird, Formulare auf gemeinsam genutzten Geräten und Felder, in denen ein Geheimnis eingegeben wird, das nicht das eigene Passwort ist, ein API-Schlüssel, eine PIN, ein Zwei-Faktor-Code. Zusätzlich wird geprüft, ob die Anwendung dem Einsatz von Passwortmanagern gerade entgegenwirkt, etwa indem sie das Einfügen blockiert oder Felder so aufbaut, dass ein Manager sie nicht erkennt. AssistSec bewertet diesen Befund in diesem Zusammenhang, denn das uneingeschränkte Abschalten des Ausfüllens ist heute eher ein Warnsignal als eine Empfehlung.

Wie verhindert man automatisch ausgefüllte Passwortfelder?

  • Lassen Sie das automatische Ausfüllen auf Anmeldeformularen eingeschaltet und verwenden Sie autocomplete="current-password".
  • Kennzeichnen Sie das Feld für den Benutzernamen mit autocomplete="username", damit Manager die Felder korrekt zuordnen.
  • Verwenden Sie autocomplete="new-password" bei Feldern, in denen ein neues Passwort gewählt wird.
  • Setzen Sie autocomplete="off" bei Feldern, in denen ein Passwort für einen anderen Nutzer gesetzt wird.
  • Erlauben Sie das Einfügen und verwenden Sie eine großzügige Höchstlänge, damit Passwortmanager nutzbar bleiben.
  • Vermeiden Sie gemeinsam genutzte Profile an gemeinschaftlichen Arbeitsplätzen; das löst das zugrunde liegende Problem.
  • Stellen Sie an gemeinsam genutzten Geräten ein kurzes Sitzungslimit und eine automatische Bildschirmsperre ein.
  • Behandeln Sie dies als Gestaltungsfrage bei Ihren Formularen, nicht als eigenständige Sicherheitsmaßnahme.

Quellen

Häufige Fragen

Sollte ich Autocomplete auf meinem Anmeldeformular abschalten?

Nein. Diese Empfehlung ist überholt und wirkt kontraproduktiv: Sie macht Passwortmanager unbrauchbar und drängt Nutzer zu kurzen, von Hand eingetippten Passwörtern. Verwenden Sie stattdessen current-password am Anmeldefeld, damit Manager es erkennen und korrekt ausfüllen.

Wo verlangt es dann Aufmerksamkeit?

Bei Feldern, die nicht das eigene Anmeldefeld sind: ein Administrator, der ein Passwort für einen anderen Nutzer setzt, oder ein Formular an einem gemeinsam genutzten Arbeitsplatz, an dem der Browser Angaben des vorherigen Nutzers einsetzen könnte. Dort gehört Autocomplete auf off.

Beachten Browser autocomplete=off noch?

Bei Passwortfeldern ignorieren die meisten Browser diesen Wert bewusst, da der Einsatz eines Passwortmanagers als sicherer gilt als dessen Verhinderung. Verlassen Sie sich also nicht als Sicherheitsmaßnahme darauf; es ist allenfalls ein Hinweis an den Browser.

Was unterscheidet new-password von current-password?

Mit current-password fragen Sie das bestehende Passwort ab, was einen Manager das ausfüllen lässt, was er gespeichert hat. Mit new-password geben Sie an, dass ein neues Passwort gewählt wird, woraufhin Manager ein starkes vorschlagen, statt das alte einzusetzen.

Verwandte Artikel

Zum Suchen / drücken · Esc