Luka w Adblock Plus umożliwiająca wykonanie kodu przy użyciu podejrzanych filtrów

W blokadzie reklam Adblock Plus zidentyfikowane słaby punkt, pozwalać organizować wykonanie kodu JavaScript w kontekście witryn, w przypadku użycia niezweryfikowanych filtrów przygotowanych przez atakujących (na przykład podczas łączenia zestawów reguł stron trzecich lub poprzez podstawienie reguł podczas ataku MITM).

Autorzy list z zestawami filtrów mogą organizować wykonanie swojego kodu w kontekście stron otwieranych przez użytkownika, dodając reguły z operatorem „przepisać", co pozwala zastąpić część adresu URL. Operator przepisywania nie pozwala na zamianę hosta w adresie URL, ale pozwala na swobodne manipulowanie argumentami żądania. Jako maski zastępczej można używać wyłącznie tekstu. Dozwolone jest zastępowanie znaczników skryptu, obiektu i dokumentu podrzędnego zablokowany.

Jednak wykonanie kodu można osiągnąć w ramach obejścia.
Niektóre witryny, w tym Mapy Google, Gmail i Grafika Google, wykorzystują technikę dynamicznego ładowania wykonywalnych bloków JavaScript, przesyłanych w postaci czystego tekstu. Jeśli serwer pozwala na przekierowanie żądania, wówczas przekierowanie na inny host można osiągnąć poprzez zmianę parametrów adresu URL (na przykład w kontekście Google przekierowanie można wykonać poprzez API „google.com/search„). Oprócz hostów umożliwiających przekierowanie, atak można przeprowadzić także na usługi umożliwiające publikowanie treści użytkowników (hosting kodu, platformy do publikowania artykułów itp.).

Proponowana metoda ataku wpływa tylko na strony, które dynamicznie ładują ciągi kodu JavaScript (na przykład za pośrednictwem XMLHttpRequest lub Fetch), a następnie je wykonują. Kolejnym istotnym ograniczeniem jest konieczność zastosowania przekierowania lub umieszczenia dowolnych danych po stronie pierwotnego serwera wydającego zasób. Aby jednak wykazać istotność ataku, pokazano, jak zorganizować wykonanie kodu podczas otwierania mapy.google.com, korzystając z przekierowania poprzez „google.com/search”.

Poprawka jest wciąż w przygotowaniu. Problem dotyczy także blokerów AdBlock и uBlock. Problem nie dotyczy blokera uBlock Origin, ponieważ nie obsługuje operatora „przepisz”. Swego czasu autor uBlock Origin
odrzucony dodać obsługę przepisywania, powołując się na potencjalne problemy bezpieczeństwa i niewystarczające ograniczenia na poziomie hosta (zamiast przepisywania zaproponowano opcję querystrip w celu oczyszczenia parametrów zapytania zamiast ich zastępowania).

Twórcy Adblock Plus uważają, że prawdziwe ataki są mało prawdopodobne, ponieważ wszystkie zmiany w standardowych listach reguł są sprawdzane, a łączenie list stron trzecich jest wśród użytkowników niezwykle rzadkie. Zastępowanie reguł za pośrednictwem MITM jest uniemożliwione poprzez domyślne użycie protokołu HTTPS do pobierania standardowych list blokowania (w przypadku innych list planuje się zabronić pobierania za pośrednictwem protokołu HTTP w przyszłej wersji). Dyrektywy mogą służyć do blokowania ataku po stronie witryny CSP (Content Security Policy), dzięki której można jednoznacznie określić hosty, z których mogą być ładowane zasoby zewnętrzne.

Źródło: opennet.ru

Dodaj komentarz