HTTP Strict Transport Security ( HSTS ) ist ein Sicherheitsmechanismus, der Websites vor Man-in-the-Middle-Angriffen wie Protokoll-Downgrade-Angriffen [ 1 ] und Cookie-Hijacking schützt . Er ermöglicht es Webservern, festzulegen, dass Webbrowser (oder andere kompatible Benutzeragenten ) automatisch ausschließlich über HTTPS -Verbindungen mit dem Server kommunizieren sollen. HTTPS bietet Transport Layer Security (TLS/SSL) anstelle des unsicheren HTTP allein. HSTS ist ein IETF- Standardprotokoll und in RFC  6797 spezifiziert .

Die HSTS-Richtlinie wird vom Server über ein HTTP- Antwortheaderfeld namens „HSTS-Richtlinie “ an den Benutzeragenten übermittelt Strict-Transport-Security. Die HSTS-Richtlinie legt einen Zeitraum fest, in dem der Benutzeragent ausschließlich sicher auf den Server zugreifen darf. [ 2 ] : §5.2 Websites, die HSTS verwenden, akzeptieren häufig keine unverschlüsselten HTTP-Anfragen, indem sie entweder HTTP-Verbindungen ablehnen oder Benutzer systematisch auf HTTPS umleiten (obwohl dies in der Spezifikation nicht vorgeschrieben ist). Die Folge ist, dass ein Benutzeragent, der TLS nicht unterstützt, keine Verbindung zur Website herstellen kann.

Der Schutz greift normalerweise erst, nachdem ein Nutzer die Website mindestens einmal besucht hat, und basiert auf dem Prinzip „ Vertrauen beim ersten Besuch “. Dieser Schutz funktioniert folgendermaßen: Wenn ein Nutzer eine HTTP-URL (nicht HTTPS) für die Website eingibt oder auswählt, stellt der Client, beispielsweise ein Webbrowser, automatisch auf HTTPS um, ohne eine HTTP-Anfrage zu senden. Dadurch wird ein HTTP-Man-in-the-Middle-Angriff verhindert. Um diesem Problem entgegenzuwirken, wird eine HSTS-Preload-Liste von Google Chrome geführt , die auch von anderen gängigen Webbrowsern verwendet wird . Befindet sich eine Domain auf dieser Liste, überspringt der Browser die erste Anfrage und verschlüsselt die gesamte Kommunikation sofort. [ 3 ] Zusätzliche Domains können kostenlos registriert werden. [ 4 ]

Spezifikationshistorie

Die HSTS-Spezifikation wurde am 19. November 2012 als RFC 6797 veröffentlicht, nachdem sie am 2. Oktober 2012 von der IESG als vorgeschlagener Standard (RFC) zur Veröffentlichung freigegeben worden war . [ 5 ] Die Autoren hatten sie ursprünglich am 17. Juni 2010 als Internet-Draft eingereicht . Mit der Umwandlung in einen Internet-Draft wurde der Name der Spezifikation von „Strict Transport Security“ (STS) in „HTTP Strict Transport Security“ geändert, da die Spezifikation nur für HTTP gilt . [ 6 ] Das in der HSTS-Spezifikation definierte HTTP-Antwortheader-Feld behält jedoch die Bezeichnung „Strict-Transport-Security“.

Die letzte sogenannte „Community-Version“ der damals noch so genannten „STS“-Spezifikation wurde am 18. Dezember 2009 veröffentlicht und enthielt Überarbeitungen, die auf dem Feedback der Community basierten. [ 7 ]

Der ursprüngliche Entwurf der Spezifikation von Jeff Hodges ( PayPal) , Collin Jackson und Adam Barth wurde am 18. September 2009 veröffentlicht. [ 8 ]

Die HSTS-Spezifikation basiert auf der Originalarbeit von Jackson und Barth, wie sie in ihrem Artikel „ForceHTTPS: Protecting High-Security Web Sites from Network Attacks“ beschrieben wird. [ 9 ]

Darüber hinaus ist HSTS die Verwirklichung eines Aspekts einer Gesamtvision zur Verbesserung der Websicherheit, die von Jeff Hodges und Andy Steingruebl in ihrem 2010 veröffentlichten Artikel „ The Need for Coherent Web Security Policy Framework(s)“ vorgestellt wurde . [ 10 ]

HSTS-Mechanismus – Übersicht

Ein Server implementiert eine HSTS-Richtlinie, indem er einen Header über eine HTTPS-Verbindung bereitstellt (HSTS-Header über HTTP werden ignoriert). [ 1 ] Beispielsweise könnte ein Server einen Header senden, sodass zukünftige Anfragen an die Domain im nächsten Jahr (max-age wird in Sekunden angegeben; 31.536.000 entspricht einem Nicht-Schaltjahr) ausschließlich über HTTPS erfolgen: Strict-Transport-Security: max-age=31536000.

Wenn eine Webanwendung eine HSTS-Richtlinie an Benutzeragenten ausgibt, verhalten sich konforme Benutzeragenten wie folgt: [ 2 ] : §5

  1. Unsichere Links, die auf die Webanwendung verweisen, werden automatisch in sichere Links umgewandelt (z. B. http://example.com/some/page/wird der Link https://example.com/some/page/vor dem Zugriff auf den Server geändert).
  2. Kann die Sicherheit der Verbindung nicht gewährleistet werden (z. B. weil das TLS- Zertifikat des Servers nicht vertrauenswürdig ist), muss der Benutzeragent die Verbindung beenden [ 2 ] : §8.4 und darf dem Benutzer den Zugriff auf die Webanwendung nicht gestatten. [ 2 ] : §12.1

Dies trägt dazu bei, Benutzer von Webanwendungen vor passiven ( Abhören ) und aktiven Netzwerkangriffen zu schützen . [ 2 ] : §2.4 Ein Man-in-the-Middle-Angreifer hat deutlich eingeschränkte Möglichkeiten, Anfragen und Antworten zwischen einem Benutzer und einem Webanwendungsserver abzufangen, solange im Browser des Benutzers die HSTS-Richtlinie für diese Webanwendung aktiv ist.

Anwendbarkeit

Die wichtigste Sicherheitslücke, die HSTS beheben kann, sind SSL-Stripping- Man-in-the-Middle-Angriffe . Diese wurden erstmals 2009 von Moxie Marlinspike in seinem Vortrag „New Tricks For Defeating SSL In Practice“ auf der Black Hat Federal öffentlich vorgestellt. [ 11 ] [ 12 ] Der SSL- (und TLS- )Stripping-Angriff funktioniert, indem eine sichere HTTPS -Verbindung transparent in eine unverschlüsselte HTTP-Verbindung umgewandelt wird. Der Benutzer erkennt zwar, dass die Verbindung unsicher ist, kann aber nicht feststellen, ob sie eigentlich sicher sein sollte . Zum Zeitpunkt von Marlinspikes Vortrag nutzten viele Websites kein TLS/SSL. Daher war es ohne Vorwissen unmöglich zu erkennen, ob die Verwendung von unverschlüsseltem HTTP auf einen Angriff zurückzuführen war oder einfach darauf, dass die Website kein TLS/SSL implementiert hatte. Zudem werden dem Benutzer während des Downgrade-Prozesses keine Warnungen angezeigt, wodurch der Angriff für die meisten außer den aufmerksamsten Nutzern schwer zu entdecken ist. Das auf der Black Hat DC 2009 vorgestellte Tool sslstrip von Marlinspike automatisiert den Angriff vollständig. [ 13 ]

HSTS behebt dieses Problem [ 2 ] : §2.4 , indem es den Browser darüber informiert, dass Verbindungen zur Website stets über TLS/SSL erfolgen sollen. Der HSTS-Header kann von einem Angreifer entfernt werden, wenn es sich um den ersten Besuch des Nutzers handelt. Google Chrome , Mozilla Firefox , Internet Explorer und Microsoft Edge versuchen, dieses Problem durch die Bereitstellung einer vordefinierten Liste von HSTS-Websites einzuschränken. [ 14 ] [ 15 ] [ 16 ] Leider ist diese Lösung nicht für alle Websites im Internet geeignet. Siehe dazu die Einschränkungen weiter unten.

HSTS kann auch dazu beitragen, dass die auf Cookies basierenden Anmeldeinformationen für Websites nicht durch weit verbreitete Tools wie Firesheep gestohlen werden . [ 17 ]

Da HSTS zeitlich begrenzt ist, reagiert es empfindlich auf Angriffe, bei denen die Computerzeit des Opfers verändert wird, z. B. durch Verwendung gefälschter NTP- Pakete. [ 18 ]

Einschränkungen

Die ursprüngliche Anfrage bleibt ungeschützt vor aktiven Angriffen, wenn sie ein unsicheres Protokoll wie unverschlüsseltes HTTP verwendet oder wenn die URI für die ursprüngliche Anfrage über einen unsicheren Kanal abgerufen wurde . [ 2 ] : §14.6 Dasselbe gilt für die erste Anfrage nach Ablauf des in der veröffentlichten HSTS-Richtlinie festgelegten Aktivitätszeitraums max-age(Websites sollten je nach Benutzeraktivität und -verhalten einen Zeitraum von mehreren Tagen oder Monaten festlegen).

Lösungen mit Vorladeliste

Google Chrome , Mozilla Firefox und Internet Explorer / Microsoft Edge beheben diese Einschränkung durch die Implementierung einer „HSTS-Vorabliste“, einer Liste bekannter Websites, die HSTS unterstützen. [ 19 ] [ 14 ] [ 15 ] [ 16 ] Diese Liste wird mit dem Browser ausgeliefert, sodass dieser auch für die erste Anfrage an die aufgeführten Websites HTTPS verwendet. Wie bereits erwähnt, können diese Vorablisten nicht das gesamte Web abdecken. Eine mögliche Lösung wäre die Verwendung von DNS- Einträgen zur Deklaration der HSTS-Richtlinie und der sichere Zugriff darauf über DNSSEC , optional mit Zertifikats-Fingerabdrücken zur Gewährleistung der Gültigkeit (was den Einsatz eines validierenden Resolvers erfordert, um Probleme auf der letzten Meile zu vermeiden ). [ 20 ]

Junade Ali hat festgestellt, dass HSTS gegen die Verwendung gefälschter Domains unwirksam ist; durch DNS-basierte Angriffe ist es einem Man-in-the-Middle-Angreifer möglich, Datenverkehr von einer künstlichen Domain abzufangen, die nicht auf der HSTS-Preload-Liste steht, [ 21 ] dies kann durch DNS-Spoofing-Angriffe [ 22 ] oder einfach durch einen Domainnamen ermöglicht werden , der dem echten Domainnamen täuschend ähnlich sieht, wie z. B. www.example.org statt www.example.com .

Selbst mit einer vorinstallierten HSTS-Liste kann HSTS fortgeschrittene Angriffe gegen TLS selbst, wie die von Juliano Rizzo und Thai Duong eingeführten BEAST- oder CRIME- Angriffe, nicht verhindern. Angriffe gegen TLS selbst sind unabhängig von der HSTS-Richtliniendurchsetzung. HSTS schützt auch nicht vor Angriffen auf den Server selbst – wenn dieser kompromittiert wird, liefert er ungehindert beliebige Inhalte über TLS aus.

Datenschutzprobleme

HSTS ermöglicht es, Besucherbrowser nahezu dauerhaft mit wiederherstellbaren Identifikationsdaten ( Supercookies ) zu versehen, die auch im Inkognito -Modus des Browsers erhalten bleiben. Durch die Erstellung einer Webseite, die mehrere HTTP-Anfragen an ausgewählte Domains sendet – beispielsweise zwanzig Browseranfragen an zwanzig verschiedene Domains –, lassen sich theoretisch über eine Million Besucher unterscheiden (2<sup> 20</sup> ), da die resultierenden Anfragen über HTTP bzw. HTTPS eintreffen. Letzteres sind die zuvor über HSTS-Header festgelegten binären „Bits“. [ 23 ]

Browserunterstützung

Einstellungsseite „Sicherheit“ in Chromium 45, die den Status der Sicherheitsrichtlinie für die Domain „en.wikipedia.org“ anzeigt.
Einstellungsseite für HTTPS Strict Transport Security in Chromium 45, die den Status der Sicherheitsrichtlinie für die Domain "en.wikipedia.org" anzeigt.

Bewährte Vorgehensweisen für die Bereitstellung

Je nach konkreter Implementierung gibt es bestimmte Bedrohungen (z. B. Cookie-Injection-Angriffe), die durch die Einhaltung bewährter Verfahren vermieden werden können.

  • HSTS-Hosts sollten ihre HSTS-Richtlinie in ihrer Top-Level-Domain deklarieren. Beispielsweise sollte ein HSTS-Host unter https://sub.example.com auch unter https://example.com mit dem entsprechenden HSTS-Header antworten. Dieser Header sollte die includeSubDomainsHSTS-Direktive spezifizieren. [ 2 ] : §6.1.2
  • Zusätzlich zur HSTS-Implementierung sollte ein Host für https://www.example.com eine Anfrage an eine Ressource von https://example.com senden, um sicherzustellen, dass HSTS für die übergeordnete Domain aktiviert ist und den Benutzer vor potenziellen Cookie-Injection-Angriffen durch einen Man-in-the-Middle-Angreifer schützt. Dieser würde einen Verweis auf die übergeordnete Domain (oder sogar http://nonexistentpeer.example.com) einschleusen, den der Angreifer dann beantworten würde. [ 2 ] : §11.4

Siehe auch

Referenzen

  1. ^ a b c „Strict-Transport-Security“ . MDN Web Docs . Mozilla . Archiviert vom Original am 20. März 2020. Abgerufen am 31. Januar 2018 .
  2. ^ a b c d e f g h i J. Hodges; C. Jackson; A. Barth (November 2012). HTTP Strict Transport Security (HSTS) . Internet Engineering Task Force . doi : 10.17487/RFC6797 . ISSN 2070-1721 . RFC 6797 . Vorgeschlagener Standard.
  3. ^ Keeler, Dana (1. November 2012). „HSTS vorladen“ . Mozilla Security Blog . Abgerufen am 16. Januar 2026 .
  4. ^ „HSTS Preload List Submission“ . hstspreload.org . Abgerufen am 16. Januar 2026 .
  5. ^ "[websec] Protokollaktion: 'HTTP Strict Transport Security (HSTS)' zum vorgeschlagenen Standard (draft-ietf-websec-strict-transport-sec-14.txt)" . 2. Oktober 2012. Archiviert vom Original am 29. Januar 2017. Abgerufen am 2. Oktober 2012 .
  6. ^ Hodges, Jeff (30. Juni 2010). „Re: [HASMAT] "STS" moniker (was: IETF BoF @IETF-78 Maastricht: HASMAT...)“ . Archiviert vom Original am 2. Februar 2017. Abgerufen am 22. Juli 2010 .
  7. ^ „Strenge Transportsicherheit -06“ . 18. Dezember 2009. Archiviert vom Original am 21. Februar 2017. Abgerufen am 23. Dezember 2009 .
  8. ^ „Strenge Transportsicherheit -05“ . 18. September 2009. Archiviert vom Original am 24. Februar 2020. Abgerufen am 19. November 2009 .
  9. ^ „ForceHTTPS: Schutz hochsicherer Websites vor Netzwerkangriffen“ . April 2008. Archiviert vom Original am 28. Februar 2020. Abgerufen am 19. November 2009 .
  10. ^ Hodges, Jeff; Steinguebl, Andy (29. Oktober 2010). „Die Notwendigkeit kohärenter Frameworks für Web-Sicherheitsrichtlinien“ . Archiviert vom Original am 14. August 2017. Abgerufen am 21. November 2012 .
  11. ^ Marlinspike, Moxie (2009). Neue Tricks zur praktischen Überwindung von SSL (PDF) . Black Hat Briefings . Washington, DC. Archiviert (PDF) vom Original am 30. Dezember 2014. Abgerufen am 15. März 2012 .
  12. ^ SSL mit Sslstrip auf YouTube umgehen
  13. ^ Marlinspike, Moxie (Februar 2009). Neue Tricks zur praktischen Überwindung von SSL (PDF) . Black Hat DC 2009.
  14. ^ a b Langley, Adam (8. Juli 2010). „Strenge Transportsicherheit“ . The Chromium Projects . Archiviert vom Original am 1. September 2019. Abgerufen am 22. Juli 2010 .
  15. ^ a b c Keeler, David (1. November 2012). „HSTS vorladen“ . Mozilla Security Blog . Archiviert vom Original am 24. Februar 2020. Abgerufen am 6. Februar 2014 .
  16. ^ a b Bell, Mike; Walp, David (16. Februar 2015). „HTTP Strict Transport Security kommt in den Internet Explorer“ . Archiviert vom Original am 15. November 2015. Abgerufen am 16. Februar 2015 .
  17. ^ Hodges, Jeff (31. Oktober 2010). „Firesheep und HSTS (HTTP Strict Transport Security)“ . Archiviert vom Original am 23. Juni 2016. Abgerufen am 8. März 2011 .
  18. ^ Selvi, Jose (17. Oktober 2014). Umgehen der HTTP Strict Transport Security (PDF) . Black Hat Briefings . Amsterdam. Archiviert (PDF) vom Original am 22. Oktober 2014. Abgerufen am 22. Oktober 2014 .
  19. ^ „Chromium HSTS Preloaded list“ . cs.chromium.org . Archiviert vom Original am 18. Februar 2020. Abgerufen am 10. Juli 2019 .
  20. ^ Butcher, Simon (11. September 2011). „HTTP Strict Transport Security“ . Archiviert vom Original am 26. April 2019. Abgerufen am 27. März 2012 .
  21. ^ Ali, Junade (20. Oktober 2017). „SSL-Stripping durchführen und verhindern: Eine leicht verständliche Einführung“ . Cloudflare Blog . Archiviert vom Original am 14. Dezember 2019. Abgerufen am 7. Dezember 2017 .
  22. ^ Maksutov, AA; Cherepanov, IA; Alekseev, MS (2017). Erkennung und Prävention von DNS-Spoofing-Angriffen . 2017 Siberian Symposium on Data Science and Engineering (SSDSE). S.  84–87 . doi : 10.1109/SSDSE.2017.8071970 . ISBN 978-1-5386-1593-5S2CID  44866769 .​
  23. ^ „Der HSTS-Super-Cookie zwingt Sie zur Wahl: „Datenschutz oder Sicherheit?“ -“ . sophos.com . 2. Februar 2015. Archiviert vom Original am 11. Februar 2020. Abgerufen am 1. Dezember 2015 .
  24. ^ Die Chromium-Entwickler (17. November 2010). „Strenge Transportsicherheit – Die Chromium-Projekte“ . Archiviert vom Original am 20. März 2020. Abgerufen am 17. November 2010 .
  25. ^ Hodges, Jeff (18. September 2009). „Zur Information: Strict Transport Security Specification“ . Archiviert vom Original am 29. Februar 2020. Abgerufen am 19. November 2009 .
  26. ^ Opera Software ASA (23. April 2012). „Unterstützung von Webspezifikationen in Opera Presto 2.10“ . Archiviert vom Original am 20. Juni 2018. Abgerufen am 8. Mai 2012 .
  27. ^ Langley, Adam [@agl__] (20. Dezember 2013). „Bestätigt. Siehe ~/Library/Cookies/HSTS.plist. Enthält Chromium-Preloads ab einem bestimmten Datum und verarbeitet HSTS-Header.“ ( Tweet ). Archiviert vom Original am 9. Mai 2019. Abgerufen am 20. Dezember 2013 – via Twitter .
  28. ^ „HTTP Strict Transport Security wird in Internet Explorer 11 unter Windows 8.1 und Windows 7 eingeführt“ . windows.com . Archiviert vom Original am 27. November 2019. Abgerufen am 12. Juni 2015 .
  29. ^ „Status und Roadmap der Internet Explorer-Webplattform“ . Archiviert vom Original am 29. Juni 2015. Abgerufen am 14. April 2014 .
  30. ^ „Project Spartan und die Windows 10 Januar-Vorschauversion – IEBlog“ . 22. Januar 2015. Archiviert vom Original am 29. November 2019. Abgerufen am 23. Januar 2015 .