Manipulator in the Middle (MITM)
Bei einem Manipulator in the Middle (MITM)-Angriff schaltet sich der Angreifer zwischen zwei Einheiten, die versuchen, miteinander zu kommunizieren.
Im Web findet ein MITM-Angriff in der Regel zwischen dem Browser des Benutzers und dem Server statt und ermöglicht es dem Angreifer, den gesamten über HTTP ausgetauschten Datenverkehr zu sehen und möglicherweise zu modifizieren.
Eine übliche Methode für einen Angreifer, einen MITM-Angriff auszuführen, besteht darin, einen drahtlosen Zugangspunkt an einem öffentlichen Ort, wie einem Café oder einem Flughafen, einzurichten und darauf zu warten, dass ein Opfer sich damit verbindet. Wenn sich ein Opfer verbindet, kann der Angreifer alle zwischen dem Browser des Benutzers und den von ihm besuchten Websites ausgetauschten Daten lesen und modifizieren.
Abwehrmaßnahmen gegen MITM
Die primäre Abwehrmaßnahme gegen MITM besteht darin, Ihre Website über HTTPS (HTTP über TLS) bereitzustellen. HTTPS verhindert, dass ein Angreifer den Datenverkehr lesen oder in vorhersagbarer Weise modifizieren kann.
Sie sollten alle Seiten über HTTPS bereitstellen, nicht nur die Seiten, die Sie für besonders sensibel halten.
Verwenden Sie eine sichere TLS-Konfiguration
Um HTTPS zu unterstützen, benötigt eine Website ein TLS-Zertifikat. Let's Encrypt ist eine weit verbreitete gemeinnützige Zertifizierungsstelle, die kostenlose TLS-Zertifikate ausstellt.
Nicht alle TLS-Konfigurationen sind gleichermaßen sicher: Wenn Sie Ihren eigenen Server konfigurieren müssen, konsultieren Sie eine Ressource wie Mozillas TLS Recommended Configurations.
Moderne Webhosting-Dienste unterstützen HTTPS für Sie, entweder standardmäßig oder durch eine Konfigurationseinstellung. In diesem Fall wird wahrscheinlich der Hosting-Dienst Ihr Zertifikat verwalten und den Server in Ihrem Namen konfigurieren.
Laden Sie Subressourcen über HTTPS
Wenn eine Seite Ressourcen (Skripte, Stylesheets, Schriftarten, Bilder usw.) lädt, sollten diese Ressourcen ebenfalls über HTTPS bereitgestellt werden. Wenn eine Seite über HTTPS geladen wird und versucht, Ressourcen über HTTP zu laden, wird der Browser entweder versuchen, die Ladeanforderung auf HTTPS upzugraden oder die Anforderung blockieren: Dies wird als Mixed Content Blocking bezeichnet.
Wenn es Ihnen nicht möglich ist, Ihren Code zu aktualisieren, um Ressourcen von HTTPS-URLs zu laden (zum Beispiel, weil Ihr HTML archiviert wurde), kann Ihr Server eine Content Security Policy setzen, die die upgrade-insecure-requests-Direktive enthält, und der Browser wird diese Anfragen automatisch zu HTTPS upgraden.
Verwenden Sie HSTS beim Upgraden von HTTP-Anfragen
Auch wenn Ihre Website nur über HTTPS bereitgestellt wird, können Benutzer sie dennoch über HTTP anfragen: zum Beispiel, indem sie http://example.org in die Adressleiste eingeben. Um Ihre Seite in solchen Fällen zugänglich zu machen, können Sie auf HTTP-Anfragen lauschen und eine 301 Moved Permanently-Antwort verwenden, um auf die HTTPS-Version umzuleiten.
Dies gibt jedoch Angreifern die Möglichkeit, den ersten Austausch abzufangen und dann zu verhindern, dass das Upgrade auf HTTPS erfolgt. Dies wird manchmal als SSL-Stripping-Angriff bezeichnet (SSL ist der Vorgänger von TLS).
Um das Risiko dieses Angriffs zu verringern, sollte Ihr Server auch den Strict-Transport-Security HTTP-Antwortheader senden (auch als HSTS bekannt): Dies informiert die Clients darüber, dass Sie möchten, dass sie HTTPS verwenden, und der Browser wird bei jedem nachfolgenden Besuch direkt über HTTPS verbinden, selbst bei Anforderungen, die HTTP-URLs verwenden.
Mit HSTS wird SSL-Stripping verhindert, außer beim ersten Versuch des Browsers, sich mit Ihrer Website zu verbinden (oder, da HSTS ein Ablaufdatum hat, beim ersten Versuch nach Ablauf eines HSTS-Eintrags im Browser). Um Ihre Website auch beim ersten Verbindung oder Ablauf des HSTS-Eintrags zu schützen, führt Chrome eine Liste von Domains namens HSTS Preload List: Wenn sich eine Domain auf dieser Liste befindet, wird Chrome immer die HTTP-Anfrage auf HTTPS upgraden, was effektiv so funktioniert, als hätte der Server bereits den HSTS-Header gesendet. Safari und Firefox zeigen ein ähnliches Verhalten, da sie eine Liste verwenden, die von der Chrome-Liste abgeleitet ist.
Zusammenfassung der Abwehrmaßnahmen
- Stellen Sie alle Seiten und Subressourcen Ihrer Website über HTTPS bereit.
- Wenn Sie HTTP-Anfragen auf HTTPS umleiten möchten, verwenden Sie HSTS und erwägen Sie, Ihre Website zur HSTS-Preload-Liste hinzuzufügen.