Польский специалист по безопасности Кржиштоф Янович всерьёз взялся за взлом расширений Google Chrome. Неделю назад он разобрался с фингерпринтингом пользователей, то есть получением списка установленных расширений для каждого конкретного пользователя (этот метод может использоваться для идентификации пользователей и слежки за ними, как альтернатива cookies, а также для идентификации отдельных расширений). Сейчас Кржиштоф сумел взломать самое популярное расширение для Google Chrome — блокировщик рекламы AdBlock. Он говорит, что это отличное расширение, у которого более миллиона пользователей и он сам его использует, но в браузере Chrome формат расширений организован таким образом, что AdBlock относительно просто обойти.

На иллюстрации показано, как AdBlock удаляет со страниц сайтов рекламу
На иллюстрации показано, как AdBlock удаляет с сайтов рекламу, пряча её в CSS

Итак, ранее описанным методом фингерпринтинга любой сайт может легко идентифицировать пользователя с браузером Chrome и установленным расширением AdBlock.

Из-за того, что у каждого расширения Chrome существует уникальный URI, к которому можно обратиться с любого сайта. Например, у AdBlock уникальный идентификатор gighmmpiobklfepjocnamgkkbiglidom. Так, подписка на расширение осуществляется через URI вида chrome-extension://gighmmpiobklfepjocnamgkkbiglidom/pages/subscribe.html:

// pages/subscribe.js
//Get the URL
var queryparts = parseUri.parseSearch(document.location.search);
...
//Subscribe to a list
var requiresList = queryparts.requiresLocation ?
"url:" + queryparts.requiresLocation : undefined;
BGcall("subscribe",
{id: 'url:' + queryparts.location, requires:requiresList});

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

Поскольку обратиться к расширению напрямую может любой сайт, то он может просто-напросто обратиться к расширению с указанием занести свой URL в «белый список» AdBlock:

<iframe style="position:absolute;left:-1000px;" id="abp" src="https://xakep.ru/wp-content/uploads/post/58488/"></iframe>
//...
document.getElementById('abp').src = 'chrome-extension://'+addon_id + '/pages/subscribe.html?location=' + location.href.replace('disable.html', 'list.txt');

Демо: распознавание и отключение AdBlock

Блог Яновича



Оставить мнение