Вразливість Adblock Plus, що дозволяє виконати код при використанні сумнівних фільтрів

У блокувальнику реклами Adblock Plus виявлено вразливість, що дозволяє організувати виконання JavaScript-коду в контексті сайтів, у разі використання неперевірених фільтрів, підготовлених зловмисниками (наприклад, при підключенні сторонніх наборів правил або через заміну правил під час MITM-атаки).

Автори списків з наборами фільтрів можуть організувати виконання свого коду в контексті сайтів, що відкриваються користувачем через додавання правил з оператором «переписувати«, що дозволяє замінити частину URL. Оператор rewrite не дозволяє замінити хост на URL, але дає можливість вільно маніпулювати з аргументами запиту. Як маска для заміни допускається застосування тільки тексту, а підстановка тегів script, object і subdocument блокується.

Проте виконання коду можна домогтися обхідним шляхом.
Деякі сайти, у тому числі Google Maps, Gmail та Google Images, застосовують техніку динамічного завантаження JavaScript-блоків, що виконуються у формі голого тексту. Якщо сервер допускає перенаправлення запитів, то прокидання на інший хост можна досягти підмінивши параметри URL (наприклад, в контексті Google редирект може бути зроблений через API «google.com/search«). Крім хостів, що допускають редирект, атака також може бути здійснена проти сервісів, що допускають розміщення контенту користувачів (хостинги коду, платформи розміщення статей тощо).

Запропонований метод атаки зачіпає лише сторінки, що динамічно завантажують рядки з кодом JavaScript (наприклад, через XMLHttpRequest або Fetch) і потім виконують їх. Іншим важливим обмеженням є необхідність використання редиректу чи розміщення довільних даних за вихідного сервера, що віддає ресурс. Тим не менш, як демонстрація актуальності атаки показано як організувати виконання свого коду при відкритті maps.google.com, використовуючи редирект через google.com/search.

Виправлення поки що знаходиться в процесі підготовки. Проблема також зачіпає блокувальники AdBlock и uBlock. Блокувальник uBlock Origin проблемі не схильний, тому що не підтримує оператор "rewrite". Свого часу автор uBlock Origin
відмовився додавати підтримку rewrite, пославшись на потенційні проблеми з безпекою та недостатність обмеження на рівні хоста (замість rewrite була запропонована опція querystrip для очищення параметрів запиту замість їх заміни).

Розробники Adblock Plus вважають проведення реальних атак малоймовірним, оскільки всі зміни у штатних списках правил проходять рецензування, а підключення сторонніх списків практикується користувачами дуже рідко. Підміну правил через MITM виключає застосування за умовчанням HTTPS для завантаження штатних списків блокування (для інших списків планується заборонити завантаження HTTP у майбутньому випуску). Для блокування атаки на стороні сайтів можуть застосовуватись директиви CSP (Content Security Policy), якими можна явно визначити хости, з яких допускається завантаження зовнішніх ресурсів.

Джерело: opennet.ru

Додати коментар або відгук