Большинство блокировщиков контента используют и загружают списки фильтров, которые по умолчанию содержат инструкции по блокировке или изменению определенного контента на посещаемых сайтах в веб-браузере; это сделано для того, чтобы конфигурации по умолчанию сразу блокировали большую часть нежелательного контента.
Большинство расширений поддерживают пользовательские списки и отдельные фильтры. Пользователи могут загружать пользовательские списки в большинстве расширений и добавлять свои собственные фильтры в список.
Обновление : Eyeo GMHB объявила сегодня, что в будущем удалит функцию $ rewrite. Скоро ожидается новая версия, которая удалит if из расширения. Конец
Исследователь безопасности Армин Себастьян обнаружил эксплойт в некоторых блокировщиках рекламы, таких как Adblock Plus, который можно использовать для запуска вредоносного кода на сайтах, посещаемых в браузере.
Эксплойт использует параметр фильтра $ rewrite, который поддерживает Adblock Plus, для вставки произвольного кода в веб-страницы. Фильтр $ rewrite используется для замены кода на сайтах путем его перезаписи. Опция фильтра ограничивает операцию; он предназначен для загрузки контента только из сторонних источников, а не сторонних сайтов или серверов, и некоторые запросы, например сценарий или объект, также не разрешены.
Себастьян обнаружил уязвимость в $ rewrite, которую злоумышленники могут использовать для загрузки контента из удаленных мест. Условия, которые должны быть выполнены:
- Строка JavaScript должна быть загружена с использованием XMLHttpRequest или Fetch, а код возврата должен быть выполнен.
- Происхождение не может быть ограничено на странице, например, с помощью директив Content Security Policy, а URL-адрес окончательного запроса не может быть проверен перед выполнением.
- Источник кода должен иметь открытое перенаправление на стороне сервера или должен содержать произвольный пользовательский контент.
Свойства, которые соответствуют всем трем требованиям, включают Google Maps, Gmail или Google Images и другие. Подтверждение концепции было опубликовано на веб-сайте автора, и вы можете попробовать его в Картах Google, чтобы убедиться в его работоспособности.
Я попробовал эксплойт в Chrome и Firefox и не смог заставить его работать. Лоуренс Абрамс на Bleeping Computer все же смог заставить его работать.
Заключительные слова
Атака имеет еще одно требование, поскольку она опирается на фильтры. В список фильтров, используемых блокировщиком контента, необходимо добавить управляемый фильтр. К двум наиболее распространенным вариантам относятся пользователи, добавляющие фильтры вручную к своим блокировщикам содержимого, или что управляемый фильтр находится в списке фильтров, который загружается.
Второй вариант представляется более вероятным, особенно в тех случаях, когда пользователи загружают другие списки в расширениях. Это не первый случай, когда списками манипулируют, но это происходит не очень часто.
Расширение uBlock Origin не затронуто этой проблемой, так как оно не поддерживает $ rewrite.