Wystartowała Akademia NIS2/KSC2! Można jeszcze dołączyć do końca lipca!

Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!

Bezpłatne szkolenie: AI dla admina. Top 5 zadań, które zrobisz szybciej

11 mln instalacji, zdalna konfiguracja i szerokie uprawnienia – ryzykowna wtyczka Adblock for YouTube

07 lipca 2026, 16:33 | W biegu | 0 komentarzy

Badacze z Island zidentyfikowali wtyczkę do przeglądarki Chrome, która – jak się okazało – miała możliwość wstrzykiwania kodu JavaScript do dowolnej strony internetowej. Wystarczyłaby zmiana w odpowiedzi zwracanej przez serwer, bez modyfikacji kodu rozszerzenia. Mowa o Adblock for YouTube, czyli wtyczce zainstalowanej ponad 11 milionów razy i zbierającej dobre oceny (średnia: 4,4 gwiazdki). Rozszerzenie służy do blokowania reklam na YouTube.

TLDR:

  • Badacze z Island ustalili, że architektura rozszerzenia Adblock for YouTube umożliwia zdalne sterowanie mechanizmem wstrzykiwania JavaScript przez zmianę odpowiedzi serwera.
  • Nie wykryto aktywnego wykorzystywania tej funkcjonalności, jednak rozszerzenie ma ponad 11 mln instalacji i bardzo szerokie uprawnienia (<all_urls>).
  • Mechanizm opiera się na zdalnie “sterowanych” funkcjach, które w określonych warunkach mogą prowadzić do wykonania kodu w kontekście odwiedzanej strony.
  • Dodatkowe obawy budzi historia rozszerzenia, zmiana właściciela oraz powiązania z innymi rozszerzeniami usuniętymi z Chrome Web Store za malware.

Jak ustalili badacze, architektura wtyczki potencjalnie umożliwia wykonywanie wstrzykniętego kodu JavaScript na dowolnej stronie internetowej. W praktyce może to oznaczać odczytywanie treści stron, kradzież danych czy wykonywanie akcji “w imieniu” zalogowanego na danej stronie użytkownika.

Rys. 1 – wtyczka w Chrome Web Store, źródło: island.io

Choć nie zaobserwowano dostarczania przez serwer złośliwych instrukcji, które doprowadziłyby do takiego działania, sam mechanizm wzbudza obawy. Wtyczka pojawiła się bowiem w 11 milionach przeglądarek, a na koncie jej właściciela były już rozszerzenia usunięte z Chrome Web Store z powodu malware.

Narzędzia do blokowania reklam muszą zyskać zaufanie użytkownika, ponieważ do skutecznego działania muszą niejako kontrolować aktywność użytkownika. Zarówno w przypadku specjalnych serwerów DNS, jak i wtyczek do przeglądarki, bloker taki “widzi” wszystkie nawiązywane połączenia – mimo że blokuje tylko część z nich. Do skutecznego blokowania reklam często konieczne jest analizowanie żądań, modyfikacje w kodzie oglądanej strony i szybka reakcja na zmianę w mechanizmach stosowanych przez reklamodawców.

Powyższe sprawiają, że szerokie uprawnienia w przypadku takich narzędzi nie wzbudzają większych podejrzeń. Inaczej jest jednak z omawianą wtyczką.

Adblock for YouTube nie jest w końcu “ogólnym” blokerem reklam – z nazwy wynika, że mowa o blokowaniu reklam na YouTube. Plik manifestu wskazuje jednak coś innego:

“host_permissions”: [“<all_urls>”]

Listing 1 – fragment manifestu wtyczki, źródło: island.io

<all_urls> oznacza, że rozszerzenie może działać na każdej stronie odwiedzanej w przeglądarce: zarówno na YouTube, jak i w bankowości elektronicznej, aplikacjach webowych i innych narzędziach.

Teoretycznie kod wtyczki zawiera sprawdzenie, czy bieżący URL zawiera domenę YouTube:

var isAdBlockWorksOnPage = function(url) { return /youtube.com/.test(url);};

Listing 2 – niezbyt skuteczne sprawdzenie, źródło: island.io

Choć może to wyglądać jak ograniczenie, tak naprawdę kod ten nie sprawdza domeny, a jedynie szuka ciągu “youtube.com” w całym adresie URL.

Badacze wskazali przykładowe adresy, które przejdą pomyślnie taką “weryfikację”:

  • https://www[.]facebook[.]com/page?ref=youtube[.]com
  • https://bank[.]example[.]com/search?q=youtube[.]com
  • https://internal[.]corp[.]com/redirect?from=youtube[.]com

Dodatkowo, wtyczka co 24 godziny pobiera konfigurację ze zdalnego serwera:

fetch(“https://api[.]adblock-for-youtube[.]com/api/v2/rules?version=7.2.1”)

Listing 3 – pobieranie zdalnej konfiguracji, źródło: island.io

W odpowiedzi na żądanie otrzymuje standardowe reguły blokowania reklam – filtry sieciowe, selektory CSS – ale także pole o nazwie scripletsRules. Rozszerzenie korzysta z biblioteki gotowych funkcji JavaScript używanych do blokowania reklam, a serwer kontroluje, które z nich mają być wykonane i z jakimi argumentami.

Problem może pojawić się wtedy, gdy zdalny serwer może dostarczać wykonywalny kod. W tym przypadku rozszerzenie pobiera nie tylko statyczne reguły filtrów, ale również instrukcje, które mogą powodować wstrzykiwanie JavaScript do dowolnej strony.

function injectedFunction(script, scriptId) {
  if (window[scriptId])
    return;‍  var policy = window.trustedTypes.createPolicy(‘default’, {
    createScript: function (input) { return input; },
  });‍  
    var safeScriptContent = policy.createScript(script);
  window[scriptId] = true;
  ‍  var scriptTag = document.createElement(‘script’);
  scriptTag.setAttribute(‘type’, ‘text/javascript’);
  scriptTag.textContent = safeScriptContent;
  ‍  var parent = document.head || document.documentElement;
  parent.appendChild(scriptTag);
  parent.removeChild(scriptTag);}

‍function executeScriptOnPage(tabId, script) {
  injectionString = “(()=>{try {“.concat(
    script,
    “;} catch (e) {console.log(e)}})();”
  );‍ 
    
  return [4, chrome.scripting.executeScript({
    target: { tabId: tabId },
    func: injectedFunction,
    injectImmediately: true,
    world: ‘MAIN’,
    args: [injectionString, ‘aby-38oj8EJVO3Uu7t4G9PdfI’],
  })];
}

Listing 4 – obsługa scripletów, źródło: island.io

Jedną z gotowych funkcji jest trusted-create-element, który tworzy element HTML na stronie. Teraz wyobraźmy sobie, że serwer odpowiada następująco:

{
“name”: “trusted-create-element”,
“args”: [“body”, “script”, “”, “/* any JavaScript here */”]
}

Listing 5 – przykładowy złośliwy element, źródło: island.io

W tym scenariuszu utworzony element to tag script, a jego zawartość jest dostarczana bezpośrednio przez serwer. Po dodaniu do DOM wykonuje się w kontekście strony. Choć podczas analizy scriplet trusted-create-element nie pojawiał się w odpowiedzi serwera, ryzyko potencjalnego ataku istnieje. Przeprowadzenie go wymaga jedynie zmiany na serwerze, bez aktualizowania rozszerzenia. Może zrobić to właściciel wtyczki, ale równie dobrze także atakujący, który dostał się do jej infrastruktury.

Wtyczka Adblock for YouTube istnieje w Chrome Web Store od ponad dekady. Taki wiek buduje zaufanie: użytkownicy rozpoznają nazwę, liczba instalacji rośnie, a rozszerzenie wygląda na zaufane.

Rys. 2 – historia większych zmian dot. wtyczki, źródło: island.io

Adblock for YouTube wydaje się początkowo prostym blokerem reklam YouTube opublikowanym przez pojedynczego programistę w 2014 roku. Jednak w 2018 roku rozszerzenie zmieniło właściciela i zostało zaktualizowane. Po tej zmianie urosło z setek tysięcy użytkowników do ponad 10 milionów. Zmieniła się również infrastruktura backendowa.

Rozszerzenie było również powiązane z innymi wtyczkami blokującymi reklamy, które zostały usunięte z Chrome Web Store z powodu malware – Adblock for Chrome oraz Adblock for You. Historyczne strony (get[.]adblock-for-youtube[.]com i update[.]adblock-for-youtube[.]com) kierowały użytkowników Adblock for YouTube do tych rozszerzeń.

Rys. 3 – zrzut ekranu pokazujący stronę wtyczki kierującą do “Adblock for You”, źródło: island.io

Badacze nie zaobserwowali aktywnego wykorzystania opisanej możliwości wstrzykiwania kodu, natomiast samo jej istnienie przy szerokich uprawnieniach i powiązaniach wtyczki może wzbudzać obawy.

Wtyczki blokujące reklamy są bardzo przydatnymi narzędziami, a czasem potrafią zwiększyć nasze bezpieczeństwo (poprzez implementację blocklist domen dostarczających malware czy serwujących strony phishingowe). Jednak jeśli wtyczka ma działać tylko na YouTube, to nie powinna mieć dostępu do <all_urls>. Polecamy zwracać uwagę na uprawnienia udzielane instalowanym wtyczkom.

Pokazany przypadek potwierdza, że nawet pozornie wiarygodne wtyczki potrafią zmieniać właścicieli i swoje działanie w sposób niewidoczny na pierwszy rzut oka. Nie jest to też pierwsza taka wtyczka. Użytkownikom rekomendujemy więc ograniczanie liczby zainstalowanych rozszerzeń do minimum. Jeśli z któregoś nie korzystamy lub przestało działać – najlepiej je usunąć.

Źródło: island.io

~Tymoteusz Jóźwiak

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz