В современном мире технологий антифрод-системы используют всё более сложные методы для выявления мошеннической активности. Одним из важных параметров для уникализации пользователей и анализа их устройств являются шрифты, установленные в системе. Рассмотрим, как шрифты могут быть использованы в антифроде, их роль в идентификации устройств, способы подмены и методы обнаружения подделок. ###### История и роль шрифтов в браузерах Шрифты, используемые устройствами, являются ключевой характеристикой, влияющей на отображение веб-страниц. Браузеры предоставляют информацию о доступных шрифтах через CSS и JavaScript API, что позволяет веб-сайтам адаптировать отображение контента под систему пользователя. В антифрод-системах шрифты используются для уникализации, так как набор установленных шрифтов может существенно отличаться в зависимости от устройства, операционной системы, версии и установленных приложений. ###### Методы получения данных о шрифтах 1. **CSS Font-Family Fallback** Используется стиль font-family, чтобы определить, отображается ли текст с использованием указанного шрифта. Если браузер не поддерживает шрифт, он использует шрифт по умолчанию. 2. **Canvas Fingerprinting** С помощью API CanvasRenderingContext2D можно отрисовать текст и измерить его размеры, чтобы определить наличие шрифта. Это популярный метод для создания "отпечатка" устройства. 3. **CSS Queries for Font Support** Используя [@font-face](# "@font-face") и свойства CSS, можно проверить доступность шрифта. 4. **JavaScript-based Font Enumeration** JavaScript позволяет проверить наличие шрифта путем измерения ширины и высоты текста с использованием разных шрифтов. ###### Как шрифты используются в антифроде 1. **Уникализация пользователей** Установленные шрифты могут различаться в зависимости от операционной системы, установленного ПО и пользовательских настроек. Это создаёт уникальный "отпечаток" устройства. 2. **Выявление подделок** Если мошенники используют антидетект-браузеры, набор доступных шрифтов может не соответствовать платформе, заявленной в User-Agent. 3. **Сравнение с другими параметрами** Например, антифрод-системы могут сверять набор доступных шрифтов с данными Canvas или WebGL, чтобы найти несоответствия. ###### Методы подмены шрифтов и их обнаружение 1. **Эмуляция или подмена набора шрифтов** Злоумышленники могут использовать программы для изменения списка доступных шрифтов. Однако такие подмены можно выявить, анализируя размеры отрисованного текста или поведение других API. 2. **Блокировка шрифтов** Некоторые браузеры или плагины могут скрывать список шрифтов, чтобы усложнить идентификацию. Но такие попытки тоже создают подозрительные паттерны. 3. **Выявление подмены** Антифрод-системы используют корреляцию между наборами шрифтов и другими характеристиками системы, например, платформой или архитектурой процессора. Рассмотрим на примерах, каким образом системы получают информацию о шрифтах. Откроем страницу browserleaks.com/fonts  В разделе Font Metrics: Fingerprint сайт показывает MD5-хэш метрик всех найденных шрифтов в нашем браузере. Сайт обнаружил 146 шрифтов из которых 112 содержат уникальные размеры. В разделе Report мы видим размеры, ширину и высоту проверяемой строки с символами «mmmMMMmmmlllmmmLLL₹▁₺₸ẞॿmmmiiimmmIIImmmwwwmmmWWW» для каждого из шрифтов. Сайт проверяет более 1400 известных шрифтов и ищет их в браузере пользователя. В разделе Unicode Glyphs: Fingerprints сайт показывает MD5-хэш, полученный на основе результатов рендеринга специальных символов Unicode. Ниже представлена подробная информация о размерах каждого из проверяемых символов для разных семейств шрифтов. Рассмотрим пример получения шрифтов на нашей тестовой странице test-webapi.tech/glyph откроем страницу в браузере Chrome и дождёмся результатов теста:  Эта страница отрисовывает большое количество знаков и символов для каждого из шрифтов и формирует MD5-хэш для каждого из обнаруженных шрифтов, после этого формируется общий MD5-хэш (Overall MD5) из хэш всех шрифтов и количества найденных в браузере пользователя шрифтов. Так же на странице для примера представлен тестовый вариант определения системы пользователя и браузера, который заключается в оценке значений MD5-хэш некоторых шрифтов. В нашем примере сайт обнаружил уже не 146, а 227 шрифтов, определил, что мы используем ОС Windows и браузер с движком Chromium. Повторим тест в нашем антидетект-браузере без подмены шрифтов:  В результате мы получили отличный от настоящего браузера MD5-хэш, меньшее количество шрифтов, сайт определил нашу систему как Windows Server и браузер с движком Chromium. Попробуем подменить набор шрифтов в антидетект-браузере и повторим тест:  В этом тесте антидетект-браузер подменил набор шрифтов, количество шрифтов соответствует оригинальному браузеру Chrome, но Overall MD5-хэш отличается от оригинального браузера, это означает, что размеры сиволов для некоторых шрифтов отличаются. Таким образом можно достаточно точно идентифицировать пользователей по набору шрифтов и их метрикам. Попробуем открыть нашу страницу в браузере Firefox:  Наша тестовая страница по начертанию шрифтов определила, что мы используем браузер Firefox. Заметим, что размеры символов шрифта Arial в браузере Firefox отличаются от размеров символов этого же шрифта в браузере Chrome. Повторим тест на мобильных устройствах:  Обратим внимание, что мобильный браузер Chrome для большинства шрифтов возвращает одинаковые значения. Так же отметим, что на одинаковых устройствах и в браузерах одинаковой версии отрисовка шрифтов отличается, что позволяет достаточно точно уникализировать посетителей, особенно используя дополнительные данные, о которых мы говорили в наших предыдущих статьях. Попробуем проверить антидетект-браузер, используя профиль мобильного устройства:  В результате этого теста мы видим, что антидетект-браузер добавляет шрифты, соответствующие шрифтам мобильного устройства, но при этом значения метрик некоторых шрифтов совпадают с десктоп-версией браузера. Сайт определил, что мы используем Windows Server, что никак не соответствует мобильному устройству Android. Так же Антифрод-системы могут получать информацию о системных шрифтах в браузере. Рассмотрим на примерах браузеров Chrome, Firefox на десктоп и мобильных устройствах: **Десктоп Chrome**  **Десктоп Firefox**  **Android Chrome**  **Android Firefox**  В результате этого теста мы видим, что семейства системных шрифтов браузера и их размеры отличаются друг от друга на разных устройствах в разных браузерах. Таким образом сайты могут определять тип устройства и используемый движок браузера. ###### Вывод Шрифты в браузерах — это мощный инструмент для антифрод-систем. Они используются для создания уникальных "отпечатков" устройств и выявления мошеннических действий. Их анализ в сочетании с другими параметрами, такими как Canvas и WebGL, делает алгоритмы антифрод-систем более надёжными. *Bannykh M.V.*