Исследователь в области кибербезопасности Армин Себастьян (Armin Sebastian) обнаружил уязвимость в AdBlock Plus и других популярных расширениях для блокировки рекламы (AdBlock, uBlock), благодаря которой злоумышленники могут запускать любой произвольный код на устройстве жертвы и, как следствие, заполучить все пользовательские данные.
Обнаруженная исследователем дыра в безопасности блокировщиков рекламы относится к добавлению стороннего чёрного списка сайтов: распространяющие фильтры злоумышленники могут настроить их таким образом, чтобы они запускал произвольный код при посещении определённых сайтов. Это возможно благодаря уязвимости параметра $rewrite, появившегося в AdBlock Plus в июле 2018 года. Он позволяет перезаписывать код веб-страниц при их посещении: например, чтобы перенаправлять пользователей с AMP-версий сайтов на обычные. По задумке, $rewrite позволяет загружать код только из посещаемых сайтов, а не из сторонних источников. Однако в этом параметре есть уязвимость, которая проявляется при стечении определённых обстоятельств: сайт должен загружать JavaScript через XMLHttpRequest или Fetch и выполнять возвращённый код; веб-страница не должна ограничивать источники, из которых она может извлекаться с использованием директив Content Security Policy, и других — подробно обо всех них Армин Себастьян рассказал в своём блоге.
По данным исследователя, многие популярные сервисы соответствуют вышеописанным параметрам, позволяющим использовать уязвимость в фильтре с применением $rewrite: «Google Карты», Gmail, «Google Картинки» и другие. Выполнение произвольного кода при посещении сайтов крайне трудно заметить, особенно если не знать о нём.
Сообщается, что на данный момент вышеописанная уязвимость присутствует во всех блокировщиках рекламы, поддерживающих параметр $rewrite: AdBlock Plus, AdBlock, uBlock и других. Напомним, в 2018 году Рэймонд Хилл (Raymond Hill), создатель расширения uBlock Origin (не путать с обычным uBlock), заявил, что не будет использовать $rewrite в своём блокировщике рекламы — он изначально считал данный параметр небезопасным.