Использование фильтра Adblock Plus для запуска произвольного обнаруженного кода

Большинство блокировщиков контента используют и загружают списки фильтров, которые по умолчанию содержат инструкции по блокировке или изменению определенного контента на посещаемых сайтах в веб-браузере; это сделано для того, чтобы конфигурации по умолчанию сразу блокировали большую часть нежелательного контента.

Большинство расширений поддерживают пользовательские списки и отдельные фильтры. Пользователи могут загружать пользовательские списки в большинстве расширений и добавлять свои собственные фильтры в список.

Обновление : Eyeo GMHB объявила сегодня, что в будущем удалит функцию $ rewrite. Скоро ожидается новая версия, которая удалит if из расширения. Конец

Исследователь безопасности Армин Себастьян обнаружил эксплойт в некоторых блокировщиках рекламы, таких как Adblock Plus, который можно использовать для запуска вредоносного кода на сайтах, посещаемых в браузере.

Эксплойт использует параметр фильтра $ rewrite, который поддерживает Adblock Plus, для вставки произвольного кода в веб-страницы. Фильтр $ rewrite используется для замены кода на сайтах путем его перезаписи. Опция фильтра ограничивает операцию; он предназначен для загрузки контента только из сторонних источников, а не сторонних сайтов или серверов, и некоторые запросы, например сценарий или объект, также не разрешены.

Себастьян обнаружил уязвимость в $ rewrite, которую злоумышленники могут использовать для загрузки контента из удаленных мест. Условия, которые должны быть выполнены:

  1. Строка JavaScript должна быть загружена с использованием XMLHttpRequest или Fetch, а код возврата должен быть выполнен.
  2. Происхождение не может быть ограничено на странице, например, с помощью директив Content Security Policy, а URL-адрес окончательного запроса не может быть проверен перед выполнением.
  3. Источник кода должен иметь открытое перенаправление на стороне сервера или должен содержать произвольный пользовательский контент.

Свойства, которые соответствуют всем трем требованиям, включают Google Maps, Gmail или Google Images и другие. Подтверждение концепции было опубликовано на веб-сайте автора, и вы можете попробовать его в Картах Google, чтобы убедиться в его работоспособности.

Я попробовал эксплойт в Chrome и Firefox и не смог заставить его работать. Лоуренс Абрамс на Bleeping Computer все же смог заставить его работать.

Заключительные слова

Атака имеет еще одно требование, поскольку она опирается на фильтры. В список фильтров, используемых блокировщиком контента, необходимо добавить управляемый фильтр. К двум наиболее распространенным вариантам относятся пользователи, добавляющие фильтры вручную к своим блокировщикам содержимого, или что управляемый фильтр находится в списке фильтров, который загружается.

Второй вариант представляется более вероятным, особенно в тех случаях, когда пользователи загружают другие списки в расширениях. Это не первый случай, когда списками манипулируют, но это происходит не очень часто.

Расширение uBlock Origin не затронуто этой проблемой, так как оно не поддерживает $ rewrite.