Публикуван е инструментариум с реализация на метода за определяне на добавки, инсталирани в браузъра Chrome. Полученият списък с добавки може да се използва за увеличаване на точността на пасивната идентификация на конкретен екземпляр на браузъра, в комбинация с други индиректни признаци, като разрешение на екрана, характеристики на WebGL, списъци с инсталирани плъгини и шрифтове. Предложената реализация проверява инсталирането на повече от 1000 добавки. За проверка на своята система е предложена онлайн демонстрация.
Определянето на добавките става чрез анализ на предоставяните от добавките ресурси, достъпни за външни заявки. Обикновено добавките включват различни свързани файлове, като изображения, които се определят в манифеста на добавката чрез свойството web_accessible_resources. В първата версия на манифеста на Chrome достъпът до ресурсите не беше ограничен и всеки сайт можеше да зареди предоставените ресурси. Във втората версия на манифеста достъпът до подобни ресурси по подразбиране беше разрешен само за самата добавка. В третата версия на манифеста беше предоставена възможност да се определи кои ресурси могат да се предоставят на кои добавки, домейни и страници.
Уеб страниците могат да запитват предоставените в добавката ресурси с помощта на метода fetch (например „fetch('chrome-extension://okb….nd5/test.png')“), при което връщането на стойност „false“ обикновено свидетелства за това, че добавката не е инсталирана. За блокиране на определянето на добавката по наличието на ресурси, някои добавки генерират проверъчен токен, необходим за достъп до ресурса. Въвеждането на fetch без указание на токена винаги завършва с провал.
Както се оказа, защитата на достъпа до ресурсите на добавките може да бъде заобиколена, оценявайки времето за изпълнение на операцията. Въпреки че fetch при заявка без токен винаги връща грешка, времето за изпълнение на операцията при наличие и отсъствие на добавка е различно — ако добавката присъства, заявката ще изисква повече време, отколкото ако добавката не е инсталирана. Оценявайки времето за реакция, може доста точно да се определи наличието на добавката.
Някои добавки, които не включват достъпни извън ресурси, могат да бъдат определени по допълнителни свойства. Например, добавката MetaMask може да се определи чрез оценка на свойството window.ethereum (ако добавката не е инсталирана, «typeof window.ethereum» ще върне стойност «undefined»).
Източник: opennet.ru
