Blog 24/7

clickjacking

TAB. 1Hasłopo angielsku
Po angielskuclickjacking
Którą formą pisaćpo angielsku Polski odpowiednik istnieje, ale w praktyce nikt tak nie pisze. Zostaw angielski, polski trzymaj jako synonim.
Inne formyprzechwytywanie kliknięć · przejęcie kliknięcia
KategoriaAtaki i socjotechnika

Clickjacking to atak, w którym przestępca nakłada na siebie przezroczyste albo nieprzezroczyste warstwy strony, tak by użytkownik kliknął przycisk lub link na innej stronie niż ta, którą widzi [1]. OWASP podaje drugą nazwę tego ataku: UI redress attack [1]. MITRE opisuje go jako słabość CWE-1021, w której aplikacja webowa nie ogranicza albo błędnie ogranicza ramki i warstwy interfejsu należące do innej aplikacji lub domeny [2]. Ofiara wykonuje wtedy działanie ukryte przed jej wzrokiem, zwykle na koncie, na którym jest zalogowana.

Jak działa

Atakujący przygotowuje stronę-przynętę, na przykład z grą albo przyciskiem odbioru nagrody. Pod nią, w niewidocznej ramce iframe, ładuje witrynę docelową, na której ofiara ma aktywną sesję. Przycisk przynęty leży dokładnie nad przyciskiem w ukrytej ramce. Ofiara klika to, co widzi, a przeglądarka przekazuje kliknięcie do ramki. MITRE opisuje skutek wprost: atakujący może skłonić użytkownika do działań zamaskowanych i ukrytych przed jego wzrokiem [2].

Przebieg ataku na zalogowanego użytkownika pokazuje schemat poniżej.

RYS. 1Kliknięcie przechwycone przez ukrytą ramkę

Mechanizm przypomina CSRF (Cross-Site Request Forgery): w obu przypadkach przeglądarka ofiary wysyła żądanie z jej ciasteczkami. Różnica polega na tym, że w clickjackingu żądanie wywołuje sama ofiara prawdziwym kliknięciem na prawdziwej stronie. Dlatego zabezpieczenia oparte na tokenach nonce nie wystarczają, bo formularz w ramce ma poprawny token. Atak jest odmianą socjotechniki: wykorzystuje zaufanie do tego, co widać na ekranie.

Odmiany

Ta sama technika służy do przechwytywania nie tylko kliknięć. OWASP opisuje wariant, w którym odpowiednie połączenie arkuszy stylów, ramek i pól tekstowych skłania ofiarę do wpisania danych logowania do ramki kontrolowanej przez atakującego [1]. MITRE wymienia jako inne nazwy tej samej słabości UI redress attack i tapjacking, czyli wariant na urządzeniach mobilnych, gdzie użytkownik stuka w ekran zamiast klikać [2].

OdmianaCo przechwytujePrzykład
clickjacking klasycznykliknięcie myszą [1]zmiana ustawień w ukrytej ramce [1]
likejackingkliknięcie w serwisie społecznościowym [1]polubienie strony bez wiedzy użytkownika [1]
przechwytywanie klawiszywpisywany tekst [1]hasło wpisane do obcej ramki [1]
tapjackingstuknięcie w ekran telefonu [2]nakładka na okno uprawnień [2]

W WordPressie

Rdzeń WordPressa ma wbudowaną ochronę ekranów, które są najcenniejszym celem. Funkcja send_frame_options_header() wysyła nagłówek X-Frame-Options: SAMEORIGIN oraz nagłówek CSP z dyrektywą frame-ancestors 'self', co ogranicza wyświetlanie strony do ramek z tego samego pochodzenia [5]. Funkcja istnieje od wersji 3.1.3 [5]. W kodzie rdzenia jest podpięta do akcji login_init, czyli do ekranu logowania [6], oraz do akcji admin_init, czyli do panelu administracyjnego [7].

Ochrona rdzenia jest podpięta tylko do tych dwóch akcji [6] [7], więc nie obejmuje stron publicznych ani ekranów, które wtyczka buduje poza panelem. Formularze konta klienta w sklepie, profile użytkowników czy własne strony logowania mogą być osadzane w obcych ramkach, jeśli serwer nie wysyła odpowiedniego nagłówka. Tu pomagają nagłówki bezpieczeństwa HTTP ustawione na serwerze, w pliku konfiguracji, przez zabezpieczenia w .htaccess albo przez wtyczkę bezpieczeństwa.

Skutki zależą od tego, czyje konto zostanie użyte. Kliknięcie administratora w ukrytej ramce może zmienić ustawienia albo nadać komuś wyższą rolę, dlatego znaczenie mają role i uprawnienia użytkowników. Kliknięcie klienta sklepu może zmienić adres dostawy lub dane konta, co otwiera drogę do przejęcia konta.

Zagrożenia i skutki

MITRE zaznacza, że skutek zależy od aplikacji; w serwisie społecznościowym atak może na przykład zmienić ustawienia prywatności bez wiedzy użytkownika [2]. OWASP opisuje kilka znanych przypadków [1]:

  • strona ustawień wtyczki Adobe Flash załadowana w niewidocznej ramce, przez którą ofiary zmieniały ustawienia zabezpieczeń Flasha [1];
  • robak w serwisie Twitter, który skłaniał użytkowników do kliknięcia przycisku udostępniającego adres złośliwej strony i rozprzestrzenił się masowo [1];
  • likejacking w serwisie Facebook, czyli nakłanianie zalogowanych użytkowników do polubienia stron, linków i grup [1].

Sam clickjacking rzadko daje atakującemu pełną kontrolę nad serwisem. Bywa jednak ogniwem łańcucha: jedno kliknięcie może zatwierdzić zmianę, która dalej ułatwia XSS (Cross-Site Scripting) albo inny atak.

Jak się bronić

Podstawą jest zakazanie osadzania strony w obcych ramkach nagłówkiem odpowiedzi HTTP. OWASP uważa nagłówki za skuteczniejsze od obrony w JavaScripcie [3].

  • CSP frame-ancestors. Dyrektywa CSP (Content Security Policy) pozwala wskazać wiele dozwolonych domen zwykłą składnią Content Security Policy [3]. Wartość 'none' blokuje każde osadzenie, a 'self' pozwala tylko na ramki z tej samej witryny [3].
  • X-Frame-Options. MDN opisuje nagłówek jako sposób na uniknięcie clickjackingu przez zapewnienie, że treść nie jest osadzana w innych witrynach [4]. Wartość DENY blokuje każde osadzenie, a SAMEORIGIN pozwala na nie tylko wtedy, gdy wszystkie ramki nadrzędne mają to samo pochodzenie [4]. Dyrektywa ALLOW-FROM jest przestarzała, a nowoczesne przeglądarki, które ją napotkają, ignorują cały nagłówek [4].
  • Ciasteczka SameSite. Ciasteczka z atrybutem SameSite ustawionym na Strict albo Lax nie są dołączane do żądań strony załadowanej w ramce, co utrudnia clickjacking na zalogowanego użytkownika [3]. Opis atrybutów zawiera hasło flagi ciasteczek.
  • Skrypty frame-busting. Stare skrypty wyrywające stronę z ramki mają znane obejścia: podwójne osadzanie, obsługę zdarzenia onBeforeUnload i atrybut sandbox [3]. MITRE także wskazuje ich ograniczenia wobec zagnieżdżonych ramek [2].

Przykładowa konfiguracja serwera Apache:

Header always set X-Frame-Options "SAMEORIGIN"
Header always set Content-Security-Policy "frame-ancestors 'self'"

Jeśli witryna ma już politykę CSP, dyrektywę frame-ancestors dopisuje się do istniejącej polityki zamiast wysyłać drugi nagłówek.

Historia i przykłady

Brak ochrony przed clickjackingiem wciąż pojawia się w komunikatach o podatnościach. CERT Polska 2 marca 2026 roku opublikował informację o ośmiu podatnościach w oprogramowaniu CGM CLININET i CGM NETRAAD [8]. Według komunikatu aplikacja CGM CLININET nie implementowała żadnych mechanizmów zapobiegających clickjackingowi: nie wykryto nagłówków bezpieczeństwa HTTP ani zabezpieczeń przed osadzaniem w ramkach [8]. Ta sama publikacja opisuje między innymi SQL injection i brak uwierzytelnienia w tych systemach [8], każdy błąd z własnym numerem CVE.

TAB. 2

Przypisy

8
  1. [1] Clickjacking · OWASP
  2. [2] CWE-1021: Improper Restriction of Rendered UI Layers or Frames · MITRE
  3. [3] Clickjacking Defense Cheat Sheet · OWASP Cheat Sheet Series
  4. [4] X-Frame-Options header · MDN Web Docs
  5. [5] send_frame_options_header() — Code Reference · WordPress.org
  6. [6] wp-includes/default-filters.php (wordpress-develop) · WordPress.org (GitHub)
  7. [7] wp-admin/includes/admin-filters.php (wordpress-develop) · WordPress.org (GitHub)
  8. [8] Podatności w oprogramowaniu CGM CLININET i CGM NETRAAD (CVE-2025-10350 i inne) · CERT Polska
TAB. 3

Hasła w tym artykule

14
TAB. 4

Linkują tutaj

2

Wszystkie kategorie → · Hasło w słowniku →

Blog 24/7
05.11CISA i FBI wzywają do zabezpieczenia sterowników chłodzenia po atakach w Europietherecord.media05.11Midnight Blizzard atakowała iPhone'y i Androidy przez zainfekowane strony w Europie i USAsecurityweek.com05.11APT29 kradła dane z iPhone'ów i Androidów przez przejęte i podrobione stronytherecord.media05.11Grupa APT29 przejęła skrypt Plerdy i atakowała niezałatane iPhone'y i Androidythehackernews.com05.11Microsoft wykrył 7,3 mld wiadomości phishingowych w III kwartale 2026microsoft.com05.11DigiCert ujawnia wyciek danych klientów i skanów dokumentów tożsamościbleepingcomputer.com05.11CWPdoor podmienia serwer cwpsrv w Control Web Panel i otwiera tylne wejście do Linuksableepingcomputer.com05.11Brytyjskie NCSC ostrzega, że narzędzia AI zwiększyły liczbę wykrywanych luk zero-daythehackernews.com05.11Skaner RootEvidence sprawdza starą lukę w Cisco IOS i dodaje nagłówki Opt-Outisc.sans.edu05.11Włamanie do portalu grantowego Norad, zagrożone dane 20 614 użytkownikówhelpnetsecurity.com