Wykorzystanie filtra Adblock Plus do uruchomienia dowolnego odkrytego kodu

Większość programów blokujących zawartość domyślnie używa i ładuje listy filtrów, które zawierają instrukcje blokowania lub zmiany niektórych treści na odwiedzanych stronach w przeglądarce internetowej; Odbywa się to w celu zapewnienia, że ​​domyślne konfiguracje natychmiast blokują dużą część niechcianej zawartości.

Większość rozszerzeń obsługuje niestandardowe listy i poszczególne filtry. Użytkownicy mogą ładować listy niestandardowe w większości rozszerzeń i dodawać do nich własne filtry.

Aktualizacja : Eyeo GMHB ogłosiło dzisiaj, że w przyszłości usunie funkcję $ rewrite. Spodziewaj się wkrótce nowej wersji, która usunie ją z rozszerzenia. Koniec

Badacz bezpieczeństwa, Armin Sebastian, odkrył w niektórych adblockerach, takich jak Adblock Plus, exploit, którego można użyć do uruchomienia złośliwego kodu na stronach odwiedzanych w przeglądarce.

Exploit wykorzystuje opcję filtrowania o nazwie $ rewrite, którą obsługuje Adblock Plus, aby wstrzykiwać dowolny kod na stronach internetowych. Filtr $ rewrite służy do zastępowania kodu w witrynach poprzez przepisywanie go. Opcja filtru ogranicza działanie; jest przeznaczony do ładowania treści tylko ze źródeł własnych, a nie z witryn lub serwerów stron trzecich, a niektóre żądania, np. skrypt lub obiekt, również nie są dozwolone.

Sebastian odkrył lukę w $ rewrite, którą atakujący mogą wykorzystać do załadowania treści ze zdalnych lokalizacji. Warunki, które należy spełnić to:

  1. Ciąg JavaScript musi zostać załadowany przy użyciu XMLHttpRequest lub Fetch, a kod powrotu musi zostać wykonany.
  2. Początek nie może być ograniczony na stronie, np. Przy użyciu dyrektyw Polityki bezpieczeństwa treści, a końcowy adres URL żądania nie może zostać zweryfikowany przed wykonaniem.
  3. Kod źródłowy musi mieć otwarte przekierowanie po stronie serwera lub musi zawierać dowolną treść użytkownika.

Właściwości spełniające wszystkie trzy wymagania to między innymi Mapy Google, Gmail lub Grafika Google. Dowód koncepcji został opublikowany na stronie autora i możesz go wypróbować w Mapach Google, aby sprawdzić, czy działa.

Próbowałem exploita w Chrome i Firefox i nie mogłem go uruchomić. Jednak Lawrence Abramsowi na Bleeping Computer udało się go uruchomić.

Końcowe słowa

Atak ma jeszcze jeden wymóg, ponieważ opiera się na filtrach. Zmodyfikowany filtr należy dodać do listy filtrów używanych przez moduł blokujący zawartość. Dwie najczęstsze opcje obejmują ręczne dodawanie filtrów do programów blokujących zawartość lub to, że zmanipulowany filtr znajduje się na liście filtrów, która jest ładowana.

Druga opcja wydaje się bardziej prawdopodobna, szczególnie w przypadkach, gdy użytkownicy ładują inne listy w rozszerzeniach. Nie po raz pierwszy manipuluje się listami, ale nie zdarza się to często.

Problem nie dotyczy rozszerzenia uBlock Origin, ponieważ nie obsługuje $ rewrite.