Niedoceniane zabezpieczenie stron WWW. Dlaczego X-Frame-Options i CSP wciąż mają znaczenie?
Nowe badanie pokazuje, jak zmieniło się stosowanie nagłówków chroniących przed oszustwami z overlay phishingiem. Wzrost jest zauważalny, ale nadal sporo witryn pozostaje bez ochrony.
Ataki phishingowe polegające na nakładaniu fałszywych formularzy logowania na legalne strony wciąż są skuteczne. Można im jednak łatwo przeciwdziałać za pomocą mechanizmu, który od lat jest dostępny dla każdego administratora – nagłówków HTTP zabraniających osadzania strony w ramce iframe. Najnowsze badanie przeprowadzone przez SANS Internet Storm Center pokazuje, jak w ciągu ostatnich trzech lat zmieniło się podejście do stosowania nagłówków X-Frame-Options i dyrektywy frame-ancestors w ramach Content Security Policy (CSP). Wyniki dają do myślenia: mimo wyraźnego postępu, wiele domen wciąż nie jest odpowiednio zabezpieczonych.
Czym są nagłówki ochrony przed framingiem i dlaczego są ważne?
Jak wyjaśnia w swoim wpisie Jan Kopriva z SANS ISC, oba nagłówki służą temu samemu celowi: informują przeglądarkę, czy treść danej strony może być wyświetlana w ramce iframe na innej stronie. Gdy taki nagłówek nie jest ustawiony, każda strona może dowolnie załadować witrynę w ramce. Atakujący wykorzystują to w technice zwanej „overlay phishingiem” – tworzą złośliwą witrynę, która ładuje oryginalną, legalną stronę w pełnoekranowej ramce, a na niej nakłada fałszywy formularz logowania. Ofiara widzi znajomą stronę, a jedynym śladem oszustwa jest komunikat przeglądarki o problemie z załadowaniem ramki – o ile strona rzeczywiście blokuje framing.
Ustawienie nagłówka X-Frame-Options (z wartością DENY lub SAMEORIGIN) lub dyrektywy frame-ancestors w CSP skutecznie uniemożliwia takie oszustwo. Przeglądarka nie załaduje wtedy strony w iframe, a użytkownik zobaczy pustą ramkę lub komunikat o błędzie. Jak tłumaczy Kopriva: „Ustawienie któregokolwiek z tych nagłówków na legalnej stronie skutecznie neutralizuje to podejście, ponieważ przeglądarka odmówi załadowania strony w iframe i wyświetli fałszywy formularz na tle komunikatu, że strona nie może zostać załadowana – co powinno sprawić, że kradzież danych logowania będzie wyglądać mniej wiarygodnie dla większości osób”.
Jak zmieniła się powszechność ochrony w ciągu trzech lat?
Kopriva powtórzył analizę, którą przeprowadził po raz pierwszy w 2023 roku. Przeanalizował milion najpopularniejszych domen z listy Tranco, sprawdzając, ile z nich wysyła nagłówki ochronne. Wyniki pokazują, że w grupie 1000 najczęściej odwiedzanych domen odsetek tych z jakąkolwiek ochroną przed framingiem spadł – z 27,1% w 2023 do 23,1% w 2026. Ekspert tłumaczy to jednak zmianą składu listy: „prawdopodobnie odzwierciedla to fakt, że skład listy 1k zmienił się dość znacząco w ciągu trzech lat, a domeny niektórych organizacji dbających o bezpieczeństwo wypadły z czołówki, zastąpione przez domeny, które nie serwują treści WWW w tradycyjnym sensie (punkty końcowe CDN, domeny infrastrukturalne, backendy API) i dlatego w ogóle nie wysyłają nagłówków bezpieczeństwa”.
Znacznie bardziej optymistyczne są dane dla szerszych zbiorów. W grupie 100 tysięcy najpopularniejszych domen odsetek chronionych wzrósł z 20,6% do 37,4%, a w pełnym milionie z 14,4% do 29,7%. To podwojenie wskaźnika w ciągu trzech lat. Co więcej, przyrost ten jest w dużej mierze napędzany przez nowszą i bardziej elastyczną dyrektywę frame-ancestors w CSP. W grupie 100k jej użycie wzrosło z 3,8% do 7,9%, a w grupie miliona z 1,9% do 7,1%. To bardzo pozytywny trend.
Co oznaczają te wyniki dla firm i administratorów?
Mimo że dane pokazują wyraźny postęp, wciąż około 70% popularnych stron WWW nie ma ustawionej żadnej ochrony przed framingiem. Oznacza to, że mogą być one wykorzystane jako tło w ataku overlay phishingowym. Dotyczy to nie tylko dużych firm, ale także mniejszych serwisów, które mogą być celem atakujących szukających łatwych ofiar.
Administratorzy powinni traktować dodanie nagłówka X-Frame-Options lub – co lepsze – dyrektywy frame-ancestors jako standardowy element konfiguracji serwera WWW. Dyrektywa CSP jest rekomendowana przez producentów przeglądarek, ponieważ oferuje większą elastyczność i pozwala na przykład wskazać konkretne domeny uprawnione do osadzania strony. Dla większości zastosowań wystarczy wartość ’self’ (osadzanie tylko przez własne strony) lub ’none’ (całkowity zakaz).
Warto również pamiętać, że wysyłanie obu nagłówków jednocześnie jest bezpieczne i zalecane ze względu na kompatybilność wsteczną. W nowoczesnych przeglądarkach CSP frame-ancestors ma priorytet nad X-Frame-Options, ale starsze przeglądarki nadal mogą polegać na tym drugim.
Praktyczne kroki do wdrożenia ochrony
Konfiguracja jest prosta i dostępna dla każdego, kto zarządza serwerem WWW (Apache, Nginx, IIS). W pliku konfiguracyjnym wystarczy dodać nagłówek:
- Apache:
Header always set X-Frame-Options "SAMEORIGIN" - Nginx:
add_header X-Frame-Options SAMEORIGIN always; - CSP frame-ancestors:
Content-Security-Policy: frame-ancestors 'self';
Po zmianie warto przetestować zachowanie strony za pomocą narzędzi deweloperskich w przeglądarce lub skorzystać z zewnętrznych skanerów, które sprawdzą, czy nagłówki są prawidłowo wysyłane. Regularne audyty konfiguracji bezpieczeństwa powinny obejmować również ten element.
Podsumowując, trzyletnie dane SANS ISC pokazują, że – poza wąską czołówką – branża WWW kieruje się we właściwym kierunku, ale tempo zmian mogłoby być szybsze. Każda strona, która nie blokuje osadzania w ramkach, jest potencjalnym narzędziem w rękach phisherów. Wdrożenie nagłówków ochronnych to jeden z najprostszych i najtańszych sposobów na ograniczenie tego ryzyka.


