Skip to content

HSTS im Firefox ignorieren

HSTS steht für HTTP Strict Transport Security und ist ein Standard, der unverschlüsselte Zugriffe auf solche Webseiten verhindern soll, die nur verschlüsselt angeboten werden.

Dem liegt folgendes Angriffsszenario zugrunde: Die Webseite www.example.com ist nur über HTTPS zugänglich. Der Angreifer “A” kann zwar Zugriffe des Benutzers “B” auf seinen eigenen Server umleiten, bspw. durch Manipulation des DNS, aber - wenn alles so läuft, wie es soll - kein Zertifikat für www.example.com erhalten. Was macht er? Er leitet alle Zugriffe auf https://www.example.com stattdessen auf http://www.example.com (ohne Verschlüsselung!) um, und schon gibt es für den Benutzer keine Fehlermeldungen mehr. Dass die Verbindung jetzt unverschlüsselt ist, sieht er vielleicht nicht ohne weiteres. Außerdem kann der Angreifer natürlich einfach ein - nicht vertrauenswürdiges, d.h. selbst signiertes - Zertifikat für www.example.com erzeugen. Das führt zwar zu einer Fehlermeldung, die der Nutzer aber ignorieren kann (“Sicherheits-Ausnahmeregel erstellen”). Auch das soll HSTS unterbinden.

Eine Website kann diese Policy durch Setzen eines HTTP-Headers (Strict-Transport-Security) serverseitig signalisieren und dabei auch angeben, wie lange diese Einstellung gültig bleiben soll. Der Browser muss diese Vorgabe für die eingestellte Dauer speichern und während dieses Zeitraums (a) jeden unverschlüsselten Zugriff (HTTP) auf einen verschlüsselten Zugriff (HTTPS) umleiten sowie (b) bei jedem Zertifikatsfehler die Verbindung unterbinden, ohne dem Benutzer eine Möglichkeit zu geben, das Zertifikat doch zu akzeptieren:

This means that the user should not be presented with a dialog giving her the option to proceed. Rather, it should be treated similarly to a server error where there is nothing further the user can do with respect to interacting with the target web application, other than wait and retry.

Zertifikatsfehler bei HSTS

So weit, so gut. Es kann aber durchaus legitime Gründe geben, eine solche Verbindung als Benutzer trotzdem zu akzeptieren, beispielsweise dann, wenn man eine Website (oder eine Webapplikation) umzieht. Viele Applikationen (Blogs, …) speichern den Hostnamen, so dass viele dafür spricht, www.meinblog.example auch auf dem neuen Host wieder als www.meinblog.example und nicht als test.meinblog.example einzurichten. Bevor man die DNS-Einträge ändert, kann man dann einfach seinem eigenen Rechner über die Hosts-Datei (/etc/hosts oder %windir%\system32\drivers\etc\hosts) die neue IP unterschieben und die Applikation testen. Leider schlägt das mit aktivierter HSTS fehl, wenn die neue Installation noch kein SSL-Zertifikat hat - vielleicht deshalb, weil man es über Let’s Encrypt bezieht und die einfachen Validierungsroutinen fehlschlagen, so lange die DNS-Einträge für die Domain noch auf die alte Installation zeigen. Natürlich gibt es auch dafür Möglichkeiten, einfacher wäre es aber, schlicht ein fehlendes oder selbst signiertes Zertifikat akzeptieren zu können.

Wie dem auch sei: es wäre doch schön, wenn man als Benutzer - trotz HSTS - bewusst fehlerhafte HTTPS-Verbindungen akzeptieren könnte. Es könnte ja auch einfach einmal sein, dass ein Zertifikat nicht rechtzeitig erneut wurde … Firefox bietet allerdings - standardkonform - keine Möglichkeit dazu über die Benutzeroberfläche.

Hingegen ist es möglich, den HSTS-Eintrag zu löschen mit der Folge, dass Firefox nichts mehr davon weiß, dass die entsprechende Domain eigentlich HSTS implementiert. Dazu genügt es, Firefox zu beenden, im Profilverzeichnis (%APPDATA%\Mozilla\Firefox\Profiles\ plus Name des eigenen Profils) die Datei SiteSecurityServiceState.txt zu editieren und den Eintrag für die betreffende Domain zu löschen, die Datei zu speichern und Firefox neu zu starten. Voila - er hat HSTS vergessen und ermöglicht es nunmehr wie sonst auch, eine temporäre oder dauerhafte Ausnahmeregel zu erstellen und ein ungültiges oder nicht vertrauenswürdiges Zertifikat zu akzeptieren (natürlich nur, wenn der Webserver nicht direkt wieder HSTS setzt …).

Freilich sollte man das nur tun, wenn man auch wirklich weiß, was man tut - sonst schießt man sich ggf. in den eigenen Fuß.

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

HTML-Tags werden in ihre Entities umgewandelt.
Markdown-Formatierung erlaubt
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
BBCode-Formatierung erlaubt
Gravatar, Identicon/Ycon Autoren-Bilder werden unterstützt.
Formular-Optionen