Haker w kapturze pracujący przy netbooku w jasnym pokoju
Źródło: Pexels | Autor: Nikita Belokhonov
Rate this post

Czym jest malvertising i dlaczego zainfekowane reklamy są tak groźne

Malvertising (malicious advertising) to technika rozprzestrzeniania złośliwego oprogramowania za pomocą reklam online. Nie chodzi tylko o podejrzane banery na szemranych stronach. Atakujący coraz częściej wykorzystują legalne sieci reklamowe, serwisy informacyjne, portale społecznościowe i popularne aplikacje webowe. Efekt: użytkownik może zostać zainfekowany, mimo że nie odwiedza „dziwnych” stron i nie klika świadomie w linki z phishingu.

W praktyce malvertising polega na wstrzyknięciu złośliwego kodu (np. JavaScript, iframe, piksel śledzący) do kreacji reklamowej lub do samego systemu adserwera. Reklama wygląda jak każda inna, jest emitowana w normalnym miejscu, ale po stronie przeglądarki uruchamiane są dodatkowe, ukryte operacje. Czasem wystarczy samo wyświetlenie reklamy, bez kliknięcia, aby eksploit (fragment złośliwego kodu wykorzystujący lukę) rozpoczął aktywność.

Groźba jest podwójna. Z jednej strony malvertising może zainfekować system ransomware, trojanem bankowym czy spyware. Z drugiej – zainfekowane reklamy są wykorzystywane do śledzenia użytkowników, budowania profili behawioralnych i wykradania danych z formularzy, nawet jeśli nie ma klasycznej „infekcji” na poziomie plików. Dlatego blokery reklam i odpowiednio skonfigurowana przeglądarka stają się realną warstwą obrony, a nie tylko sposobem na „mniej banerów”.

Drewniane klocki z napisem phishing nawiązujące do cyberbezpieczeństwa
Źródło: Pexels | Autor: Markus Winkler

Jak działa malvertising od strony technicznej

Łańcuch reklamowy i miejsce na złośliwy kod

System reklamowy online działa w oparciu o łańcuch podmiotów: wydawca (strona z miejscem reklamowym), sieć reklamowa, platformy typu SSP/ADX (systemy wymiany reklam), reklamodawca i ewentualne pośrednie DSP (platformy zakupowe). Każdy z tych elementów może zostać nadużyty. Im dłuższy łańcuch, tym więcej punktów, w których można wstrzyknąć kod malvertisingu.

Typowe miejsce ataku to:

  • Kreatyw reklamowy – plik HTML5, skrypt JS, tag reklamowy zawierający iframe lub przekierowanie do zewnętrznego zasobu.
  • Tagi zewnętrzne – np. śledzące piksele lub tagi pomiarowe, które same pobierają kolejne skrypty (łańcuch „script-in-script”).
  • System adserwera – naruszenie bezpieczeństwa serwera reklamy, przez co wszystkie emitowane kampanie są automatycznie „doprawiane” złośliwym kodem.

Gdy przeglądarka ładuje stronę, renderuje też slot reklamowy. Kod reklamy może wykonywać dodatkowe żądania HTTP, osadzać kolejne iframy lub modyfikować DOM strony. Jeśli w którymś z tych kroków atakujący umieści exploit lub skrypt śledzący, malvertising zaczyna działać.

Drive-by download i exploit kity w reklamach

Jedna z najniebezpieczniejszych form malvertisingu to tzw. drive-by download, czyli sytuacja, w której do zainfekowania systemu dochodzi bez świadomego pobierania pliku przez użytkownika. Zamiast „kliknij i pobierz”, wystarcza wizyta na stronie z odpowiednio spreparowaną reklamą.

Mechanizm wygląda zwykle tak:

  1. Reklama zawiera ukryty iframe lub skrypt, który łączy się z serwerem kontrolowanym przez atakującego.
  2. Serwer sprawdza konfigurację przeglądarki: wersję, zainstalowane wtyczki, system operacyjny (fingerprinting).
  3. Jeśli wykryta zostanie podatność, serwer serwuje odpowiedni exploit kit – zestaw kodu wykorzystujący konkretną lukę.
  4. Exploit uruchamia pobranie i wykonanie złośliwego pliku lub złośliwego skryptu w przeglądarce.

Exploit kit potrafi wykorzystać stare wersje Flash, podatne wtyczki PDF, luki w silniku przeglądarki, a nawet błędy w czcionkach czy kodekach multimedialnych. Dlatego aktualizacje przeglądarki i systemu są tak istotne. Bloker reklam, który zablokuje iframe lub adresy serwerów z exploit kitami, odcina ten kanał ataku na samym początku.

Malvertising bez klasycznej infekcji: śledzenie i kradzież danych

Nie każdy incydent malvertisingu kończy się instalacją pliku EXE. Równie groźne są kampanie, które:

  • rejestrują każde wciśnięcie klawisza w formularzu (keylogging w JS),
  • odczytują dane z lokalnego storage i ciasteczek,
  • podmieniają zawartość formularzy lub numery rachunków bankowych w tle,
  • przekierowują użytkownika na fałszywe strony logowania (pharming).

Takie ataki są ciche, cięższe do wykrycia przez antywirusy, bo nie zapisują klasycznych plików w systemie. Działają w obrębie przeglądarki i sesji HTTP. W takim scenariuszu ustawienia prywatności, polityka ciasteczek i separacja stron (np. przez różne profile przeglądarki) mają realny wpływ na to, ile z tych danych faktycznie można wyciągnąć z ruchu reklamowego.

Smartfon z otwartą aplikacją Instagram leżący na drewnianym stole
Źródło: Pexels | Autor: indra projects

Rodzaje zainfekowanych reklam i rzeczywiste wektory ataku

Banery i kreacje HTML5 z osadzonym skryptem

Dzisiejsze reklamy rzadko są zwykłym obrazkiem. Większość to interaktywne kreacje HTML5, które zawierają JavaScript, animacje, komunikację z zewnętrznymi serwerami. To wygodne dla marketingu, ale idealne dla atakujących.

Typowe sztuczki w takich kreacjach to:

  • ukryte żądania XHR/fetch do domen kontrolowanych przez atakującego,
  • kaskadowe ładowanie kolejnych plików JS (chain loading),
  • dynamiczne tworzenie iframe z URL-em trudno wykrywalnym w statycznej analizie,
  • wstrzykiwanie kodu do głównego DOM-u strony (np. modyfikacja formularzy).

Blokery reklam zwykle filtrują całe domeny z list znanych dostawców reklam oraz konkretne patterny URL. Użytkownik, który korzysta z takich filtrów, po prostu nie ładuje dużej części tej logiki do swojej przeglądarki, dzięki czemu wektor ataku się zamyka.

Reklamy typu pop-up, pop-under i „forced redirect”

Zainfekowane reklamy bardzo często stosują agresywne techniki wyświetlania:

  • pop-up – nowe okno lub karta po kliknięciu/akcji użytkownika,
  • pop-under – okno chowające się za aktualną kartą, zauważalne dopiero później,
  • forced redirect – wymuszone przekierowanie bez kliknięcia, np. w momencie przewijania strony.

W takich oknach ląduje najczęściej fałszywy komunikat antywirusa, „wygrana” w konkursie, strona z nielegalnym streamingiem lub landing page phishingowy. Nawet jeśli użytkownik w porę zamknie okno, kod JS może zdążyć zainicjować pobranie pliku lub odczyt danych sesji.

Nowoczesne przeglądarki mają wbudowane mechanizmy blokowania niechcianych wyskakujących okienek, ale często są one omijane (np. poprzez otwarcie okna w trakcie dozwolonego zdarzenia użytkownika – kliknięcia w pozornie nieszkodliwy element). Rozszerzenia typu uBlock Origin pozwalają wycinać całe klasy skryptów odpowiedzialnych za te działania, a także blokować domeny znane z agresywnych przekierowań.

Malvertising w wideo i reklamach natywnych

Reklamy wideo (np. prerolle przed filmem) i reklamowe widgety natywne (np. „polecane artykuły”) też są wykorzystywane w malvertisingu. Wideo często serwowane jest z innych CDN-ów niż treść strony, przez co użytkownik ufa „markowemu” serwisowi, ale tak naprawdę komunikuje się z kilkoma zewnętrznymi dostawcami treści.

Możliwe scenariusze:

  • złośliwy skrypt osadzony w odtwarzaczu wideo (np. nieaktualny player JavaScript),
  • złośliwe overlaye (nakładki) pojawiające się na wideo z przyciskiem „Download”,
  • reklamy natywne kierujące na strony z exploit kitami, udające normalne artykuły.

Blokery reklam często stosują osobne filtry do reklam wideo (np. reguły kosmetyczne dla playerów), a przeglądarki mogą wymuszać dodatkowe ograniczenia dla treści zewnętrznych (np. sandbox iframe, blokowanie autoplay). Odpowiednia konfiguracja tych funkcji drastycznie ogranicza ryzyko, że malvertising ukryje się w wideo.

Miniwózek z kosmetykami i metkami wyprzedaży na czerwonym tle
Źródło: Pexels | Autor: www.kaboompics.com

Jak blokery reklam realnie chronią przed malvertisingiem

Filtrowanie żądań sieci i blokowanie całych domen

Podstawowy mechanizm każdego blokera reklam to przerywanie żądań HTTP/HTTPS na podstawie list filtrów. Lista zawiera wzorce domen (np. adserver.example.com), ścieżek URL (np. /ads/track.js) i reguł opartych o parametry żądania. Z poziomu technicznego adblocker działa jak mini-firewall w przeglądarce.

Jeśli domena była powiązana z kampaniami malvertisingowymi, jest dodawana do list filtrów (np. EasyList, EasyPrivacy, polskie listy). Po dodaniu takiej reguły każde kolejne żądanie do tej domeny zostaje po prostu zablokowane. Reklama się nie wyświetla, a złośliwy kod nie ma jak pobrać się do przeglądarki.

To podejście jest bardzo skuteczne wobec ataków masowych, które reuse’ują te same infrastrukturę serwerów. Atakujący próbują co prawda rotować domeny i adresy IP, ale ekosystem list filtrów reaguje na to zwykle dość szybko. Użytkownik, który regularnie aktualizuje listy, porusza się w sieci z „mapą” znanych niebezpiecznych źródeł.

Filtry kosmetyczne: nie tylko wygoda, ale też bezpieczeństwo

Filtry kosmetyczne (tzw. cosmetic filters) wycinają elementy na poziomie HTML/CSS: ukrywają banery, moduły „sponsorowane” czy sloty reklamowe. Na pierwszy rzut oka to tylko estetyka, ale ich działanie może mieć także aspekt bezpieczeństwa.

Usunięcie elementu z DOM (np. całego kontenera reklamy) często powoduje, że kod wewnątrz nie ma jak się uruchomić lub przestaje mieć dostęp do ważnych elementów strony, np. formularzy logowania. Dodatkowo filtry kosmetyczne pomagają „odciąć” skrypty od interakcji użytkownika (brak miejsca na popup, brak overlay, brak fałszywych przycisków Call To Action).

W praktyce kombinacja blokowania żądań sieci i filtrów kosmetycznych sprawia, że duża część potencjalnego malvertisingu nigdy nie dociera do przeglądarki. Nawet jeśli jakaś resztka kodu prześlizgnie się przez filtry, zwykle nie ma gdzie się wyświetlić ani jak zebrać sensownych danych.

Ochrona prywatności: mniej śledzenia, mniej wektorów ataku

Malvertising jest blisko spokrewniony z masowym śledzeniem użytkowników. Te same mechanizmy, które działają w klasycznych systemach adtech (trackery, fingerprinting, synchronizacja ID), są wykorzystywane przez atakujących do identyfikowania ofiar i optymalizowania ataków. Bloker reklam, który blokuje trackery, ogranicza także:

  • budowanie szczegółowych profili behawioralnych,
  • cross-site tracking (śledzenie między wieloma stronami),
  • ładowanie ciasteczek z domen trzecich,
  • fingerprinting przeglądarki poprzez skrypty analityczne.

Im mniej informacji udostępnia o sobie przeglądarka, tym trudniej dobrać do niej skuteczny exploit kit. Atakujący mniej „widzą” i muszą uciekać się do ogólnych, głośniejszych ataków, które z kolei łatwiej wychwycić przez antywirusy czy systemy IDS/IPS. Redukcja powierzchni śledzenia to więc nie tylko prywatność, ale też zmniejszenie ilości precyzyjnych wektorów ataku.

Najlepsze blokery reklam i rozszerzenia ochronne – praktyczne zestawienie

Porównanie popularnych adblockerów pod kątem bezpieczeństwa

Poniższa tabela zestawia kilka popularnych rozwiązań pod kątem funkcji istotnych przy obronie przed malvertisingiem.

NarzędzieTypMożliwość własnych filtrówBlokowanie trackerówZaawansowana ochrona (np. JS, frame)
uBlock OriginRozszerzenie przeglądarkiTak (reguły zaawansowane)Tak (wiele list prywatności)Tak (dynamiczne reguły, blokada skryptów)
AdGuard (rozszerzenie)Rozszerzenie przeglądarkiTakTakCzęściowo (zależnie od przeglądarki)
AdGuard (aplikacja systemowa)Filtr połączeń na poziomie systemuTakTakTak (DNS, HTTPS filtering)
AdBlock PlusRozszerzenie przeglądarkiTakTakPodstawowa (głównie filtry URL)
Pi-holeFiltr DNS w sieci lokalnejTak (listy domen)Tak (blokada domen trackingowych)Zależnie od konfiguracji (tylko DNS)
Blokery wbudowane w przeglądarki (Brave, Safari, Firefox)Funkcja przeglądarkiOgraniczona (reguły wbudowane, częściowo rozszerzalne)Tak (intensywność zależna od trybu ochrony)Częściowo (izolacja stron, blokowanie fingerprintingu)

uBlock Origin i AdGuard dają największą kontrolę nad tym, co dokładnie jest filtrowane. Pozwalają nie tylko korzystać z gotowych list, ale też tworzyć własne reguły sieciowe (blokowanie po domenie, ścieżce, parametrach) oraz dynamiczne polityki dla skryptów i ramek. W kontekście malvertisingu oznacza to możliwość „dokręcenia śruby” na witrynach o podwyższonym ryzyku (np. darmowe streamingi, warez, hostingi plików).

Pi-hole i podobne rozwiązania DNS dobrze sprawdzają się jako filtr pierwszej linii dla całej sieci domowej, jednak nie widzą pełnego kontekstu przeglądarki: nie potrafią np. zablokować pojedynczego skryptu na stronie, a jedynie całą domenę. Z kolei wbudowane blokery (Brave, Safari, Firefox) są wygodne i lekkie, ale mniej elastyczne – zwykle nie zastąpią zaawansowanego adblockera u użytkownika, który rzeczywiście chce zminimalizować ekspozycję na zainfekowane reklamy.

Dodatkowe rozszerzenia wzmacniające ochronę

Sam adblocker to solidna baza, ale zestaw kilku lekkich rozszerzeń potrafi wyraźnie utrudnić życie autorom malvertisingu. Chodzi o narzędzia, które kontrolują JavaScript, iframy i uprawnienia domen.

Praktyczne przykłady:

  • NoScript / uMatrix (lub tryb „zaawansowany” uBlocka) – whitelistowe podejście do skryptów i ramek, domyślnie blokują JS z domen trzecich. Skutecznie ucina większość exploit kitów ładowanych z zewnętrznych adserwerów.
  • Decentraleyes / LocalCDN – podmienia zasoby z popularnych CDN (np. biblioteki JS) na lokalne kopie, ograniczając śledzenie i wstrzykiwanie złośliwego kodu przez przejęte CDN-y lub man-in-the-middle.
  • Rozszerzenia do zarządzania ciasteczkami i storage – automatyczne kasowanie lub izolacja ciasteczek (np. po zamknięciu karty) utrudnia śledzenie i powiązanie sesji z kampaniami malvertisingowymi.

Tego typu narzędzia są bardziej „geekowe” – wymagają chwili na konfigurację i zrozumienie, co jest czym. W zamian oferują sandbox podejrzanych skryptów: reklama może się nawet częściowo załadować, ale bez JS, bez dostępu do localStorage i bez możliwości przeskoczenia do innej ramki staje się znacznie mniej groźna.

Integracja z ochroną DNS i HTTPS

W środowisku domowym dobry efekt daje spięcie blokera przeglądarkowego z filtrowaniem DNS. Usługa typu DNS-over-HTTPS z listami „security/malware” (np. Quad9, Cloudflare Security, AdGuard DNS) odcina część domen wykorzystywanych w malvertisingu jeszcze przed nawiązaniem połączenia HTTP. Nawet jeśli reklama na stronie próbuje pobrać zasób z takiej domeny, zapytanie DNS po prostu nie zostanie przetłumaczone na adres IP.

Na stacjach roboczych dodatkową warstwą jest inspekcja HTTPS realizowana przez rozwiązania endpoint security (np. antywirus z modułem web shield). Pozwala to przechwytywać i skanować pliki pobierane z reklam oraz blokować strony phishingowe, które przeszłyby przez filtr adblocka. Kluczem jest tu sensowna konfiguracja: zbyt agresywne filtrowanie może powodować konflikty z adblockerem, zbyt łagodne – przepuści niechciane treści.

W środowiskach firmowych dochodzą jeszcze systemy typu secure web gateway, filtry na firewallu aplikacyjnym (WAF) oraz centralnie zarządzane polityki przeglądarek. Taki zestaw pozwala egzekwować minimalne standardy: wymuszać użycie określonych rozszerzeń, blokować całe kategorie domen reklamowych czy uniemożliwiać wykonywanie niepodpisanego JavaScriptu z zewnętrznych źródeł. Jeżeli adserwer lub strona lądują na liście wysokiego ryzyka, ruch do nich jest ucinany jeszcze na granicy sieci, zanim jakikolwiek kod trafi do przeglądarki.

Dobry efekt dają też profile przeglądania rozdzielone na „brudne” i „czyste” środowisko. Przykładowo: jedna przeglądarka (lub osobny profil) z maksymalnie wyśrubowanymi blokadami i dodatkowymi filtrami służy do odwiedzania nieznanych serwisów, druga – do pracy z krytycznymi systemami biznesowymi czy bankowością. Połączenie tego podejścia z filtrowaniem DNS i kontrolą HTTPS zmniejsza szansę, że pojedynczy błąd użytkownika wystawi wrażliwe dane na kontakt z zainfekowaną reklamą.

Ustawienia te da się wdrażać stopniowo. Najpierw włączenie ochrony DNS z listami „security/malware”, później dołożenie adblockera z dobrymi listami i delikatne podnoszenie poziomu agresywności filtrów, a na końcu – selektywne zaostrzanie polityk JavaScriptu i ciasteczek na wybranych stronach. Taki iteracyjny model jest bardziej realny na co dzień niż jednorazowe „przekręcenie wszystkiego na maksa”, które zwykle kończy się irytacją użytkowników i masowym wyłączaniem ochrony.

Gdy te warstwy złożą się w całość – od DNS, przez przeglądarkę i rozszerzenia, po nawyki użytkownika – malvertising przestaje być loterią, a staje się jednym z wielu kontrolowanych, mierzalnych ryzyk. Reklamy w sieci nie znikną, ale ich zdolność do infekowania urządzeń i wyciągania danych spada radykalnie, jeśli nie mają się gdzie załadować, z kim połączyć i jak wykonać ukryty kod.