0Pricing
Cryptology Academy · Lekcja

Obniżenie wersji HTTP i zagrożenia związane z mieszanymi treściami

Poznają Państwo sposoby wykorzystywania przez atakujących awaryjnego przejścia na HTTP oraz dowiedzą się, dlaczego mieszane treści naruszają gwarancje bezpieczeństwa.

Obniżenie wersji HTTP i zagrożenia związane z mieszanymi treściami to bezpłatna lekcja Cryptology Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cryptology Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Ścisłe bezpieczeństwo transportu HTTP

Nagłówek HTTP Strict Transport Security (HSTS) nakazuje przeglądarkom łączyć się z witryną wyłącznie przez HTTPS przez określony czas. Po jego otrzymaniu przeglądarka odrzuca połączenia HTTP i automatycznie zamienia adresy URL http:// na https://.

Typowy nagłówek HSTS: "Strict-Transport-Security: max-age=31536000; includeSubDomains; preload". Wartość max-age jest podawana w sekundach (31536000 = 1 rok). Po zapisaniu tej informacji w pamięci podręcznej przeglądarka wymusza używanie HTTPS przez rok bez udziału serwera.

HSTS: max-age i includeSubDomains

Parametr max-age określa, jak długo przeglądarka ma wymuszać połączenia wyłącznie przez HTTPS, w sekundach. W przypadku witryn produkcyjnych zalecane są wartości wynoszące co najmniej rok (31536000).

Dyrektywa includeSubDomains rozszerza wymuszanie HSTS na wszystkie subdomeny. Zapobiega to atakom, w których napastnik obniża połączenie z subdomeną do HTTP i wykorzystuje je do kradzieży ciasteczek ustawionych bez flagi Secure w domenie głównej.

Lista wstępnego ładowania HSTS

Przeglądarki zawierają zakodowaną na stałe listę domen, które zawsze wymagają HTTPS, nawet podczas pierwszej wizyty. Lista ta, utrzymywana pod adresem hstspreload.org, obejmuje tysiące najważniejszych witryn.

Wstępne ładowanie eliminuje podatność podczas pierwszej wizyty: bez niego odwiedzający po raz pierwszy mógłby zostać przechwycony, zanim otrzymałby nagłówek HSTS. W przypadku witryn znajdujących się na liście wstępnego ładowania HTTPS jest wymagane już od pierwszego żądania, niezależnie od stanu pamięci podręcznej HSTS.

Atak SSL stripping

SSL stripping, opisany przez Moxie Marlinspike na konferencji Black Hat w 2009 roku, to atak MITM obniżający połączenia HTTPS do HTTP. Napastnik przechwytuje początkowe żądanie HTTP użytkownika, wysyła żądania HTTPS do prawdziwego serwera w imieniu użytkownika, a następnie przekazuje użytkownikowi treść przez HTTP.

Ofiara widzi treść w zwykły sposób, ale przez HTTP. Wszelkie wprowadzone dane uwierzytelniające trafiają do napastnika. Przed wprowadzeniem HSTS atak ten był bardzo skuteczny, ponieważ użytkownicy nie zauważali braku ikony kłódki.

HSTS powstrzymuje SSL stripping

HSTS powstrzymuje SSL stripping, ponieważ przeglądarka odmawia nawiązania połączenia HTTP z domenami objętymi HSTS. Nawet jeśli napastnik spróbuje dostarczyć stronę przez HTTP, przeglądarka po prostu odmówi połączenia i wyświetli błąd.

Wymuszanie HSTS przez przeglądarkę odbywa się przed wysłaniem jakiegokolwiek żądania sieciowego, więc napastnik nie może w nie ingerować. Jedyną pozostałą podatnością jest pierwsza wizyta, zanim przeglądarka otrzyma HSTS; lista wstępnego ładowania ją eliminuje.

Aktywna a pasywna zawartość mieszana

Zawartość mieszana występuje, gdy strona HTTPS wczytuje zasoby przez HTTP. Pasywna zawartość mieszana obejmuje obrazy, dźwięk i wideo wczytywane przez HTTP. Zasoby te nie mogą bezpośrednio modyfikować strony, ale mogą ujawniać informacje o użytkowniku za pośrednictwem nagłówków HTTP i umożliwiać śledzenie.

Aktywna zawartość mieszana obejmuje skrypty, arkusze stylów, elementy iframe i XMLHttpRequests wczytywane przez HTTP. Skrypt HTTP może całkowicie naruszyć bezpieczeństwo strony HTTPS, ponieważ ma pełny dostęp do DOM oraz może odczytywać ciasteczka i dane formularzy.

Blokowanie skryptów mieszanej zawartości przez przeglądarki

Nowoczesne przeglądarki domyślnie blokują aktywną zawartość mieszaną (skrypty, arkusze stylów i elementy iframe przez HTTP), gdy strona nadrzędna korzysta z HTTPS. Wyświetlany jest błąd w konsoli, a zasób nie zostaje wczytany.

Począwszy od Chrome 81 (2020), przeglądarki zaczęły automatycznie zamieniać pasywną zawartość mieszaną na HTTPS. Jeśli wersja HTTPS istnieje, zostaje wczytana. Jeśli nie, zasób zostaje zablokowany.

Mieszana zawartość w narzędziach deweloperskich przeglądarki

Konsola deweloperska przeglądarki wyświetla ostrzeżenia i błędy dotyczące mieszanej zawartości. W Chrome należy otworzyć DevTools, przejść do karty Console i filtrować wyniki według "Mixed Content". Przy każdym zablokowanym zasobie wyświetlany jest niezabezpieczony adres URL, który należy zaktualizować.

Panel Security w DevTools wyświetla pełny przegląd bezpieczeństwa: szczegóły certyfikatu, informacje o połączeniu oraz listę wszystkich niezabezpieczonych zasobów na stronie.

Dyrektywa CSP upgrade-insecure-requests

Dyrektywa Content Security Policy (CSP) "upgrade-insecure-requests" nakazuje przeglądarkom automatycznie zamieniać wszystkie żądania HTTP ze strony na HTTPS. Obsługuje to starszą zawartość zawierającą zapisane na stałe adresy URL HTTP.

W przeciwieństwie do blokowania mieszanej zawartości dyrektywa upgrade-insecure-requests najpierw próbuje pobrać wersję HTTPS. Jest przydatna podczas migracji z HTTP do HTTPS, gdy aktualizacja wszystkich osadzonych adresów URL w starszej zawartości byłaby niepraktyczna.

Wstrzykiwanie reklam przez dostawcę internetu do HTTP

Bez HTTPS dostawcy usług internetowych mogą wstrzykiwać treść do odpowiedzi HTTP. Kilku dostawców usług internetowych przyłapano na wstrzykiwaniu reklam do stron internetowych, które ich nie zawierały, dodawaniu pikseli śledzących lub wstrzykiwaniu stron z ostrzeżeniami, gdy użytkownicy zbliżali się do limitu danych.

Ta forma wstrzykiwania treści jest niemożliwa na stronach HTTPS, ponieważ odpowiedź jest uwierzytelniona i zaszyfrowana. Każda modyfikacja spowodowałaby niepowodzenie weryfikacji TLS MAC, a w rezultacie błąd połączenia zamiast dostarczenia zmodyfikowanej treści.

Dlaczego pierwsza wizyta przez HTTP nadal jest ryzykowna

Zanim przeglądarka otrzyma nagłówek HSTS dla domeny, pierwsza wizyta przez HTTP jest podatna na atak. Napastnik może przechwycić to początkowe żądanie i przeprowadzić SSL stripping bez wywoływania ostrzeżeń przeglądarki.

Ta podatność typu "trust on first use" jest powodem istnienia listy wstępnego ładowania HSTS. Zgłoszenie witryny do tej listy gwarantuje, że przeglądarki będą wymuszać HTTPS dla danej domeny już od pierwszego żądania, całkowicie zamykając okno podatności podczas pierwszej wizyty.

Quiz: HSTS

Sprawdź swoją wiedzę na temat ścisłego bezpieczeństwa transportu HTTP.

Najważniejsze informacje: HSTS i mieszana zawartość

HSTS nakazuje przeglądarkom wymuszać połączenia z domeną wyłącznie przez HTTPS przez określony czas. Lista wstępnego ładowania rozszerza ochronę na pierwsze wizyty, zapisując zasady HSTS na stałe w przeglądarkach.

SSL stripping (Moxie Marlinspike, 2009) obniża HTTPS do HTTP; HSTS go powstrzymuje. Aktywna zawartość mieszana (skrypty HTTP na stronach HTTPS) jest blokowana przez przeglądarki. Dyrektywa CSP upgrade-insecure-requests automatyzuje migrację z HTTP do HTTPS w przypadku starszej zawartości.

Często zadawane pytania

Czy lekcja „Obniżenie wersji HTTP i zagrożenia związane z mieszanymi treściami” jest bezpłatna?

Tak — pełny tekst „Obniżenie wersji HTTP i zagrożenia związane z mieszanymi treściami” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cryptology Academy, przejdź na CoddyKit PRO. Kurs Cryptology Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Obniżenie wersji HTTP i zagrożenia związane z mieszanymi treściami”?

Poznają Państwo sposoby wykorzystywania przez atakujących awaryjnego przejścia na HTTP oraz dowiedzą się, dlaczego mieszane treści naruszają gwarancje bezpieczeństwa. Ćwiczysz Cryptology Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cryptology Academy?

Nie wymagamy żadnego doświadczenia. Cryptology Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Obniżenie wersji HTTP i zagrożenia związane z mieszanymi treściami”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cryptology Academy?

Tak. Każda lekcja Cryptology Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Ikona kłódki: co naprawdę oznacza
  2. Jak witryny uzyskują certyfikaty SSL
  3. Ostrzeżenia dotyczące certyfikatów TLS i właściwe działania
  4. Obniżenie wersji HTTP i zagrożenia związane z mieszanymi treściami
← Powrót do Cryptology Academy