Исследователи из Принстона обнаружили «теневой» инструмент идентификации пользователей в плагине AddThis



    На днях в Сети появилось сразу несколько публикаций, тема которых — скрытый способ идентификации пользователей посещаемыми сайтами. Этот способ (получивший название «canvas fingerprint») весьма сложно, если вообще возможно, заблокировать стандартными методами, типа блокированием куков либо установкой AddBlock или сходных плагинов.

    При этом такой способ идентификации уже обнаружен на 5% самых популярных сайтов мира, включая WhiteHouse.gov и YouPorn.com. Сам метод достаточно понятный: при заходе на какой-либо сайт, с установленным кодом отслеживания пользователя, такой ресурс запрашивает у браузера пользователя отрисовку скрытого изображения, причем рисуется текст, с использованием доступных системе шрифтов и рендерера. Набор шрифтов и методы сглаживания немного отличается на разных машинах. Рендерер зависит от версии браузера, ОС и даже GPU (спасибо Goodkat за дополнение). В итоге отрисованное изображение — уникально.

    Отрисованное изображение можно использовать в качестве «отпечатка пальца», с присвоенным устройству уникальным идентификатором. Ну, а дальше, как говорится, уже дело техники — отслеживать ПК с присвоенным идентификатором и действия владельца этого ПК в Сети несложно. При этом, как уже говорилось выше, стандартными методами заблокировать подобный способ идентификации практически невозможно.

    Исследователи выяснили, что код с идентификатором использовался на сайтах, которые сотрудничали с компанией AddThis. Как выяснилось, такой код установлен на 5% 100 тысяч топовых сайтов. Большинство «зараженных» сайтов использовали инструменты AddThis для социального взаимодействия, набор плагинов, где и был встроен участок с инструкцией для браузера по отрисовке изображения.

    Все это не является чем-то очень новым, о подобных методах идентификации пользователей заявляли еще 2012 году, исследователи из Калифорнийского Университета.

    В июне разработчики Tor Project даже добавили в свой браузер функцию уведомления пользователя о том, что какой-либо сайт пытается использовать описанный метод идентификации. На данный момент ни одна другая компания-разработчик браузеров не предложила аналогичного инструмента.

    Кстати, годом ранее российский разработчик Валентин Васильев выложил в Сеть свой код с подобным методом идентификации пользователя. По словам Васильева, точность идентификации с использованием отрисовки скрытого изображения — около 90%. По словам Васильева, «Рисование специального изображения это только первая часть. Главное — это перевод PNG в бинарную форму, а затем в base64. За это в современных браузерах почти всегда отвечает GPU. Вот разница в графических процессорах и реализации PNG декодирования и выдает разные base64 строки на выходе. Canvas fingerprinting только один из множества источников, который добавляет несколько байт к энтропии. Основная часть это плагины и возможности браузера. Совокупный отпечаток строится, используя все возможности».

    При этом мобильные устройства мало совместимы с таким методом.

    Представители AddThis, насколько можно судить, доработали проект Васильева, и решили опробовать собственный код, разместив его в своем социальном плагине. По словам представителей компании, все это использовалось не по злому умыслу, а в качестве изучения возможности заменить куки чем-то другим. А сайты, на которых размещался код AddThis, не уведомлялись о наличии участка с инструментом идентификации, чтобы результаты теста «в полевых условиях» были максимально реальными.

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

    Via propublica
    Support the author
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 63

      +3
      Непонятно, откуда возникает уникальность. Отрисовка же одного и того же изображения в одной версии браузера должна быть одинаковой.
        +4
        Тоже заинтересовался этим вопросом. Нашел вот такой документ (FingerPrinting canvas in HTML5):

        Если коротко, то:
        The natural way for browsers to implement such feature is to draw on the host operating system and hardware. Using the GPU for 3D graphics (and even for 2D graphics compositing) provides substantial performance improvements, as well as battery savings on mobile devices. And using the operating system's font-rendering code for text means that browsers automatically display text in a way that is optimized for the display and consistent with the user's expectations.


        cseweb.ucsd.edu/~hovav/dist/canvas.pdf
          0
          Если говорить о тексте, выведенном на canvas, то, возможно, играют роль разные шрифты на разных ОС и разные алгоритмы сглаживания.
            0
            +7
            «Поскольку любой ПК уникален (свой набор «железа», свойства аппаратного обеспечения, набор ПО и прочее), то и отрисованное изображение — уникально.» — большое желтое предложение, IMHO. Если сказано нарисовать точку в координатах 13,666 то она и должна там быть независимо от ПО и тем более железа.
              +16
              Они рисуют не точку, а текст используя доступные системе шрифты и рендерер. Набор шрифтов и методы сглаживания немного отличается на разных машинах. Рендерер зависит от версии браузера, ОС и даже GPU. Это объясняет, кстати, почему
              мобильные устройства мало совместимы с таким методом
              — на 70 миллионах айфонов одинаковые шрифты, браузер и GPU.
                0
                Ключевое слово версия бразуера!
                Сколько версий Mozilla или Chrome вы поставили за последний год?
                А может с дуру еще накатывали апдейты на систему или меняли драйвера?
                  0
                  Главное чтобы у соседа была другая комбинация параметров, чтобы вас можно было отличить друг от друга
              –4
              Надоела уже фраза про замену кук на что-то другое. Каким бы образом пользователь не идентифицировался — результат все равно пойдет либо в куки, либо в url. Но второй способ ужасен.
                +1
                а как же токены? JWT? Или я вас не понял?
                  +1
                  Вопрос даже не в токенах и куках. Пришел пользователь на сайт — мы попросили его картинку нарисовать. Получили картинку с хешем abc123. Пришел пользователь на другой сайт — мы опять его попросили картинку нарисовать. Хеш картинки получился такой же — abc123. Значит и пользователь — тот же.

                  Мне больше непонятно вот что. У меня MacBook Pro и у Васи MacBook Pro того же года выпуска, по идее у нас картинка в одном и том же браузере одним и тем же шрифтом одинаковая получится. Так что по ходу способ отрисовка и больше используется как дополнительный параметр при идентификации наряду с существующими (IP, юзерагент, разрешение экрана, установленные плагины, шрифты и т.д.).
                    0
                    Ну да, для одностраничных сайтов токены — действительно неплохая замена. Но как только у нас есть две разные страницы, так сразу же хочется перестать заниматься повторной идентификацией пользователя при каждом переходе по ссылке.
                      0
                      хм. у меня на сопровождении порядка 190 сайтов. И страниц там отнюдь не одна, а тысячи. И знаете в соседнем отделе такая же ситуация. И везде используют токены. Только у меня токен мелькает в урле только один раз. Потом пишется и в куки и локалсторедж и сессии и куда только можно. А у соседей в урле. Вот я порекомендовал руки им переломать. Потому как токены ихние в индекс поисковиков попали… А да и ещё у меня можно авторизоватся на одном сайте, а на остальных сайтах авторизация и так подтянется автоматом) Причём без токена в урле) И да сайты не поддомены одного домена) А и ещё токен для каждого сайта свой выдаётся) Вот вам пища для ума)
                        0
                        Потом пишется и в куки
                        Вот именно про это я и писал. Как ни крути, а в куки что-нибудь да запишешь.
                          –1
                          Ну браузер не отдаёт содержимое локал сторейджа. Я б в куки не писал тогда. Интересно кому не понравился мой коммент)
                  +2
                  www.browserleaks.com/canvas

                  This is a simple Proof-of-Concept that Browser Fingerprinting is possible without any of User-Agent identifiers.

                  The method is based on the fact that the same HTML5 Canvas element can produce exceptional pixels on a different web browsers, depending on the system on which it was executed.

                  This happens for several reasons: at the image format level — web browsers uses different image processing engines, export options, compression level, final images may got different hashes even if they are pixel-perfect; at the pixmap level — operating systems use different algorithms and settings for anti-aliasing and sub-pixel rendering. We don't know all the reasons, but we have already collected more than a thousand unique signatures.


                  Как я понял, речь идёт скорее об идентификации a-la user agent (версия бразуера + версия ОС), чем об идентификации непосредственно компьютера (или связки железо + бразуер + ОС).
                    +3
                    Там, кстати, есть статистика, которая хорошо иллюстрирует уникальность этих меток:

                    Total Visitors Processed 338737
                    Total Sets (User-Agents) 22136
                    Total Groups (Signatures) 1847


                    +1
                    Пришлось лезть в оригинал, чтобы понять, почему изображение уникально.The authors found that by using the Canvas API of modern browsers, one can exploit the subtle differences in the rendering of the same text to extract a consistent fingerprint that can easily be obtained in a fraction of a second without user's awareness.
                    То есть используются «локальные погрешности рисования».
                      +2
                      Сглаживание шрифтов? В Win7 этот процесс выдает 2*6*3*6 = 216 вариантов настроек. Уникальность повышает, но на глобальноуникальный идентификатор не тянет. К тому же, многие оставляют эти настройки по умолчанию.
                        +10
                        Пусть попробуют таким способом различить между собой, например, пользователей маков )
                        +26
                        Валентин Васильев, мой коллега, не имеет аккаунта с правами на комментарии, но хотел бы пояснить:
                        Статья неточно переведена, я не использовал сторонние наработки (ссылка ведет на мой же проект).
                        Что касается почему разные отпечатки получаются, рисование специального изображения это только первая часть. Главное — это перевод PNG в бинарную форму, а затем в base64. За это в современных браузерах почти всегда отвечает GPU. Вот разница в графических процессорах и реализации PNG декодирования и выдает разные base64 строки на выходе.
                        Canvas fingerprinting только один из множества источников, который добавляет несколько байт к энтропии. Основная часть это плагины и возможности браузера. Совокупный отпечаток строится, используя все возможности.
                          0
                          Дополнено, спасибо!
                            +1
                            Что то не понял, png — сжатие без потерь, base64 перекодировка без потерь. За счет чего уникальность?
                              +3
                              Ну тут все просто — шрифты уже давно, со времен GDI+ рисует видеоадаптер. А вот Cairo это не особо то и умеет. В общем все изгаляются сильно по разному.
                              И да — антиалиасинг может немного различаться в итоге.
                              С остальным облом — перевод в png это всегда CPU, а не GPU задача. Но да — хоть результат «в виде картинки» одинаков — файл можно собрать по разному. Иначе pngcrush не было бы.
                              Ну а base64 — всегда одинаков.
                              +4
                              Главное — это перевод PNG в бинарную форму, а затем в base64. За это в современных браузерах почти всегда отвечает GPU.
                              За что отвечает GPU? За кодирование в PNG и base64? По-моему это какой-то бред.
                              +1
                              Можно вопрос:
                              а если я взял и поменял что-то? шрифт, браузер и т.д.?
                              Получается в системе я буду уже новым пользователем?
                                +1
                                Как и раньше: очистил куки — новый пользователь.
                                  0
                                  Только вот «случайно очистить» в таком случае проще выходит.
                                    +1
                                    Так куки никто не отменяет. Эти извраты для любителей чистить куки.
                                –4
                                Насколько я понимаю, речь идёт о замерах скорости отрисовки (память, процессор) и замерах визуализации эффектов (блюр, сглаживание, прозрачность) — а они как раз зависят от видеокарты, разрешения, версии кодеков, в общем — достаточно много параметров набрать можно. Если изображение отрисовывается на всю область экрана, то в неё попадает таскбар и даже — обои на рабочем столе.

                                Так что отпечаток можно получить действительно достаточно точный. о чём и речь.
                                  +2
                                  Этот способ (получивший название «canvas fingerprint») весьма сложно, если вообще возможно, заблокировать стандартными методами, типа блокированием куков либо установкой AddBlock или сходных плагинов.

                                  Использование NoScript решает проблему. Ну, а в данном конкретном случае вообще достаточно добавить addthis.com в правила адблока.
                                  • UFO just landed and posted this here
                                      +1
                                      В июне разработчики Tor Project даже добавили в свой браузер функцию уведомления пользователя о том, что какой-либо сайт пытается использовать описанный метод идентификации.
                                      Функция блокировки получения яваскриптом содержимого canvas была предложена ещё в ноябре 2012 года. За июнь 2014 года никаких упоминаний о canvas в блоге Tor Project не нашел.

                                      О других способах фингерпринтинга, от которых защищает Tor Browser, можно прочитать здесь.
                                        +1
                                        Разные браузеры на одном и том же компьютере дают разные отпечатки?
                                          0
                                          Зависит от методов фингерпринтинга, в большинстве случае таже персона легко отслеживается простыми методами.
                                            0
                                            Да, разные. Обновление браузера тоже меняет отпечаток (версия браузера — часть отпечатка)
                                              0
                                              Если брать в расчет лишь описанный метод идентификации, то только если новая версия имеет отличия в отрисовке PNG в сравнении с предыдущей. Изменения в алгоритме сглаживания, например. Не думаю, что в этой области изменения появляются каждую версию.
                                                0
                                                Дык я на практике проверил библиотеку, о которой речь идёт. пруф.
                                                Онлайн свой уникальный fingerprint можете просмотреть здесь: valve.github.io/fingerprintjs/
                                                  0
                                                  Почитал, спасибо. Там действительно используется куда больше параметров, чем можно было предположить только на основе поста. Выходит, сменить отпечаток можно множеством способов.
                                            0
                                            Если под виртуалкой серфить, что смогут отследить таким образом?
                                              0
                                              Настройки этой самой виртуалки. Плюс, возможно, видеокарту.
                                                0
                                                Значит нужно создать 1 образ виртуалки ( удобный для браузинга ) и растиражировать его на всех желающих. И опппа — у нас один пользователь =)
                                                  +2
                                                  Ну и, самое главное, в этот образ встроить бекдор.
                                                  Куда уж без теории заговора.
                                                    +1
                                                    Только по-хорошему, нужно допиливать браузеры, чтоб в режиме инкогнито все настройки отдавались одинаково — «user-agent=mozilla», и все. Установленные шрифты, флэш, java, ОС, размер экрана — не отдавать, либо отдать какую-нибудь стандартную конфигурацию.
                                                      0
                                                      Ага, а как быть с поддержкой технологий?
                                                      Поддержка LocalStorage, других фич. Ворох поддерживаемых HTML5 возможностей тоже помогает идентифицировать браузер.
                                                      Разрешение экрана — либо одинаковое у всех и кто-то возится с малюсеньким браузером, либо никак.
                                                      А связка IP (Необязательно, но можно) + Браузер + Разрешение экрана может использоваться для идентификации, и используется в некоторых счётчиках.
                                                        +2
                                                        Я думаю, технологий 5-летней давности вполне достаточно для безопасного просмотра сайтов. Если какой-нибудь сайт строит дизайн на «moz-border-radius», ничего страшного, если дизайн окажется чуть искажённым. Раз в 5 лет обновлять сигнатуры у всех инкогнито-браузеров до актуального состояния технологий — хороший выход, я считаю.
                                                  +1
                                                  Ничего метод не отслеживает, насколько я понял из поста. Грубо говоря, на основе используемого программного и аппаратного обеспечения формируется неуникальный идентификатор.

                                                  Это просто замена Cookie. Только их «очищать» сложнее. Представьте себе всякую рекламу, например. Если вы искали пылесос, то сайты на основе Cookie помечают вас как человека, искавшего пылесос, и могут начать везде предлагать пылесосы. В данном случае, пока вы не очистите куки, это браузер говорит сайтам: «Смотрите, по ту сторону монитора сидит человек, который искал пылесос!».

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

                                                  На основе полученного ключа сервер может понять лишь следующее: «По ту сторону сидит человек, который искал пылесос. Или человек с очень похожей конфигурацией компьютера».

                                                  То есть, по сути, залог анонимности при таком раскладе — одинаковое железо и одинаковый софт у большого числа людей. Я ничего не буду говорить про Apple в этом посте.
                                                  –2
                                                  Да, но что скажет ValdikSS?..
                                                    +1
                                                    Воу-воу, вы так говорите, словно я эксперт какой.

                                                    Такое применялось, как минимум, в mail.ru несколько месяцев назад. Этим способом действительно можно построить уникальный отпечаток пользователя, но только в связке с другими способами. Из известных мне браузеров, которые блокируют возможность получения скриншота с canvas, только Tor browser, который упомянут в статье. Причем перевод сообщения на русский язык уморительный:
                                                    canvas.siteprompt=Этот веб-сайт (% S) пытался получить доступ к данным изображения на холсте. Поскольку данные холсте изображение может быть использовано для получения информации о вашем компьютере, пустые данные изображения были возвращены на этот раз.
                                                    –1
                                                    -del-
                                                      +1
                                                      Ну ура. Если какой-то умник с очень похожим железом (владельцы ноутов восторженно хлопают в ладоши) искал enlarge your bananas, то я посадив ребёнка за комп могу с высокой вероятностью получить соответствующую контекстную рекламу? Прелесть да и только. Я понимаю, что данный способ является дополнением к остальным, но если я отключу все куки, флеши и браузерные хранилища и это останется единственный способ для некоторых сайтов меня «идентифицировать», то с 10% вероятностью я получу «не свою» рекламу. И хорошо если она будет про пылесосы…
                                                        0
                                                        Не выключайте куки и вас надёжно идентифицируют.
                                                          +1
                                                          Тогда надо сразу показывать сомнительные баннеры тем, кто сидит с выключенными куками, безо всякой идентификации. Способ, описанный в статье, опять слишком сложный и лишний…
                                                            0
                                                            Да, но сначала выключается реклама, а потом куки (адблок популярнее, чем плагины приватности). Поэтому сомнительные банеры некому будет смотреть.
                                                              +1
                                                              Способ, описанный в статье, стал еще более лишним…
                                                      0
                                                      Напомню ссылку на тест «How unique is your browser» от EFF, где видно остальные методы сбора идентифицирующей информации браузера.

                                                      Две моих системы оказались абсолютно уникальными, и это даже при том, что в системе нет флеша.
                                                        +2
                                                        Ох, вот что меня с потрохами выдало — это список установленных шрифтов. Фансабберы часто включают шрифты в свои релизы, часто весьма экзотические, предназначенные только для определённого сериала.
                                                          0
                                                          Самое большое палево — список плагинов. Остальные параметры ничем не примечательны.
                                                          0
                                                          Точность метода должна быть не высока при большом количестве пользователей
                                                            +1
                                                            Ты не представляешь на сколько точна для обычных ПК.

                                                            Если хочешь быть параноиком, iPad тебе в руки. Эти устройства имеют идентичные отпечатки на один модельный ряд.
                                                            С Android устройствами не все так гладко.
                                                              +1
                                                              Стоит уточнить — нужно тестировать в Safari. Google Chrome гораздо легче идентифицируемый.
                                                            –1
                                                            Набор шрифтов и методы сглаживания немного отличается на разных машинах


                                                            Всё ясно, отдыхайте, пинкертоны! При тех многомиллионных инсталляциях идентичных машин, этот метод просто смехотворен. (спросите любого сисадмина, как закупается и сетапится техника в компании)

                                                            Only users with full accounts can post comments. Log in, please.