Mieszana zawartość problemy pojawiają się, gdy witryny internetowe dostarczają swoje strony za pośrednictwem protokołu HTTPS, ale zezwalają na dostarczanie niektórych zasobów w postaci zwykłego tekstu. Aktywny atakujący nie może nic zrobić z zaszyfrowanym ruchem, ale mieszanie się z tekstem jawnym może skutkować atakami, od phishingu w najlepszym przypadku do pełnego kompromisu przeglądarki w najgorszym przypadku. Wystarczy jeden odkryty skrypt: atakujący może przejąć połączenie i wstrzyknąć do niego dowolne ładunki ataku.
często mówimy o innych aspektach SSL / TLS, ale mieszana treść jest prawdopodobnie najłatwiejszym sposobem na całkowite zepsucie szyfrowania witryny internetowej.
w pierwszych dniach istnienia sieci wszystkie mieszane treści były dozwolone; przeglądarki internetowe oczekiwały, że operatorzy witryn przemyślą konsekwencje mieszania treści. To oczywiście nie przyniosło Wielkiego bezpieczeństwa. Operatorzy witryn robili wszystko, co było im potrzebne, aby wykonać swoją pracę i obniżyć koszty. Dopiero w ostatnich latach producenci przeglądarek zaczęli zwracać uwagę i ograniczać mieszaną zawartość.
zawartość mieszana w nowoczesnych przeglądarkach
obecnie prawie wszystkie główne przeglądarki dzielą zawartość mieszaną na dwie kategorie: pasywną dla obrazów, filmów i dźwięku; oraz aktywną dla bardziej niebezpiecznych zasobów, takich jak skrypty. Domyślnie zezwalają na pasywną zawartość mieszaną, ale odrzucają zawartość aktywną. Jest to wyraźnie kompromis między łamaniem sieci a rozsądnym bezpieczeństwem.
Internet Explorer jest liderem w bezpiecznej obsłudze mieszanych treści. Już w Internet Explorer 5 (zgodnie z tym postem) mieli wykrywanie i zapobieganie niebezpiecznej zawartości domyślnie. Chrome zaczął domyślnie blokować w 2011 roku, a Firefox w 2013 roku. Jednak domyślna przeglądarka Android i Safari nadal zezwalają na wszystkie mieszane treści bez żadnych ograniczeń (i z prawie nieistniejącymi ostrzeżeniami).
oto wyniki moich ostatnich testów jakie niebezpieczne treści są domyślnie dozwolone:
przeglądarka | obrazy | CSS | Skrypty | XHR | WebSockets | Ramki |
---|---|---|---|---|---|---|
Android browser 4.4.x | tak | tak | tak | tak | tak | |
Chrome 33 | tak | Nie | Nie | tak | tak | Nie |
Firefox 28 | tak | Nie | Nie | Nie | Nie | |
Internet Explorer 11 | tak | Nie | Nie | Nie | Nie | |
Safari 7 | tak | tak | tak | tak | tak | tak |
są one głównie oczekiwane, ale jest niespodzianka z Chrome, który blokuje aktywną zawartość strony, ale nadal pozwala na zwykłe połączenia XMLHttpRequest i WebSocket.
warto wspomnieć, że tabela nie mówi nam wszystkiego. Na przykład przeglądarki mają tendencję do kontrolowania tego, co robią ich wtyczki. Co więcej, niektóre komponenty (np. Flash lub Java) są pełnymi środowiskami sam w sobie, a niewiele przeglądarek może zrobić, aby egzekwować zabezpieczenia.
testowanie obsługi mieszanych treści W SSL Labs
aby ułatwić ocenę obsługi tego problemu przez przeglądarkę, niedawno rozszerzyłem Test klienta SSL Labs, aby zbadać obsługę mieszanych treści. Podczas odwiedzania strony przeglądarka użytkownika jest testowana, a otrzymasz wyniki podobne do tych:
rozpowszechnienie zawartości mieszanej
anegdotycznie bardzo często występuje zawartość mieszana. W Qualys zbadaliśmy ten problem w 2011 roku, wraz z kilkoma innymi problemami na poziomie aplikacji, które skutkują pełnym złamaniem szyfrowania w aplikacjach internetowych. Przeanalizowaliśmy strony główne około 250 000 bezpiecznych witryn internetowych z listy Alexa top 1 million i ustaliliśmy, że 22,41% z nich korzystało z niezabezpieczonych treści. Jeśli obrazy są wykluczone, liczba ta spada do 18,71%.
bardziej szczegółowe badanie witryn 18,526 wyodrębnionych z Alexa top 100,000 miało miejsce w 2013: Niebezpieczna mieszanka: wielkoskalowa analiza witryn o mieszanej treści (Chen et al.). Dla każdej witryny przeanalizowano do 200 bezpiecznych stron, uzyskując łącznie 481 656 stron. Ich wyniki wskazują, że do 43% witryn internetowych ma problemy z mieszanymi treściami.
Łagodzenie
najlepszą ochroną przed problemami z mieszanymi treściami jest po prostu brak tego typu problemów w kodzie. Ale to łatwo powiedzieć niż zrobić; istnieje wiele sposobów, w których mieszane treści mogą się wkradać. Kiedy to zawiedzie, istnieją dwie technologie, które mogą się przydać:
- http Strict Transport Security (HSTS) to mechanizm wymuszający bezpieczne pobieranie zasobów, nawet w obliczu błędów użytkownika (próby uzyskania dostępu do witryny sieci web na porcie 80) i błędów implementacji (twoi Programiści umieszczają niebezpieczne łącze do bezpiecznej strony). HSTS jest jedną z najlepszych rzeczy, które przydarzyły się TLS niedawno, ale działa tylko na nazwach hostów, które kontrolujesz.
- Polityka Bezpieczeństwa treści (CSP) może być używana do blokowania niezabezpieczonego pobierania zasobów z witryn internetowych stron trzecich. Posiada również wiele innych przydatnych funkcji do rozwiązywania innych problemów związanych z bezpieczeństwem aplikacji, na przykład XSS.